@Override
  protected void invoke(@NotNull ActionContext context, @NotNull PsiClass aClass, @NotNull ModPsiUpdater updater) {
    final PsiElement lBrace = aClass.getLBrace();
    int offset = (lBrace == null ? aClass : lBrace).getTextRange().getStartOffset();
    List<? extends GenerationInfo> prototypes = new GenerateFieldOrPropertyHandler(myName, myType, myMemberType, myAnnotations)
        .generateMemberPrototypes(aClass, ClassMember.EMPTY_ARRAY);
    prototypes = GenerateMembersUtil.insertMembersAtOffset(aClass, offset, prototypes);
    if (prototypes.isEmpty()) return;
    final PsiElement scope = Objects.requireNonNull(prototypes.get(0).getPsiMember()).getContext();
    assert scope != null;
    ModTemplateBuilder builder = updater.templateBuilder();
    boolean first = true;
    final @NonNls String TYPE_NAME_VAR = "TYPE_NAME_VAR";
    for (GenerationInfo prototype : prototypes) {
      final PsiTypeElement typeElement = PropertyUtilBase.getPropertyTypeElement(prototype.getPsiMember());
      if (typeElement == null) continue;
      if (first) {
        first = false;
        builder.field(typeElement, myType.getCanonicalText());
      }
      else {
        builder.field(typeElement, TYPE_NAME_VAR, TYPE_NAME_VAR, false);
      }
    }
  }
@Override
  protected void invoke(@NotNull ActionContext context, @NotNull PsiClass aClass, @NotNull ModPsiUpdater updater)