anchor.diff:  
       // Add named parameters to all constructors.
       clazz.constructors.forEach(handleConstructor);
  -    hierarchy.applyChanges(<Class>[clazz]);
  +  }
  +
  +  Program _computeFullProgram(Program deltaProgram) {
  +    final Set<Library> libraries = new Set<Library>();
  +    final List<Library> workList = <Library>[];
  +    for (Library library in deltaProgram.libraries) {
  +      if (libraries.add(library)) {
  +        workList.add(library);
  +      }
  +    }
  +    while (workList.isNotEmpty) {
  +      final Library library = workList.removeLast();
  +      for (LibraryDependency dependency in library.dependencies) {
  +        if (libraries.add(dependency.targetLibrary)) {
  +          workList.add(dependency.targetLibrary);
  +        }
  +      }
  +    }
  +    return new Program()..libraries.addAll(libraries);
     }
   
     /// Transform the given [program].
  
positive.code:     // TODO(jacobr): use hierarchy.isSubclassOf once we are using the
      // non-deprecated ClassHierarchy constructor.
      if (_currentFactory != null &&
          _hierarchy.getClassAsInstanceOf(constructedClass, _currentFactory.enclosingClass) != null) {
        final VariableDeclaration creationLocationParameter = _getNamedParameter(
          _currentFactory.function,
          _creationLocationParameterName,
  
negative.code:     );
    }
  }
  
  
  /// Rewrites all widget constructors and constructor invocations to add a
  /// parameter specifying the location the constructor was called from.
  