@Override
 public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException {
   try {
     pm.beginTask("", 4); // $NON-NLS-1$
     RefactoringStatus result = new RefactoringStatus();
     // prepare AST
     utils = new ExtractUtils(unit);
     unitNode = utils.getUnitNode();
     pm.worked(1);
     // check selection
     result.merge(checkSelection(new SubProgressMonitor(pm, 3)));
     if (result.hasFatalError()) {
       return result;
     }
     // prepare parts
     result.merge(initializeParameters());
     initializeOccurrences();
     // done
     return result;
   } finally {
     pm.done();
   }
 }