Ugly, but works.  MOST of the complication is tucked away in NFASimulation, but it's extremely ugly/cumbersome and in dire need of refactoring/enhanced tests/javadoc.