@Nullable
 @Override
 public PsiElement getModifierElement(DotNetModifier modifier) {
   IElementType iElementType =
       CSharpModifierListImplUtil.ourModifiers.get(CSharpModifier.as(modifier));
   return findChildByType(iElementType);
 }
 @NotNull
 @Override
 public List<PsiElement> getModifierElements(@NotNull DotNetModifier modifier) {
   IElementType iElementType =
       CSharpModifierListImplUtil.ourModifiers.get(CSharpModifier.as(modifier));
   return findChildrenByType(iElementType);
 }
 @NotNull
 @Override
 public CSharpModifier[] getModifiers() {
   List<CSharpModifier> list = new ArrayList<CSharpModifier>();
   for (CSharpModifier modifier : CSharpModifier.values()) {
     if (hasModifier(modifier)) {
       list.add(modifier);
     }
   }
   return list.toArray(new CSharpModifier[list.size()]);
 }
  @Override
  public boolean hasModifierInTree(@NotNull DotNetModifier modifier) {
    CSharpModifier sharpModifier = CSharpModifier.as(modifier);
    CSharpModifierListStub stub = getStub();
    if (stub != null) {
      return stub.hasModifier(sharpModifier);
    }

    IElementType iElementType = CSharpModifierListImplUtil.ourModifiers.get(sharpModifier);
    return findChildByType(iElementType) != null;
  }