anchor.diff:    }
   
     /**
  -   * Returns the the bits of the receiver shifted to the right by [amount].
  +   * Returns a [BitList] of the same length, but with the bits of the receiver shifted
  +   * to the right by [amount]. Throws an [ArgumentError] if [amount] is negative.
      */
     BitList operator >> (int amount) {
       if (amount < 0) {
  -      throw new ArgumentError('Unable to shift by $amount');
  +      throw new ArgumentError('Unable to right-shift by $amount');
       }
       if (amount == 0 || _length == 0) {
         return new BitList.fromList(this);
  
positive.code:         result._buffer[i] = _buffer[i - shift];
        }
      } else {
        var suboffset = 1 + _OFFSET - offset;
        for (var i = shift + 1; i < _buffer.length; i++) {
          result._buffer[i] = ((_buffer[i - shift] << offset) & _MASK)
                            | ((_buffer[i - shift - 1] >> suboffset) & _MASK);
        }
        if (shift < _buffer.length) {
          result._buffer[shift] = (_buffer[0] << offset) & _MASK;
  
negative.code:   }
  
    /**
     * Returns a [BitList] of the same length, but with the bits of the receiver shifted
     * to the left by [amount]. Throws an [ArgumentError] if [amount] is negative.
     */
    BitList operator << (int amount) {
      if (amount < 0) {
        throw new ArgumentError('Unable to left-shift by $amount');
      }
      if (amount == 0 || _length == 0) {
        return new BitList.fromList(this);
  