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

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