Can you maybe note above in the javadoc for startNonTerminals why we decided to implement it this way? You said it was so that Grammar didn't need to track all the NonTerminals itself, and I want that to be explained somewhere, because it was key to my understanding.