code: func (n *AlterTableSpec) Accept(v Visitor) (Node, bool) {
  	newNode, skipChildren := v.Enter(n)
  	if skipChildren {
  		return v.Leave(newNode)
  	}
  	n = newNode.(*AlterTableSpec)
  	if n.Constraint != nil {
  		node, ok := n.Constraint.Accept(v)
  		if !ok {
  			return n, false
  		}
  		n.Constraint = node.(*Constraint)
  	}
  	if n.NewTable != nil {
  		node, ok := n.NewTable.Accept(v)
  		if !ok {
  			return n, false
  		}
  		n.NewTable = node.(*TableName)
  	}
  	if n.NewColumn != nil {
  		node, ok := n.NewColumn.Accept(v)
  		if !ok {
  			return n, false
  		}
  		n.NewColumn = node.(*ColumnDef)
  	}
  	if n.OldColumnName != nil {
  		node, ok := n.OldColumnName.Accept(v)
  		if !ok {
  			return n, false
  		}
  		n.OldColumnName = node.(*ColumnName)
  	}
  	if n.Position != nil {
  		node, ok := n.Position.Accept(v)
  		if !ok {
  			return n, false
  		}
  		n.Position = node.(*ColumnPosition)
  	}
  	return v.Leave(n)
  }
docs: // Accept implements Node Accept interface.