@@ -0,0 +1,914 @@
+/** Imports a type of lambdas taking two arguments of the same type T and returning one argument of same type T */%0Aimport java.util.function.BinaryOperator;%0A%0A/** Implements and assigns to variables the lambdas to be used later in configuring Context.%0A*   FunctionalUtils is just a convenience class, as the code of a lambda%0A*   might be passed directly to Context constructor, as for ResultD below, in main().%0A*/%0Aclass FunctionalUtils %7B%0A%09static final BinaryOperator%3CInteger%3E add = (final Integer a, final Integer b) -%3E %7B%0A%09%09System.out.println(%22Called add's apply().%22);%0A%09%09return a + b;%0A%09%7D;%0A%0A%09static final BinaryOperator%3CInteger%3E subtract = (final Integer a, final Integer b) -%3E %7B%0A%09%09System.out.println(%22Called subtract's apply().%22);%0A%09%09return a - b;%0A%09%7D;%0A%0A%09static final BinaryOperator%3CInteger%3E multiply = (final Integer a, final Integer b) -%3E %7B%0A%09%09System.out.println(%22Called multiply's apply().%22);%0A%09%09return a * b;%0A%09%7D;%0A%7D%0A

Create strategy.java