anchor.diff:      for (ClassElement cls in dartDartUnitElement.types) {
         if (!cls.isAbstract && cls.type.isSubtypeOf(analysisTaskType)) {
           String task = cls.name;
  -        // TODO(paulberry): node is deprecated.  What am I supposed to do
  -        // instead?
  -        AstNode buildInputsAst = cls.getMethod('buildInputs').node;
  +        AstNode buildInputsAst = cls.getMethod('buildInputs').computeNode();
           findResultDescriptors(buildInputsAst, (String input) {
             results.add(input);
             print('  $input -> $task');
  
positive.code:           resultLists.add(input);
            print('  $input -> $task');
          });
          findResultDescriptors(cls.getField('DESCRIPTOR').node, (String output) {
            results.add(output);
            print('  $task -> $output');
          });
        }
      }
      AstNode enginePluginAst = enginePluginUnitElement.node;
      for (String resultList in resultLists) {
        print('  $resultList [shape=hexagon]');
        TopLevelVariableElement extensionIdVariable = _getExtensionId(resultList);
  
negative.code:     PropertyAccessorElement getter =
          enginePluginClass.getGetter(resultListGetterName);
      for (ElementAnnotation annotation in getter.metadata) {
        DartObjectImpl annotationValue = annotation.constantValue;
        if (annotationValue.type.isSubtypeOf(extensionPointIdType)) {
          String extensionPointId =
              annotationValue.fields['extensionPointId'].toStringValue();
          for (TopLevelVariableElement variable
              in taskUnitElement.topLevelVariables) {
            if (variable.name == extensionPointId) {
  