anchor.diff:      var ok = true;
       value.forEach((key, val) {
         // Encode the key, can now only be ints or strings.
  -      if (key is int) {
  +      final keyType = key.runtimeType;
  +      if (keyType is int) {
           _writeInt(key);
         } else {
           _writeString(key);
         }
         // Encode the value
         var valType = val.runtimeType;
  -      if (val is List && val is! Uint8List) {
  +      if ((valType is List) && (valType is! Uint8List)) {
           valType = List;
         }
  -      if (val is Map) {
  +      if (valType is Map) {
           valType = Map;
         }
         switch (valType) {
  
positive.code:     final dynamic keys = value.keys;
      var keysValid = true;
      for (final dynamic element in keys) {
        if (element is! int && element is! String) {
          keysValid = false;
          break;
        }
  
negative.code:     var ok = true;
      for (final dynamic element in value) {
        var valType = element.runtimeType;
        if ((valType is List) && (valType is! Uint8List)) {
          valType = List;
        }
        if (valType is Map) {
          valType = Map;
        }
        switch (valType) {
  