anchor.diff:              searchEngine, server.getAstProvider(file), unit, offset, length);
           feedback = new ExtractMethodFeedback(offset, length, '', <String>[],
               false, <RefactoringMethodParameter>[], <int>[], <int>[]);
  +      }
  +    }
  +    if (kind == RefactoringKind.EXTRACT_WIDGET) {
  +      CompilationUnit unit = await server.getResolvedCompilationUnit(file);
  +      if (unit != null) {
  +        var analysisSession = server.getAnalysisDriver(file).currentSession;
  +        refactoring = new ExtractWidgetRefactoring(
  +            searchEngine, analysisSession, unit, offset);
  +        feedback = new ExtractWidgetFeedback();
         }
       }
       if (kind == RefactoringKind.INLINE_LOCAL_VARIABLE) {
  
positive.code:   bool get _requiresOptions {
      return refactoring is ExtractLocalRefactoring ||
          refactoring is ExtractMethodRefactoring ||
          refactoring is InlineMethodRefactoring ||
          refactoring is RenameRefactoring;
    }
  
negative.code:       extractRefactoring.returnType = extractOptions.returnType;
        return extractRefactoring.checkName();
      }
      if (refactoring is ExtractWidgetRefactoring) {
        ExtractWidgetRefactoring extractRefactoring = this.refactoring;
        ExtractWidgetOptions extractOptions = params.options;
        extractRefactoring.name = extractOptions.name;
        extractRefactoring.stateful = extractOptions.stateful;
        return extractRefactoring.checkName();
      }
      if (refactoring is InlineMethodRefactoring) {
        InlineMethodRefactoring inlineRefactoring = this.refactoring;
        InlineMethodOptions inlineOptions = params.options;
  