class CreateAnalyzer<T> extends Statement {

    private final String ident;
    @Nullable
    private final String extendedAnalyzer;
    private final List<AnalyzerElement<T>> elements;

    public CreateAnalyzer(String ident,
                          @Nullable String extendedAnalyzer,
                          List<AnalyzerElement<T>> elements) {
        this.ident = ident;
        this.extendedAnalyzer = extendedAnalyzer;
        this.elements = elements;
    }

    public String ident() {
        return ident;
    }

    @Nullable
    public String extendedAnalyzer() {
        return extendedAnalyzer;
    }

    public boolean isExtending() {
        return extendedAnalyzer != null;
    }

    public List<AnalyzerElement<T>> elements() {
        return elements;
    }

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

    @Override
    public int hashCode() {
        return Objects.hash(ident, extendedAnalyzer, elements);
    }

    @Override
    public String toString() {
        return "CreateAnalyzer{" +
               "ident='" + ident + '\'' +
               ", extends='" + extendedAnalyzer + '\'' +
               ", elements=" + elements +
               '}';
    }

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

        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        CreateAnalyzer<?> that = (CreateAnalyzer<?>) o;
        return Objects.equals(ident, that.ident) &&
               Objects.equals(extendedAnalyzer, that.extendedAnalyzer) &&
               Objects.equals(elements, that.elements);
    
<methods>public non-sealed void <init>() ,public R accept(AstVisitor<R,C>, C) <variables>