public boolean equalsWithComments(Object o) {

    /* generated by template ast.ErrorIfNull*/
    Log.errorIfNull(o, "0xA7006_335 Parameter 'o' must not be null.");

    /* generated by template ast.additionalmethods.EqualsWithComments*/

    ASTPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary comp;
    if ((o instanceof ASTPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary)) {
      comp = (ASTPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary) o;
    } else {
      return false;
    }
    if (!equalAttributes(comp)) {
      return false;
    }
    // comparing comments
    if (get_PreComments().size() == comp.get_PreComments().size()) {
      java.util.Iterator<de.monticore.ast.Comment> one = get_PreComments().iterator();
      java.util.Iterator<de.monticore.ast.Comment> two = comp.get_PreComments().iterator();
      while (one.hasNext()) {
        if (!one.next().equals(two.next())) {
          return false;
        }
      }
    } else {
      return false;
    }

    if (get_PostComments().size() == comp.get_PostComments().size()) {
      java.util.Iterator<de.monticore.ast.Comment> one = get_PostComments().iterator();
      java.util.Iterator<de.monticore.ast.Comment> two = comp.get_PostComments().iterator();
      while (one.hasNext()) {
        if (!one.next().equals(two.next())) {
          return false;
        }
      }
    } else {
      return false;
    }
    return true;
  }
  public ASTPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary deepClone(
      ASTPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary result) {

    /* generated by template ast.ErrorIfNull*/
    Log.errorIfNull(result, "0xA7006_110 Parameter 'result' must not be null.");

    /* generated by template ast.additionalmethods.DeepCloneWithParameters*/

    super.deepClone(result);

    result.classInstanceCreationExpression_lf_primary =
        this.classInstanceCreationExpression_lf_primary.isPresent()
            ? Optional.ofNullable(
                (java8._ast.ASTClassInstanceCreationExpression_lf_primary)
                    this.classInstanceCreationExpression_lf_primary.get().deepClone())
            : Optional.empty();
    result.fieldAccess_lf_primary =
        this.fieldAccess_lf_primary.isPresent()
            ? Optional.ofNullable(
                (java8._ast.ASTFieldAccess_lf_primary)
                    this.fieldAccess_lf_primary.get().deepClone())
            : Optional.empty();
    result.methodInvocation_lf_primary =
        this.methodInvocation_lf_primary.isPresent()
            ? Optional.ofNullable(
                (java8._ast.ASTMethodInvocation_lf_primary)
                    this.methodInvocation_lf_primary.get().deepClone())
            : Optional.empty();
    result.methodReference_lf_primary =
        this.methodReference_lf_primary.isPresent()
            ? Optional.ofNullable(
                (java8._ast.ASTMethodReference_lf_primary)
                    this.methodReference_lf_primary.get().deepClone())
            : Optional.empty();
    result.symbol =
        this.symbol.isPresent()
            ? Optional.ofNullable((Symbol) this.symbol.get())
            : Optional.empty();
    result.enclosingScope =
        this.enclosingScope.isPresent()
            ? Optional.ofNullable((Scope) this.enclosingScope.get())
            : Optional.empty();
    return result;
  }