code: public static MutableFst importFst(File fileToFst, Semiring semiring) {
      Preconditions.checkArgument(fileToFst.exists(), "File to the fst.txt openfst output doesnt exist", fileToFst);
      Preconditions.checkArgument(fileToFst.getName().endsWith(FST_TXT), "fst.txt path must end in .fst.txt", fileToFst);
      String basepath = fileToFst.getAbsolutePath();
      basepath = StringUtils.removeEnd(basepath, FST_TXT);
      CharSource cs = Files.asCharSource(fileToFst, Charsets.UTF_8);
  
      Optional<MutableSymbolTable> maybeInputs = importSymbols(new File(basepath + INPUT_SYMS));
      Optional<MutableSymbolTable> maybeOutputs = importSymbols(new File(basepath + OUTPUT_SYMS));
      Optional<MutableSymbolTable> maybeStates = importSymbols(new File(basepath + STATES_SYMS));
  
      return convertFrom(cs, maybeInputs, maybeOutputs, maybeStates, semiring);
    }
docs: Imports an openfst text format. You pass in the file pointing to the fst.txt file and
  it assumes that the other files has the same prefix, but with input.syms and output.syms
  as suffixes.  For exmaple if you pass in:
  path/to/mymodel.fst.txt
  It assumes that you also have:
  path/to/mymodel.input.syms
  path/to/mymodel.output.syms
  
  @param fileToFst the files' base name
  @param semiring  the fst's semiring