| Index: pkg/analyzer/lib/src/generated/sdk_io.dart
 | 
| diff --git a/pkg/analyzer/lib/src/generated/sdk_io.dart b/pkg/analyzer/lib/src/generated/sdk_io.dart
 | 
| index c0b353dde4cc8ee81a927c21c61f776bba0c0365..58146c67a92f1849b79bc365060c19f92d146a04 100644
 | 
| --- a/pkg/analyzer/lib/src/generated/sdk_io.dart
 | 
| +++ b/pkg/analyzer/lib/src/generated/sdk_io.dart
 | 
| @@ -230,7 +230,38 @@ class DirectoryBasedDartSdk implements DartSdk {
 | 
|    }
 | 
|  
 | 
|    @override
 | 
| -  Source fromEncoding(UriKind kind, Uri uri) => new FileBasedSource.con2(new JavaFile.fromUri(uri), kind);
 | 
| +  Source fromFileUri(Uri uri) {
 | 
| +    JavaFile file = new JavaFile.fromUri(uri);
 | 
| +    String filePath = file.getAbsolutePath();
 | 
| +    String libPath = libraryDirectory.getAbsolutePath();
 | 
| +    if (!filePath.startsWith("${libPath}${JavaFile.separator}")) {
 | 
| +      return null;
 | 
| +    }
 | 
| +    filePath = filePath.substring(libPath.length + 1);
 | 
| +    for (SdkLibrary library in _libraryMap.sdkLibraries) {
 | 
| +      String libraryPath = library.path;
 | 
| +      if (filePath.replaceAll('\\', '/') == libraryPath) {
 | 
| +        String path = library.shortName;
 | 
| +        try {
 | 
| +          return new FileBasedSource.con2(parseUriWithException(path), file);
 | 
| +        } on URISyntaxException catch (exception) {
 | 
| +          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: ${path}", exception);
 | 
| +          return null;
 | 
| +        }
 | 
| +      }
 | 
| +      libraryPath = new JavaFile(libraryPath).getParent();
 | 
| +      if (filePath.startsWith("${libraryPath}${JavaFile.separator}")) {
 | 
| +        String path = "${library.shortName}/${filePath.substring(libraryPath.length + 1)}";
 | 
| +        try {
 | 
| +          return new FileBasedSource.con2(parseUriWithException(path), file);
 | 
| +        } on URISyntaxException catch (exception) {
 | 
| +          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: ${path}", exception);
 | 
| +          return null;
 | 
| +        }
 | 
| +      }
 | 
| +    }
 | 
| +    return null;
 | 
| +  }
 | 
|  
 | 
|    @override
 | 
|    AnalysisContext get context {
 | 
| @@ -419,11 +450,30 @@ class DirectoryBasedDartSdk implements DartSdk {
 | 
|  
 | 
|    @override
 | 
|    Source mapDartUri(String dartUri) {
 | 
| -    SdkLibrary library = getSdkLibrary(dartUri);
 | 
| +    String libraryName;
 | 
| +    String relativePath;
 | 
| +    int index = dartUri.indexOf('/');
 | 
| +    if (index >= 0) {
 | 
| +      libraryName = dartUri.substring(0, index);
 | 
| +      relativePath = dartUri.substring(index + 1);
 | 
| +    } else {
 | 
| +      libraryName = dartUri;
 | 
| +      relativePath = "";
 | 
| +    }
 | 
| +    SdkLibrary library = getSdkLibrary(libraryName);
 | 
|      if (library == null) {
 | 
|        return null;
 | 
|      }
 | 
| -    return new FileBasedSource.con2(new JavaFile.relative(libraryDirectory, library.path), UriKind.DART_URI);
 | 
| +    try {
 | 
| +      JavaFile file = new JavaFile.relative(libraryDirectory, library.path);
 | 
| +      if (!relativePath.isEmpty) {
 | 
| +        file = file.getParentFile();
 | 
| +        file = new JavaFile.relative(file, relativePath);
 | 
| +      }
 | 
| +      return new FileBasedSource.con2(parseUriWithException(dartUri), file);
 | 
| +    } on URISyntaxException catch (exception) {
 | 
| +      return null;
 | 
| +    }
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| @@ -531,7 +581,7 @@ class SdkLibrariesReader {
 | 
|     * @param libraryFileContents the contents from the library file
 | 
|     * @return the library map read from the given source
 | 
|     */
 | 
| -  LibraryMap readFromFile(JavaFile file, String libraryFileContents) => readFromSource(new FileBasedSource.con2(file, UriKind.FILE_URI), libraryFileContents);
 | 
| +  LibraryMap readFromFile(JavaFile file, String libraryFileContents) => readFromSource(new FileBasedSource.con1(file), libraryFileContents);
 | 
|  
 | 
|    /**
 | 
|     * Return the library map read from the given source.
 | 
| 
 |