code: public <B, C> DecomposableMatchBuilder2<T, B, C> decomposeFirst(
        DecomposableMatchBuilder2<A, B, C> first) {
      Objects.requireNonNull(first);
  
      Map<Integer, DecomposableMatchBuilder> buildersByIndex = Maps.treeMapOf(extractedIndex, first);
  
      List<Matcher<Object>> matchers = getChildMatchers(buildersByIndex);
  
      Tuple2<Integer, Integer> newIndexes = Tuple2.of(
          extractedIndex + first.extractedIndexes.first(),
          extractedIndex + first.extractedIndexes.second());
  
      NestedFieldExtractor<T> nestedFieldExtractor = getNestedFieldExtractor(buildersByIndex);
  
      return new DecomposableMatchBuilder2<>(matchers, newIndexes, nestedFieldExtractor);
    }
docs: Returns a new {@link DecomposableMatchBuilder2} that further decomposes the first element of
  this match builder.
  
  <p>The first element is decomposed to 2 elements.