@Nullable private PsiElement findAnchor(String name) { final int myPriority = PRIORITY.get(name); final PsiElement[] modifiers = getModifiers(); PsiElement anchor = null; for (int i = modifiers.length - 1; i >= 0; i--) { PsiElement modifier = modifiers[i]; if (PRIORITY.get(modifier.getText()) <= myPriority) { anchor = modifier; break; } } return anchor; }
private void setModifierPropertyInternal(String name, boolean doSet) { if (doSet) { PsiElement modifier = GroovyPsiElementFactory.getInstance(getProject()).createModifierFromText(name); PsiElement anchor = findAnchor(name); addAfter(modifier, anchor); } else { final PsiElement[] modifiers = findChildrenByType(TokenSets.MODIFIERS, PsiElement.class); for (PsiElement modifier : modifiers) { if (name.equals(modifier.getText())) { deleteChildRange(modifier, modifier); break; } } if (getTextLength() == 0) { final PsiElement nextSibling = getNextSibling(); if (nextSibling != null && TokenSets.WHITE_SPACES_SET.contains(nextSibling.getNode().getElementType())) { nextSibling.delete(); } } } }