### Question:
With { public A get() { return value; } private  With(A value); A get(); void end(Consumer1<? super A> consumer); With<R> then(Function1<? super A, ? extends R> function); With<R> then(Function2<? super A, ? super B, ? extends R> function, B b); With<R> then(Function3<? super A, ? super B, ? super C, ? extends R> function, B b, C c); With<R> then(Function4<? super A, ? super B, ? super C, ? super D, ? extends R> function, B b, C c, D d); With<R> then(Function5<? super A, ? super B, ? super C, ? super D, ? super E, ? extends R> function, B b, C c, D d, E e); @Override int hashCode(); @Override boolean equals(Object obj); static With<T> with(T value);  }### Answer:
@Test public void get() { String value = with("some string") .then(String::toUpperCase) .then(String::concat, "other string") .get(); assertEquals("SOME STRINGother string", value); }