Refactor the GrammarChecker implementation to allow reanalyzing. #2