class IndexDefinition<T> extends TableElement<T> {

    private final String ident;
    private final String method;
    private final List<T> columns;
    private final GenericProperties<T> properties;

    public IndexDefinition(String ident, String method, List<T> columns, GenericProperties<T> properties) {
        this.ident = ident;
        this.method = method;
        this.columns = columns;
        this.properties = properties;
    }

    public String ident() {
        return ident;
    }

    public String method() {
        return method;
    }

    public List<T> columns() {
        return columns;
    }

    public GenericProperties<T> properties() {
        return properties;
    }

    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
        return Objects.hash(ident, method, columns, properties);
    }

    @Override
    public String toString() {
        return "IndexDefinition{" +
               "ident='" + ident + '\'' +
               ", method='" + method + '\'' +
               ", columns=" + columns +
               ", properties=" + properties +
               '}';
    }

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

    @Override
    public void visit(Consumer<? super T> consumer) {
        columns.forEach(consumer);
        properties.properties().values().forEach(consumer);
    }
}

        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        IndexDefinition<?> that = (IndexDefinition<?>) o;
        return Objects.equals(ident, that.ident) &&
               Objects.equals(method, that.method) &&
               Objects.equals(columns, that.columns) &&
               Objects.equals(properties, that.properties);
    
<methods>public non-sealed void <init>() ,public R accept(AstVisitor<R,C>, C) ,public abstract void visit(Consumer<? super T>) <variables>