code: public static PrecomputedComposeFst precomputeInner(Fst fst2, Semiring semiring) {
      fst2.throwIfInvalid();
      MutableFst mutableFst = MutableFst.copyFrom(fst2);
      WriteableSymbolTable table = mutableFst.getInputSymbols();
      int e1index = getOrAddEps(table, true);
      int e2index = getOrAddEps(table, false);
      String eps1 = table.invert().keyForId(e1index);
      String eps2 = table.invert().keyForId(e2index);
      augment(AugmentLabels.INPUT, mutableFst, semiring, eps1, eps2);
      ArcSort.sortByInput(mutableFst);
  
      MutableFst filter = makeFilter(table, semiring, eps1, eps2);
      ArcSort.sortByInput(filter);
  
      return new PrecomputedComposeFst(eps1, eps2, new ImmutableFst(mutableFst), semiring, new ImmutableFst(filter));
    }
docs: Pre-processes a FST that is going to be used on the right hand side of a compose operator many times
  @param fst2 the fst that will appear on the right hand side
  @param semiring the semiring that will be used for the compose operation
  @return a pre-processed form of the inner fst that can be passed to `composeWithPrecomputed`