@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();
        }
      }
    }
  }