@Override
  protected void analyzeAndCheck(File testDataFile, List<TestFile> testFiles) {
    List<JetFile> jetFiles = getJetFiles(testFiles);

    CliLightClassGenerationSupport support =
        CliLightClassGenerationSupport.getInstanceForCli(getProject());

    BindingContext bindingContext =
        AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
                getProject(),
                jetFiles,
                support.getTrace(),
                Predicates.<PsiFile>alwaysTrue(),
                false,
                support.getModule(),
                MemberFilter.ALWAYS_TRUE)
            .getBindingContext();

    boolean ok = true;

    StringBuilder actualText = new StringBuilder();
    for (TestFile testFile : testFiles) {
      ok &= testFile.getActualText(bindingContext, actualText);
    }

    JetTestUtils.assertEqualsToFile(testDataFile, actualText.toString());

    assertTrue("Diagnostics mismatch. See the output above", ok);

    checkAllResolvedCallsAreCompleted(jetFiles, bindingContext);
  }
    public void doTest(String path) throws Exception {
      File dir = new File(path);

      CompilerConfiguration configuration =
          JetTestUtils.compilerConfigurationForTests(
              ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, new File(dir, "java"));
      configuration.put(
          CommonConfigurationKeys.SOURCE_ROOTS_KEY,
          Arrays.asList(new File(dir, "kotlin").getAbsolutePath()));
      JetCoreEnvironment environment =
          new JetCoreEnvironment(getTestRootDisposable(), configuration);

      ModuleDescriptor moduleDescriptor = new ModuleDescriptor(Name.special("<test module>"));

      // we need the same binding trace for resolve from Java and Kotlin
      BindingTrace trace =
          CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();

      InjectorForJavaDescriptorResolver injectorForJava =
          new InjectorForJavaDescriptorResolver(environment.getProject(), trace, moduleDescriptor);

      InjectorForTopDownAnalyzerForJvm injectorForAnalyzer =
          new InjectorForTopDownAnalyzerForJvm(
              environment.getProject(),
              new TopDownAnalysisParameters(
                  Predicates.<PsiFile>alwaysFalse(),
                  false,
                  false,
                  Collections.<AnalyzerScriptParameter>emptyList()),
              trace,
              moduleDescriptor);

      injectorForAnalyzer
          .getTopDownAnalyzer()
          .analyzeFiles(
              environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());

      JavaDescriptorResolver javaDescriptorResolver = injectorForJava.getJavaDescriptorResolver();
      NamespaceDescriptor namespaceDescriptor =
          javaDescriptorResolver.resolveNamespace(
              LoadDescriptorUtil.TEST_PACKAGE_FQNAME, DescriptorSearchRule.INCLUDE_KOTLIN);
      assert namespaceDescriptor != null;

      compareNamespaceWithFile(
          namespaceDescriptor,
          NamespaceComparator.DONT_INCLUDE_METHODS_OF_OBJECT,
          new File(dir, "expected.txt"));

      ExpectedLoadErrorsUtil.checkForLoadErrors(namespaceDescriptor, trace.getBindingContext());
    }