See comment at line 167 of Grammar.scala. There is confusion in the code about when something should fail (hasNoUnparser) vs. providing a dummy unparser, just to allow tests to pass, vs. providing a recognizable unparser that can be optimized out if found in a model group, etc.