public PsiElement getOriginalElement() {
   final PsiClass containingClass = getContainingClass();
   if (containingClass == null) return this;
   PsiClass originalClass = (PsiClass) containingClass.getOriginalElement();
   PsiField originalField = originalClass.findFieldByName(getName(), false);
   return originalField != null ? originalField : this;
 }
 @Override
 public PsiElement getOriginalElement() {
   final PsiClass containingClass = getContainingClass();
   if (containingClass == null) return this;
   PsiClass originalClass = (PsiClass) containingClass.getOriginalElement();
   final PsiMethod originalMethod = originalClass.findMethodBySignature(this, false);
   return originalMethod != null ? originalMethod : this;
 }
 @NotNull
 private static PsiElement originalElement(@NotNull PsiClass aClass) {
   final PsiElement originalElement = aClass.getOriginalElement();
   ASTNode node = originalElement.getNode();
   if (node != null) {
     final PsiCompiledElement compiled = node.getUserData(ClsElementImpl.COMPILED_ELEMENT);
     if (compiled != null) {
       return compiled;
     }
   }
   return originalElement;
 }