void (final Project project, final PsiClass fieldClass, final String fieldName, final PsiClass boundClass, final boolean showErrors, final IContainer rootContainer) { // 1. Create field final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); final PsiType type = factory.createType(fieldClass); try { final PsiField field = factory.createField(fieldName, type); final String accessibility = GuiDesignerConfiguration.getInstance(project).DEFAULT_FIELD_ACCESSIBILITY; final PsiModifierList modifierList = field.getModifierList(); assert modifierList != null; String[] modifiers = {PsiModifier.PRIVATE, PsiModifier.PROTECTED, PsiModifier.PUBLIC}; for(@PsiModifier.ModifierConstant String modifier: modifiers) { modifierList.setModifierProperty(modifier, accessibility.equals(modifier)); } PsiField lastUiField = null; for(PsiField uiField: boundClass.getFields()) { if (FormEditingUtil.findComponentWithBinding(rootContainer, uiField.getName()) != null) { lastUiField = uiField; } } if (lastUiField != null) { boundClass.addAfter(field, lastUiField); } else { boundClass.add(field); } } catch (final IncorrectOperationException exc) { if (showErrors) { ApplicationManager.getApplication().invokeLater( () -> Messages.showErrorDialog( project, UIDesignerBundle.message("error.cannot.create.field.reason", fieldName, exc.getMessage()), CommonBundle.getErrorTitle() ) ); } } }