anchor.diff:     * Constructs a bit list of the given [length].
      */
     factory BitList(int length) {
  -    return new BitList._(new Uint32List((length + 31) >> 5), length);
  +    return new BitList._(new Uint32List((length + _OFFSET) >> _SHIFT), length);
     }
   
     /**
      * Constucts a new list from a given [BitList] or list of booleans.
      */
     factory BitList.fromList(List<bool> list) {
  -    var buffer = new Uint32List((list.length + 31) >> 5);
  +    var buffer = new Uint32List((list.length + _OFFSET) >> _SHIFT);
       if (list is BitList) {
         buffer.setAll(0, list._buffer);
       } else {
         for (var index = 0; index < list.length; index++) {
           if (list[index]) {
  -          buffer[index >> 5] |= _SET_MASK[index & 31];
  +          buffer[index >> _SHIFT] |= _SET_MASK[index & _OFFSET];
           }
         }
       }
  
positive.code:  */
  class BitList extends ListBase<bool> with FixedLengthListMixin<bool>  {
  
    static final _SET_MASK = new Uint32List.fromList([1, 2, 4, 8,
        16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
        32768, 65536, 131072, 262144, 524288, 1048576, 2097152,
  
negative.code:   void operator []= (int index, bool value) {
      if (0 <= index && index < length) {
        if (value) {
          _buffer[index >> _SHIFT] |= _SET_MASK[index & _OFFSET];
        } else {
          _buffer[index >> _SHIFT] &= _CLR_MASK[index & _OFFSET];
        }
      } else {
        throw new RangeError.range(index, 0, length);
  