@Override
 public void setFirstChild(AST ast) {
   childCount = NOT_INITIALIZED;
   super.setFirstChild(ast);
   if (ast != null) {
     ((DetailAST) ast).setParent(this);
   }
 }
 @Override
 public void addChild(AST ast) {
   super.addChild(ast);
   if (ast != null) {
     ((DetailAST) ast).setParent(this);
     getFirstChild().setParent(this);
   }
 }
 @Override
 public void setNextSibling(AST ast) {
   super.setNextSibling(ast);
   if (ast != null && parent != null) {
     ((DetailAST) ast).setParent(parent);
   }
   if (ast != null) {
     ((DetailAST) ast).setPreviousSibling(this);
   }
 }
 @Override
 public void initialize(Token tok) {
   super.initialize(tok);
   lineNo = tok.getLine();
   columnNo = tok.getColumn() - 1; // expect columns to start @ 0
 }