public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException {
   RefactoringStatus result = new RefactoringStatus();
   if (fSourceProvider == null && Invocations.isInvocation(fInitialNode)) {
     fSourceProvider = resolveSourceProvider(result, fInitialTypeRoot, fInitialNode);
     if (result.hasFatalError()) return result;
   }
   result.merge(fSourceProvider.checkActivation());
   result.merge(fTargetProvider.checkActivation());
   return result;
 }
 public RefactoringStatus setCurrentMode(Mode mode) throws JavaModelException {
   if (fCurrentMode == mode) return new RefactoringStatus();
   Assert.isTrue(getInitialMode() == Mode.INLINE_SINGLE);
   fCurrentMode = mode;
   if (mode == Mode.INLINE_SINGLE) {
     if (fInitialNode instanceof MethodInvocation)
       fTargetProvider =
           TargetProvider.create(
               (ICompilationUnit) fInitialTypeRoot, (MethodInvocation) fInitialNode);
     else if (fInitialNode instanceof SuperMethodInvocation)
       fTargetProvider =
           TargetProvider.create(
               (ICompilationUnit) fInitialTypeRoot, (SuperMethodInvocation) fInitialNode);
     else if (fInitialNode instanceof ConstructorInvocation)
       fTargetProvider =
           TargetProvider.create(
               (ICompilationUnit) fInitialTypeRoot, (ConstructorInvocation) fInitialNode);
     else throw new IllegalStateException(String.valueOf(fInitialNode));
   } else {
     fTargetProvider = TargetProvider.create(fSourceProvider.getDeclaration());
   }
   return fTargetProvider.checkActivation();
 }