@Override public int hashCode() { return 31 * first.hashCode() + second.hashCode(); }
@Override @Nullable A correctedDoBackward(@Nullable C c) { return first.correctedDoBackward(second.correctedDoBackward(c)); }
@Override @Nullable C correctedDoForward(@Nullable A a) { return second.correctedDoForward(first.correctedDoForward(a)); }
@Override public int hashCode() { return ~original.hashCode(); }
@Override @Nullable B correctedDoBackward(@Nullable A a) { return original.correctedDoForward(a); }
@Override @Nullable A correctedDoForward(@Nullable B b) { return original.correctedDoBackward(b); }