I believe there is a problem in linguist.util.LinguistDumper.dumpSearchGraph() when trying to dump a graph containing linguist.flat.ExtendedUnitState. The code assumes that the graph node signature is globally unique, but the signature produced by ExtendedUnitState is only GState-unique.
This can be demonstrated by this simple grammar:
public <greet> = ( Phil | Phillis | Philip );
The result can be seen in before.svg in the attached file.
One solution could be to use a different ExtendedUnitState.getFullName() in order to produce unique signature, without sacrificing the caching (see ExtendedUnitState.java.patch in the attachment). The price in my solution is the introduction of a dependency on edu.cmu.sphinx.linguist.dictionary.Pronunciation.
In the file attached is also a demo and a patch to demo.xml to build this demo.