anchor.diff:  import 'package:analysis_server/src/services/completion/completion_performance.dart';
   import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
   import 'package:analyzer/dart/analysis/results.dart';
  +import 'package:analyzer/dart/analysis/session.dart';
   import 'package:analyzer/src/dart/analysis/driver.dart';
   import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
   import 'package:analyzer_plugin/protocol/protocol_common.dart';
  
positive.code:    * The current request being processed or `null` if none.
     */
    CompletionRequestImpl _currentRequest;
  
    /**
     * Initialize a new request handler for the given [server].
  
negative.code:       );
      }
  
      const timeout = Duration(milliseconds: 1000);
      var timer = Stopwatch()..start();
      var id = ++_latestGetSuggestionDetailsId;
      while (id == _latestGetSuggestionDetailsId && timer.elapsed < timeout) {
        try {
          var analysisDriver = server.getAnalysisDriver(file);
          var session = analysisDriver.currentSession;
          var resolvedLibrary = await session.getResolvedLibrary(file);
          var requestedLibraryElement = await session.getLibraryByUri(
            library.uriStr,
          );
  
          var completion = params.label;
          var builder = DartChangeBuilder(session);
          await builder.addFileEdit(file, (builder) {
            var result = builder.importLibraryElement(
              targetLibrary: resolvedLibrary,
              targetPath: file,
              targetOffset: params.offset,
              requestedLibrary: requestedLibraryElement,
              requestedName: requestedName,
            );
            if (result.prefix != null) {
              completion = '${result.prefix}.$completion';
            }
          });
  
          server.sendResponse(
            CompletionGetSuggestionDetailsResult(
              completion,
              change: builder.sourceChange,
            ).toResponse(request.id),
          );
          return;
        } on InconsistentAnalysisException {
          // Loop around to try again.
        }
      }
  
      // Timeout or abort, send the empty response.
      server.sendResponse(
        CompletionGetSuggestionDetailsResult('').toResponse(request.id),
      );
    }
  
  