anchor.diff:          .forUri2(applicationRoot.absoluteUri(node.importUri));
       assert(source != null);
       var element = context.computeLibraryElement(source);
  -    context.resolveCompilationUnit(source, element);
  -    _buildLibraryBody(element, node);
  -    if (node.importUri.scheme != 'dart') {
  -      for (var unit in element.units) {
  -        LineInfo lines;
  -        for (var error in context.computeErrors(unit.source)) {
  -          if (error.errorCode is CompileTimeErrorCode ||
  -              error.errorCode is ParserErrorCode ||
  -              error.errorCode is ScannerErrorCode ||
  -              error.errorCode is StrongModeCode) {
  -            lines ??= context.computeLineInfo(source);
  -            errors.add(formatErrorMessage(error, source.shortName, lines));
  -          }
  -        }
  +    var units = <CompilationUnit>[];
  +    bool reportErrors = node.importUri.scheme != 'dart';
  +    var tree = context.resolveCompilationUnit(source, element);
  +    units.add(tree);
  +    if (reportErrors) _processErrors(source);
  +    for (var part in element.parts) {
  +      var source = part.source;
  +      units.add(context.resolveCompilationUnit(source, element));
  +      if (reportErrors) _processErrors(source);
  +    }
  +    _buildLibraryBody(element, node, units);
  +  }
  +
  +  void _processErrors(Source source) {
  +    LineInfo lines;
  +    for (var error in context.computeErrors(source)) {
  +      if (error.errorCode is CompileTimeErrorCode ||
  +          error.errorCode is ParserErrorCode ||
  +          error.errorCode is ScannerErrorCode ||
  +          error.errorCode is StrongModeCode) {
  +        lines ??= context.computeLineInfo(source);
  +        errors.add(formatErrorMessage(error, source.shortName, lines));
         }
       }
     }
  
positive.code:       ..fileUri = "file://${element.source.fullName}";
    }
  
    void _buildTopLevelMember(ast.Member member, Element element) {
      var astNode = element.computeNode();
      assert(member.parent != null);
      new MemberBodyBuilder(this, member, element).build(astNode);
    }
  
negative.code:     for (LibraryElement libraryElement in libraryElements) {
        for (CompilationUnitElement compilationUnitElement
            in libraryElement.units) {
          var source = compilationUnitElement.source;
          LineInfo lineInfo = context.computeLineInfo(source);
          program.uriToLineStarts["file://${source.fullName}"] =
              new List<int>.generate(lineInfo.lineCount, lineInfo.getOffsetOfLine,
                  growable: false);
        }
  