| Index: pkg/dartdoc/lib/src/mirrors/dart2js_mirror.dart | 
| diff --git a/pkg/dartdoc/lib/src/mirrors/dart2js_mirror.dart b/pkg/dartdoc/lib/src/mirrors/dart2js_mirror.dart | 
| index f521fb63a14ed187869b84303a085840855b1544..515d39e63d5ea21dbebbcd6ecc4370b37f84eeb9 100644 | 
| --- a/pkg/dartdoc/lib/src/mirrors/dart2js_mirror.dart | 
| +++ b/pkg/dartdoc/lib/src/mirrors/dart2js_mirror.dart | 
| @@ -484,7 +484,7 @@ abstract class Dart2JsObjectMirror extends Dart2JsElementMirror | 
|  | 
| class Dart2JsLibraryMirror extends Dart2JsObjectMirror | 
| implements LibraryMirror { | 
| -  Map<String, ClassMirror> _types; | 
| +  Map<String, ClassMirror> _classes; | 
| Map<String, MemberMirror> _members; | 
|  | 
| Dart2JsLibraryMirror(Dart2JsMirrorSystem system, LibraryElement library) | 
| @@ -523,24 +523,24 @@ class Dart2JsLibraryMirror extends Dart2JsObjectMirror | 
|  | 
| String get qualifiedName => simpleName; | 
|  | 
| -  void _ensureTypes() { | 
| -    if (_types == null) { | 
| -      _types = <String, ClassMirror>{}; | 
| +  void _ensureClasses() { | 
| +    if (_classes == null) { | 
| +      _classes = <String, ClassMirror>{}; | 
| _library.forEachLocalMember((Element e) { | 
| if (e.isClass()) { | 
| e.ensureResolved(system.compiler); | 
| var type = new Dart2JsClassMirror.fromLibrary(this, e); | 
| -          assert(invariant(_library, !_types.containsKey(type.simpleName), | 
| +          assert(invariant(_library, !_classes.containsKey(type.simpleName), | 
| message: "Type name '${type.simpleName}' " | 
| "is not unique in $_library.")); | 
| -          _types[type.simpleName] = type; | 
| +          _classes[type.simpleName] = type; | 
| } else if (e.isTypedef()) { | 
| var type = new Dart2JsTypedefMirror.fromLibrary(this, | 
| e.computeType(system.compiler)); | 
| -          assert(invariant(_library, !_types.containsKey(type.simpleName), | 
| +          assert(invariant(_library, !_classes.containsKey(type.simpleName), | 
| message: "Type name '${type.simpleName}' " | 
| "is not unique in $_library.")); | 
| -          _types[type.simpleName] = type; | 
| +          _classes[type.simpleName] = type; | 
| } | 
| }); | 
| } | 
| @@ -565,9 +565,29 @@ class Dart2JsLibraryMirror extends Dart2JsObjectMirror | 
| return new ImmutableMapWrapper<String, MemberMirror>(_members); | 
| } | 
|  | 
| -  Map<String, ClassMirror> get types { | 
| -    _ensureTypes(); | 
| -    return new ImmutableMapWrapper<String, ClassMirror>(_types); | 
| +  Map<String, Mirror> get members => declaredMembers; | 
| + | 
| +  Map<String, MethodMirror> get functions { | 
| +    _ensureMembers(); | 
| +    return new FilteredImmutableMap(_members, | 
| +        (MemberMirror member) => member is MethodMirror); | 
| +  } | 
| + | 
| +  Map<String, MethodMirror> get getters { | 
| +    _ensureMembers(); | 
| +    return new FilteredImmutableMap(_members, | 
| +        (MemberMirror member) => member is MethodMirror && member.isGetter); | 
| +  } | 
| + | 
| +  Map<String, MethodMirror> get setters { | 
| +    _ensureMembers(); | 
| +    return new FilteredImmutableMap(_members, | 
| +        (MemberMirror member) => member is MethodMirror && member.isSetter); | 
| +  } | 
| + | 
| +  Map<String, ClassMirror> get classes { | 
| +    _ensureClasses(); | 
| +    return new ImmutableMapWrapper<String, ClassMirror>(_classes); | 
| } | 
|  | 
| SourceLocation get location { | 
|  |