@NotNull
 @Override
 public List<String> getChildrenOf(@NotNull String topLevelElementName) {
   JstdTestCaseStructure testCaseStructure = myTestCaseStructureByNameMap.get(topLevelElementName);
   if (testCaseStructure == null) {
     return Collections.emptyList();
   }
   List<String> out = new ArrayList<String>(testCaseStructure.getTestCount());
   for (JstdTestStructure testStructure : testCaseStructure.getTestStructures()) {
     out.add(testStructure.getName());
   }
   return out;
 }
 @Override
 public PsiElement findPsiElement(@NotNull String testCaseName, @Nullable String testMethodName) {
   JstdTestCaseStructure testCaseStructure = myTestCaseStructureByNameMap.get(testCaseName);
   if (testCaseStructure == null) {
     return null;
   }
   if (testMethodName == null) {
     return testCaseStructure.getEnclosingCallExpression();
   }
   JstdTestStructure testStructure = testCaseStructure.getTestStructureByName(testMethodName);
   if (testStructure != null) {
     return testStructure.getTestMethodNameDeclaration();
   }
   return null;
 }
 void postProcess() {
   myNameByPsiElementMap = Collections.emptyMap();
   myPrototypeBasedTestElements = Collections.emptyMap();
   if (myTestCaseStructures.isEmpty()) {
     return;
   }
   int totalCount = 0;
   int prototypeBasedTestCount = 0;
   for (JstdTestCaseStructure testCaseStructure : myTestCaseStructures) {
     totalCount += testCaseStructure.getTestCount() + 1;
     for (JstdTestStructure testStructure : testCaseStructure.getTestStructures()) {
       if (testStructure.getWholeLeftDefExpr() != null) {
         prototypeBasedTestCount++;
       }
     }
   }
   myNameByPsiElementMap = new IdentityHashMap<PsiElement, String>(totalCount);
   if (prototypeBasedTestCount > 0) {
     myPrototypeBasedTestElements = new IdentityHashMap<PsiElement, Void>(prototypeBasedTestCount);
   }
   for (JstdTestCaseStructure testCaseStructure : myTestCaseStructures) {
     JSExpression testCaseMethodExpr =
         testCaseStructure.getEnclosingCallExpression().getMethodExpression();
     if (testCaseMethodExpr != null) {
       myNameByPsiElementMap.put(testCaseMethodExpr, testCaseStructure.getName());
     }
     for (JstdTestStructure testStructure : testCaseStructure.getTestStructures()) {
       PsiElement anchor = testStructure.getTestMethodNameDeclaration();
       myNameByPsiElementMap.put(anchor, testStructure.getName());
       JSDefinitionExpression wholeLeftDefExpr = testStructure.getWholeLeftDefExpr();
       if (wholeLeftDefExpr != null) {
         myPrototypeBasedTestElements.put(wholeLeftDefExpr, null);
       }
     }
   }
 }