@Override public A revertNonNull(C c) { return first.revertNonNull(second.revertNonNull(c)); }
@Override public B convertNonNull(A a) { return original.revertNonNull(a); }
@Override public void set(R value) { delegate.set(converter.revertNonNull(value)); }
@Override public void set(R value) { delegate.set(converter.revertNonNull(value)); }
@Override public R modify(Function<? super R, ? extends R> mutator) { Objects.requireNonNull(mutator); Box.Nullable<R> result = Box.Nullable.of(null); delegate.modify(input -> { R unmappedResult = mutator.apply(converter.convertNonNull(input)); result.set(unmappedResult); return converter.revertNonNull(unmappedResult); }); return result.get(); }
/** Shortcut for doing a set() on the result of a get(). */ @Override public R modify(Function<? super R, ? extends R> mutator) { Box.Nullable<R> result = Box.Nullable.of(null); delegate.modify(input -> { R unmappedResult = mutator.apply(converter.convertNonNull(input)); result.set(unmappedResult); return converter.revertNonNull(unmappedResult); }); return result.get(); }