anchor.diff:            print('  $task -> $output');
           });
         }
  +    }
  +    AstNode enginePluginAst = enginePluginUnitElement.node;
  +    for (String resultList in resultLists) {
  +      print('  $resultList [shape=hexagon]');
  +      TopLevelVariableElement extensionIdVariable = _getExtensionId(resultList);
  +      findExtensions(enginePluginAst, extensionIdVariable, (String extension) {
  +        results.add(extension);
  +        print('  $extension -> $resultList');
  +      });
       }
       for (String result in results) {
         print('  $result [shape=box]');
  
positive.code:     context.applyChanges(changeSet);
      return source;
    }
  }
  
  class ResultDescriptorFinder extends GeneralizingAstVisitor {
    final InterfaceType resultDescriptorType;
    final ResultDescriptorFinderCallback callback;
  
    ResultDescriptorFinder(this.resultDescriptorType, this.callback);
  
    @override
    visitIdentifier(Identifier node) {
      Element element = node.staticElement;
      if (element is PropertyAccessorElement &&
          element.isGetter &&
          element.returnType.isSubtypeOf(resultDescriptorType)) {
        callback(element);
      }
    }
  
negative.code:  *
   * The ".dot" file is output to standard out.  To convert it to a pdf, store it
   * in a file (e.g. "tasks.dot"), and post-process it with
   * "dot tasks.dot -Tpdf -O".
   *
   * TODO(paulberry):
   * - Add general.dart and html.dart for completeness.
  