public override FST GetFST() { FST result = new FST(); int start = result.AddState(); result.SetInitial(start); if (_Input.IsEpsilon && _Output.IsEpsilon) { // this results in an automaton without any transitions, which accepts the empty langauge result.SetFinal(start, true); } else { int end = result.AddState(); result.SetFinal(end, true); result.AddTransition(start, end, _Input, _Output); } return(result); }