anchor.diff:      final dynamic keys = value.keys;
       var keysValid = true;
       for (final dynamic element in keys) {
  -      if (!(element is int) &&
  -          !(element is String)) {
  +      if (!(element is int) && !(element is String)) {
           keysValid = false;
           break;
         }
  
positive.code:               ok = false;
              }
            } else {
              val.forEach(_out.putByte);
            }
            break;
          case 'Map':
            if (!indefinite) {
              final res = _writeMapImpl(val, indefinite);
              if (!res) {
                // Fail the whole encoding
                ok = false;
              }
            } else {
              val.forEach(_out.putByte);
            }
            break;
          case 'bool':
            _writeBool(val);
            break;
          case 'Null':
            _writeNull();
            break;
          case 'Uint8Buffer':
            _writeRawBuffer(val);
            break;
          case 'Uint8List':
            _writeBytes(typed.Uint8Buffer()..addAll(val));
            break;
          default:
            print('writeMapImpl::RT is ${val.runtimeType.toString()}');
            ok = false;
        }
      });
      return ok;
  
negative.code:       } else {
          _writeString(key);
        }
        // Encode the value.
        // Process the element types. Note that the sequence
        // is hierarchical, base types such as List and Map must be
        // tested for later than super types such as Uint8Buffer.
        // Split iterables and non iterables.
        if (val is Iterable) {
          if (val is typed.Uint8Buffer) {
            _writeRawBuffer(val);
          } else if (val is Uint8List) {
            _writeBytes(typed.Uint8Buffer()..addAll(val));
          } else if (val is List) {
            if (!indefinite) {
              final res = _writeArrayImpl(val, indefinite);
              if (!res) {
  