code: public static <T, ET extends T, B1> DecomposableMatchBuilder1<List<T>, B1> headTail(
        DecomposableMatchBuilder0<ET> head, DecomposableMatchBuilder1<List<T>, B1> tail) {
      List<Matcher<Object>> matchers = Lists.of(ArgumentMatchers.any(), ArgumentMatchers.any());
      return new DecomposableMatchBuilder2<List<T>, ET, List<T>>(
          matchers, Tuple2.of(0, 1), new ListConsHeadTailFieldExtractor<>())
          .decomposeFirstAndSecond(head, tail);
    }
docs: Matches a list with a head element and a tail of remaining elements.
  
  <p>If matched, the {@code head} value is decomposed to 0 and the {@code tail} value is decomposed to
  1.