docs: public static ExtractionFn cascade(final ExtractionFn f, final ExtractionFn g)
    {
      if (f == null) {
        // Treat null like identity.
        return g;
      } else if (g == null) {
        return f;
      } else {
        final List<ExtractionFn> extractionFns = new ArrayList<>();
  
        // Apply g, then f, unwrapping if they are already cascades.
  
        if (f instanceof CascadeExtractionFn) {
          extractionFns.addAll(Arrays.asList(((CascadeExtractionFn) f).getExtractionFns()));
        } else {
          extractionFns.add(f);
        }
  
        if (g instanceof CascadeExtractionFn) {
          extractionFns.addAll(Arrays.asList(((CascadeExtractionFn) g).getExtractionFns()));
        } else {
          extractionFns.add(g);
        }
  
        return new CascadeExtractionFn(extractionFns.toArray(new ExtractionFn[0]));
      }
    }