@Test
public void testCompose4() {

  final String ret = randomUUID().toString();
  Function4<String, String, String, String, String> f =
      new Function4<String, String, String, String, String>() {
        @Override
        public String apply(final String t1, final String t2, final String t3, final String t4) {
          return ret;
        }
      };
  Function1<String, Integer> s = new Function1<String, Integer>() {
    @Override
    public Integer apply(final String t) {
      return t.length();
    }
  };
  Function4<String, String, String, String, Integer> composed = Functions.compose(f, s);
  final Integer expected = ret.length();
  assertEquals(expected, composed.apply(randomUUID().toString(), randomUUID().toString(),
      randomUUID().toString(), randomUUID().toString()));
}