anchor.diff:  
   part of bindings;
   
  -int align(int size) => size + (kAlignment - (size % kAlignment)) % kAlignment;
  +int align(int size) =>
  +    size + ((kAlignment - (size & kAlignmentMask)) & kAlignmentMask);
   
   const int kAlignment = 8;
  +const int kAlignmentMask = 0x7;
  +const int kAlignmentShift = 3;
   const int kSerializedHandleSize = 4;
   const int kSerializedInterfaceSize = 8; // 4-byte handle + 4-byte version
   const int kPointerSize = 8;
  
positive.code: const StructDataHeader kMapStructHeader = const StructDataHeader(24, 0);
  const int kUnspecifiedArrayLength = -1;
  const int kNothingNullable = 0;
  const int kArrayNullable = (1 << 0);
  const int kElementNullable = (1 << 1);
  
  bool isArrayNullable(int nullability) => (nullability & kArrayNullable) > 0;
  bool isElementNullable(int nullability) => (nullability & kElementNullable) > 0;
  
negative.code:           nullability,
            expectedLength);
  
    static const _utf8Decoder = const Utf8Decoder();
  
    String decodeString(int offset, bool nullable) {
      int nullability = nullable ? kArrayNullable : 0;
      var bytes = decodeUint8Array(offset, nullability, kUnspecifiedArrayLength);
      if (bytes == null) {
        return null;
      }
      return _utf8Decoder.convert(bytes);
    }
  
    StructDataHeader decodeDataHeaderForMap() {
  