private static void addStatusErrors(
     RefactoringStatus status, boolean hasPotentialMatches, boolean hasNonCuMatches) {
   if (hasPotentialMatches) {
     final RefactoringStatusEntry entry =
         new RefactoringStatusEntry(
             RefactoringStatus.ERROR,
             RefactoringCoreMessages.RefactoringSearchEngine_potential_matches);
     if (!containsStatusEntry(status, entry)) status.addEntry(entry);
   }
   if (hasNonCuMatches) {
     final RefactoringStatusEntry entry =
         new RefactoringStatusEntry(
             RefactoringStatus.ERROR,
             RefactoringCoreMessages.RefactoringSearchEngine_non_cu_matches);
     if (!containsStatusEntry(status, entry)) status.addEntry(entry);
   }
 }
 /** Basically just replaces "renamed" with "created" in all messages. */
 private static RefactoringStatus convertRenameToCreateStatus(RefactoringStatus renameStatus) {
   RefactoringStatus result = new RefactoringStatus();
   for (RefactoringStatusEntry entry : renameStatus.getEntries()) {
     String msg = entry.getMessage();
     msg = RenameAnalyzeUtil.convertRenameMessageToCreateMessage(msg);
     result.addEntry(
         entry.getSeverity(), msg, entry.getContext(), entry.getPluginId(), entry.getCode());
   }
   return result;
 }
 private static RefactoringStatus analyzeCompileErrors(
     String newCuSource, CompilationUnit newCUNode, CompilationUnit oldCUNode) {
   RefactoringStatus result = new RefactoringStatus();
   IProblem[] newProblems =
       RefactoringAnalyzeUtil.getIntroducedCompileProblems(newCUNode, oldCUNode);
   for (int i = 0; i < newProblems.length; i++) {
     IProblem problem = newProblems[i];
     if (problem.isError())
       result.addEntry(
           new RefactoringStatusEntry(
               (problem.isError() ? RefactoringStatus.ERROR : RefactoringStatus.WARNING),
               problem.getMessage(),
               new JavaStringStatusContext(newCuSource, SourceRangeFactory.create(problem))));
   }
   return result;
 }
  private void checkSource(SubProgressMonitor monitor, RefactoringStatus result)
      throws CoreException {
    String newCuSource = fChange.getPreviewContent(new NullProgressMonitor());
    CompilationUnit newCUNode =
        new RefactoringASTParser(ASTProvider.SHARED_AST_LEVEL)
            .parse(newCuSource, fCu, true, true, monitor);

    IProblem[] newProblems =
        RefactoringAnalyzeUtil.getIntroducedCompileProblems(newCUNode, fCuRewrite.getRoot());
    for (int i = 0; i < newProblems.length; i++) {
      IProblem problem = newProblems[i];
      if (problem.isError())
        result.addEntry(
            new RefactoringStatusEntry(
                (problem.isError() ? RefactoringStatus.ERROR : RefactoringStatus.WARNING),
                problem.getMessage(),
                new JavaStringStatusContext(newCuSource, SourceRangeFactory.create(problem))));
    }
  }
  public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException {
    pm.beginTask(RefactoringCoreMessages.ExtractConstantRefactoring_checking_preconditions, 4);

    /* Note: some checks are performed on change of input widget
     * values. (e.g. see ExtractConstantRefactoring.checkConstantNameOnChange())
     */

    // TODO: possibly add more checking for name conflicts that might
    //      lead to a change in behaviour

    try {
      RefactoringStatus result = new RefactoringStatus();
      fChange = createTextChange(new SubProgressMonitor(pm, 2));

      String newCuSource = fChange.getPreviewContent(new NullProgressMonitor());
      JavaScriptUnit newCUNode =
          new RefactoringASTParser(AST.JLS3).parse(newCuSource, fCu, true, true, null);

      IProblem[] newProblems =
          RefactoringAnalyzeUtil.getIntroducedCompileProblems(newCUNode, fCuRewrite.getRoot());
      for (int i = 0; i < newProblems.length; i++) {
        IProblem problem = newProblems[i];
        if (problem.isError())
          result.addEntry(
              new RefactoringStatusEntry(
                  (problem.isError() ? RefactoringStatus.ERROR : RefactoringStatus.WARNING),
                  problem.getMessage(),
                  new JavaStringStatusContext(newCuSource, new SourceRange(problem))));
      }

      fConstantTypeCache = null;
      fCuRewrite.clearASTAndImportRewrites();

      return result;
    } finally {
      pm.done();
    }
  }