docs: private void normalizeParents(ParseTreeNode tree) throws ParserException {
  	try {
  	    final Field parentField = ParseTreeNode.class.getDeclaredField("parent");
  	    parentField.setAccessible(true);
  	    TreeVisitor<ParseTreeNode> visitor = new TreeVisitor<ParseTreeNode>() {
  
  		@Override
  		public WalkingAction visit(ParseTreeNode tree) {
  		    try {
  			for (ParseTreeNode child : tree.getChildren()) {
  			    parentField.set(child, tree);
  			}
  			return WalkingAction.PROCEED;
  		    } catch (IllegalArgumentException e) {
  			throw new IllegalStateException("Could not set new parent!", e);
  		    } catch (IllegalAccessException e) {
  			throw new IllegalStateException("Could not set new parent!", e);
  		    }
  		}
  	    };
  	    new TreeWalker<ParseTreeNode>(tree).walk(visitor);
  	    parentField.setAccessible(false);
  	} catch (SecurityException e) {
  	    throw new ParserException("Could not normalize the parser tree.", e);
  	} catch (NoSuchFieldException e) {
  	    throw new ParserException("Could not normalize the parser tree.", e);
  	} catch (IllegalStateException e) {
  	    throw new ParserException("Could not normalize the parser tree.", e);
  	}
      }