anchor.diff:      response.close();
     }
   
  +  void _returnOverlayContents(HttpRequest request) {
  +    String idString = request.requestedUri.queryParameters['id'];
  +    int id = int.parse(idString);
  +    String contents = _overlayContents[id];
  +    HttpResponse response = request.response;
  +    response.statusCode = HttpStatus.OK;
  +    response.headers.add(HttpHeaders.CONTENT_TYPE, "text/html");
  +    response.write('<html>');
  +    response.write('<head>');
  +    response.write('<title>Dart Analysis Server - Overlay</title>');
  +    response.write('</head>');
  +    response.write('<body>');
  +    response.write('<pre>${HTML_ESCAPE.convert(contents)}</pre>');
  +    response.write('</body>');
  +    response.write('</html>');
  +    response.close();
  +  }
  +
     /**
      * Return a response displaying overlays information.
      */
  
positive.code:     response.write('<h1>Dart Analysis Server - Overlays</h1>');
      response.write('<table border="1">');
      int count = 0;
      analysisServer.folderMap.forEach((_, AnalysisContextImpl context) {
        context.visitContentCache((Source source, int stamp, String contents) {
          count++;
          response.write('<tr>');
          response.write('<td><pre>${HTML_ESCAPE.convert('$source')}</pre></td>');
          response.write(
              '<td>${new DateTime.fromMillisecondsSinceEpoch(stamp)}</td>');
          response.write('</tr>');
        });
      });
      response.write('<tr><td colspan="2">Total: $count entries.</td></tr>');
  
negative.code:   static const String COMPLETION_PATH = '/completion';
  
    /**
     * The path used to request an overlay contents.
     */
    static const String OVERLAY_PATH = '/overlay';
  
    /**
     * The path used to request overlays information.
     */
    static const String OVERLAYS_PATH = '/overlays';
  