/**
   * Creates two packages (pack1 and pack2) in different projects. Sets the instance fields fPack1
   * and fPack2.
   */
  public void createPackages() throws CoreException, JavaModelException {
    JavaProjectHelper.addRTJar(fJavaProject1);

    IPackageFragmentRoot root1 = JavaProjectHelper.addSourceContainer(fJavaProject1, "src");
    fPack1 = root1.createPackageFragment("pack1", true, null);

    JavaProjectHelper.addRTJar(fJavaProject2);
    JavaProjectHelper.addRequiredProject(fJavaProject2, fJavaProject1);

    IPackageFragmentRoot root2 = JavaProjectHelper.addSourceContainer(fJavaProject2, "src");
    fPack2 = root2.createPackageFragment("pack2", true, null);
  }
  public void testJUnitWithCloneNotRaw() throws Exception {
    fAssumeCloneReturnsSameType = true;
    fLeaveUnconstrainedRaw = false;

    IJavaProject javaProject = JavaProjectHelper.createJavaProject("InferTypeArguments", "bin");
    try {
      IPackageFragmentRoot jdk = JavaProjectHelper.addRTJar(javaProject);
      Assert.assertNotNull(jdk);

      File junitSrcArchive =
          JavaTestPlugin.getDefault().getFileInPlugin(JavaProjectHelper.JUNIT_SRC_381);
      Assert.assertTrue(junitSrcArchive != null && junitSrcArchive.exists());

      IPackageFragmentRoot src =
          JavaProjectHelper.addSourceContainerWithImport(
              javaProject, "src", junitSrcArchive, JavaProjectHelper.JUNIT_SRC_ENCODING);

      boolean performed =
          perform(new IJavaElement[] {javaProject}, RefactoringStatus.OK, RefactoringStatus.OK);
      assertTrue(performed);

      compareWithZipFile(src, "junit381-noUI-clone-not-raw-src.zip");
    } finally {
      if (javaProject != null && javaProject.exists()) JavaProjectHelper.delete(javaProject);
    }
  }