question: public FST < T > finish ( ) throws IOException { final UnCompiledNode < T > root = frontier [ 0 ] ; freezeTail ( 0 ) ; if ( root . inputCount < minSuffixCount1 || root . inputCount < minSuffixCount2 || root . numArcs == 0 ) { if ( fst . emptyOutput == null ) { return null ; } else if ( minSuffixCount1 > 0 || minSuffixCount2 > 0 ) { return null ; } } else { if ( minSuffixCount2 != 0 ) { compileAllTargets ( root , lastInput . length ( ) ) ; } } fst . finish ( compileNode ( root , lastInput . length ( ) ) . node ) ; if ( doPackFST ) { return fst . pack ( this , 3 , Math . max ( 10 , ( int ) ( getNodeCount ( ) / 4 ) ) , acceptableOverheadRatio ) ; } else { return fst ; } }
target:  Returns final FST.  NOTE: this will return null if nothing is accepted by the FST. 