| Index: sdk/lib/io/directory.dart | 
| diff --git a/sdk/lib/io/directory.dart b/sdk/lib/io/directory.dart | 
| index 60717b86e7192028c459c3dc31b551352d4a6133..ebe1353b84039131ace20e53864cb289d3e3b699 100644 | 
| --- a/sdk/lib/io/directory.dart | 
| +++ b/sdk/lib/io/directory.dart | 
| @@ -7,7 +7,7 @@ part of dart.io; | 
| /** | 
| * [Directory] objects are used for working with directories. | 
| */ | 
| -abstract class Directory { | 
| +abstract class Directory extends FileSystemEntity { | 
| /** | 
| * Creates a directory object. The path is either an absolute path, | 
| * or it is a relative path which is interpreted relative to the directory | 
| @@ -131,20 +131,22 @@ abstract class Directory { | 
| Directory renameSync(String newPath); | 
|  | 
| /** | 
| -   * List the sub-directories and files of this | 
| -   * [Directory]. Optionally recurse into sub-directories. Returns a | 
| -   * [DirectoryLister] object representing the active listing | 
| -   * operation. Handlers for files and directories should be | 
| -   * registered on this DirectoryLister object. | 
| +   * List the sub-directories and files of this [Directory]. | 
| +   * Optionally recurse into sub-directories. | 
| +   * | 
| +   * The result is a stream of [FileSystemEntity] objects | 
| +   * for the directories and files. | 
| */ | 
| -  DirectoryLister list({bool recursive: false}); | 
| +  Stream<FileSystemEntity> list({bool recursive: false}); | 
|  | 
| /** | 
| -   * List the sub-directories and files of this | 
| -   * [Directory]. Optionally recurse into sub-directories. Returns a | 
| -   * List containing Directory and File objects. | 
| +   * List the sub-directories and files of this [Directory]. | 
| +   * Optionally recurse into sub-directories. | 
| +   * | 
| +   * Returns a [List] containing [FileSystemEntity] objects for the | 
| +   * directories and files. | 
| */ | 
| -  List listSync({bool recursive: false}); | 
| +  List<FileSystemEntity> listSync({bool recursive: false}); | 
|  | 
| /** | 
| * Returns a human readable string for this Directory instance. | 
| @@ -158,49 +160,6 @@ abstract class Directory { | 
| } | 
|  | 
|  | 
| -/** | 
| - * A [DirectoryLister] represents an actively running listing operation. | 
| - * | 
| - * A [DirectoryLister] is obtained from a [Directory] object by calling | 
| - * the [:Directory.list:] method. | 
| - * | 
| - *     Directory dir = new Directory('path/to/my/dir'); | 
| - *     DirectoryLister lister = dir.list(); | 
| - * | 
| - * For each file and directory, the file or directory handler is | 
| - * called. When all directories have been listed the done handler is | 
| - * called. If the listing operation is recursive, the error handler is | 
| - * called if a subdirectory cannot be opened for listing. | 
| - */ | 
| -abstract class DirectoryLister { | 
| -  /** | 
| -   * Sets the directory handler that is called for all directories | 
| -   * during listing. The directory handler is called with the full | 
| -   * path of the directory. | 
| -   */ | 
| -  void set onDir(void onDir(String dir)); | 
| - | 
| -  /** | 
| -   * Sets the handler that is called for all files during listing. The | 
| -   * file handler is called with the full path of the file. | 
| -   */ | 
| -  void set onFile(void onFile(String file)); | 
| - | 
| -  /** | 
| -   * Set the handler that is called when a listing is done. The | 
| -   * handler is called with an indication of whether or not the | 
| -   * listing operation completed. | 
| -   */ | 
| -  void set onDone(void onDone(bool completed)); | 
| - | 
| -  /** | 
| -   * Sets the handler that is called if there is an error while | 
| -   * listing directories. | 
| -   */ | 
| -  void set onError(void onError(e)); | 
| -} | 
| - | 
| - | 
| class DirectoryIOException implements Exception { | 
| const DirectoryIOException([String this.message = "", | 
| String this.path = "", | 
|  |