public static String @Nullable [] getNames(final ExpressionContext context) {
     final Project project = context.getProject();
     final int offset = context.getStartOffset();

     Document document = context.getEditor().getDocument();
     PsiDocumentManager.getInstance(project).commitDocument(document);

     String[] names = null;
     PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document);
     PsiElement element = file.findElementAt(offset);
     if (element instanceof PsiIdentifier){
       names = getNamesForIdentifier(project, (PsiIdentifier)element);
     }
     else{
       final PsiFile fileCopy = (PsiFile)file.copy();
       BlockSupport blockSupport = BlockSupport.getInstance(project);
       try{
         blockSupport.reparseRange(fileCopy, offset, offset, "xxx");
       }
       catch(IncorrectOperationException e){
         LOG.error(e);
       }
       PsiElement identifierCopy = fileCopy.findElementAt(offset);
       if (identifierCopy instanceof PsiIdentifier) {
         names = getNamesForIdentifier(project, (PsiIdentifier)identifierCopy);
       }
     }
     return names;
   }
public static String @Nullable [] getNames(final ExpressionContext context)