public static Function<Integer, Integer> composeFunctions(Function<Integer, Integer> f1, Function<Integer, Integer> f2) {
    return f1.andThen(f2);
  }
@Test
  public void testComposeInverseFunctions() {
    Function<Integer, Integer> timesTwo = x -> x * 2;
    Function<Integer, Integer> half = x -> x / 2;

    Function<Integer, Integer> composed = FunctionComposer.composeFunctions(timesTwo, half);

    assertEquals("Expect the functions to cancel each other out", 5, (int) composed.apply(5));
  }