@Override
  public void applyTransformation(@NotNull TransformationContext context) {
    if (GrRecordUtils.isRecordTransformationApplied(context)) {
      // record's properties have their own names, so default property syntax is inapplicable
      return;
    }
    for (GrField field : context.getFields()) {
      if (!field.isProperty()) continue;
      GrModifierList modifierList = field.getModifierList();
      if (modifierList == null) continue;

      final String fieldName = field.getName();

      String nameNonBoolean = getGetterNameNonBoolean(fieldName);
      if (!hasContradictingMethods(context, nameNonBoolean, false)) {
        context.addMethod(new GrAccessorMethodImpl(field, false, nameNonBoolean));
        if (PsiTypes.booleanType().equals(field.getDeclaredType())) {
          String nameBoolean = getGetterNameBoolean(fieldName);
          if (!hasContradictingMethods(context, nameBoolean, false)) {
            context.addMethod(new GrAccessorMethodImpl(field, false, nameBoolean));
          }
        }
      }

      if (!context.hasModifierProperty(modifierList, PsiModifier.FINAL)) {
        String setterName = getSetterName(fieldName);
        if (!hasContradictingMethods(context, setterName, true)) {
          context.addMethod(new GrAccessorMethodImpl(field, true, setterName));
        }
      }
    }
  }
@Override
  public void applyTransformation(@NotNull TransformationContext context)