@NotNull
 private static FqName getClassRelativeName(@NotNull JetClassOrObject decompiledClassOrObject) {
   Name name = decompiledClassOrObject.getNameAsName();
   assert name != null;
   JetClassOrObject parent =
       PsiTreeUtil.getParentOfType(decompiledClassOrObject, JetClassOrObject.class, true);
   if (parent == null) {
     assert decompiledClassOrObject.isTopLevel();
     return FqName.topLevel(name);
   }
   return getClassRelativeName(parent).child(name);
 }
 public void putToIndex(@NotNull JetDeclaration declaration) {
   if (declaration instanceof JetClassInitializer) {
     return;
   }
   allDeclarations.add(declaration);
   if (declaration instanceof JetNamedFunction) {
     JetNamedFunction namedFunction = (JetNamedFunction) declaration;
     functions.put(safeNameForLazyResolve(namedFunction), namedFunction);
   } else if (declaration instanceof JetProperty) {
     JetProperty property = (JetProperty) declaration;
     properties.put(safeNameForLazyResolve(property), property);
   } else if (declaration instanceof JetClassOrObject) {
     JetClassOrObject classOrObject = (JetClassOrObject) declaration;
     classesAndObjects.put(safeNameForLazyResolve(classOrObject.getNameAsName()), classOrObject);
   } else if (declaration instanceof JetParameter
       || declaration instanceof JetTypedef
       || declaration instanceof JetMultiDeclaration) {
     // Do nothing, just put it into allDeclarations is enough
   } else {
     throw new IllegalArgumentException("Unknown declaration: " + declaration);
   }
 }