/** Un par inmutable de dos valores, cada uno con su propio tipo. */
public record Pair<A, B>(A first, B second) {

    /** Devuelve un par nuevo con los componentes intercambiados. */
    public Pair<B, A> swap() {
        return new Pair<>(second, first);
    }
}
