private static String[] addKeywords(PsiModifierList list, ArrayOfModifiers[] keywordSets, @NotNull PsiElement position) {
    final List<String> ret = new ArrayList<>();
    for (int i = 0; i < keywordSets.length; i++) {
      final ArrayOfModifiers keywords = keywordSets[keywordSets.length - i - 1];
      if (keywords.allowToUse() != null && !keywords.allowToUse().test(position)) {
        continue;
      }
      boolean containModifierFlag = false;
      if (list != null) {
        for (@PsiModifier.ModifierConstant String keyword : keywords.modifiers()) {
          if (list.hasExplicitModifier(keyword)) {
            containModifierFlag = true;
            break;
          }
        }
      }
      if (!containModifierFlag) {
        ContainerUtil.addAll(ret, keywords.modifiers());
      }
    }
    return ArrayUtilRt.toStringArray(ret);
  }
private static String[] addKeywords(PsiModifierList list, ArrayOfModifiers[] keywordSets, @NotNull PsiElement position)