anchor.diff:  Iterable<VariableMirror> publicFields(ClassMirror mirror) {
     var mine = mirror.variables.values.where(
         (x) => !(x.isPrivate || x.isStatic));
  -  var mySuperclass = mirror.superclass;
  -  if (mySuperclass != mirror) {
  -    return append(publicFields(mirror.superclass), mine);
  +  var mySuperclass = _getSuperclass(mirror);
  +  if (mySuperclass != null) {
  +    return append(publicFields(mySuperclass), mine);
     } else {
       return mine;
     }
  
positive.code:  */
  Iterable<MethodMirror> publicGetters(ClassMirror mirror) {
    var mine = mirror.getters.values.where((x) => !(x.isPrivate || x.isStatic));
    var mySuperclass = mirror.superclass;
    if (mySuperclass != mirror) {
      return append(publicGetters(mirror.superclass), mine);
    } else {
      return mine.toList();
    }
  
negative.code: export 'dart:mirrors';
  import 'serialization_helpers.dart';
  
  // TODO(alanknight): Remove this method.  It is working around a bug
  // in the Dart VM which incorrectly returns Object as the superclass
  // of Object.
  _getSuperclass(ClassMirror mirror) {
    var superclass = mirror.superclass;
    return (superclass == mirror) ? null : superclass;
  }
  
  /**
   * Return a list of all the public fields of a class, including inherited
   * fields.
  