class AlterTableRenameColumn<T> extends Statement {

    private final Table<T> table;
    private final Expression column;
    private final Expression newName;

    public AlterTableRenameColumn(Table<T> table, Expression column, Expression newName) {
        this.table = table;
        this.column = column;
        this.newName = newName;
    }

    public Table<T> table() {
        return table;
    }

    public Expression column() {
        return column;
    }

    public Expression newName() {
        return newName;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        AlterTableRenameColumn<?> that = (AlterTableRenameColumn<?>) o;
        return table.equals(that.table) && column.equals(that.column) && newName.equals(that.newName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(table, column, newName);
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}

    @Override
    public <R, C> R accept(AstVisitor<R, C> visitor, C context) {
        return visitor.visitAlterTableRenameColumnStatement(this, context);
    }
}

        return "AlterTableRenameColumn{" +
            "table=" + table +
            ", column=" + column +
            ", newName=" + newName +
            '}';
    
<methods>public non-sealed void <init>() ,public R accept(AstVisitor<R,C>, C) <variables>