src/main/java/isomorphic/Isomorphism.java
default OfLong compose(OfLong before) {
            requireNonNull(before);
            return OfLong.of(
                    x -> applyAsLong(before.applyAsLong(x)),
                    y -> before.applyAsLong(applyAsLong(y))
            );
        }
/**
         * Returns a composed function that first applies the {@code before}
         * function to its input, and then applies this function to the result.
         *
         * @throws NullPointerException if {@code before} is null
         */
Returns a composed function that first applies the  before
function to its input, and then applies this function to the result.

@throws NullPointerException if  before is null
Returns a composed function that first applies the before function to its input and then applies this function to the result . @throws NullPointerException if before is null
default OfLong compose(OfLong before) {
            requireNonNull(before);
            return OfLong.of(
                    x -> applyAsLong(before.applyAsLong(x)),
                    y -> before.applyAsLong(applyAsLong(y))
            );
        }
default OfLong compose ( OfLong before ) { requireNonNull ( before ) ; return OfLong . of ( x -> applyAsLong ( before . applyAsLong ( x ) ) , y -> before . applyAsLong ( applyAsLong ( y ) ) ) ; }
Returns a composed function that first applies the {@code before}
 function to its input, and then applies this function to the result.
Returns a composed function that first applies the { @code before } function to its input and then applies this function to the result .