     /// Returns the index offset by `distance` from `index`.
     @inlinable
     public func index(_ i: Index, offsetBy distance: Int) -> Index {
-        return .init(backingIndex: (i.backingIndex + distance) & self.mask,
+        return .init(backingIndex: (i.backingIndex &+ distance) & self.mask,
                      backingCount: self.count,
                      backingIndexOfHead: self.headBackingIndex)
     }


        switch (start.isIndexGEQHeadIndex, end.isIndexGEQHeadIndex) {
        case (true, true):
            return end.backingIndex - start.backingIndex
        case (true, false):
            return backingCount - (start.backingIndex - end.backingIndex)
        case (false, true):
            return -(backingCount - (end.backingIndex - start.backingIndex))
        case (false, false):
            return end.backingIndex - start.backingIndex
        }
    }
}

    @inlinable
    public var count: Int {
        if self.tailBackingIndex >= self.headBackingIndex {
            return self.tailBackingIndex &- self.headBackingIndex
        } else {
            return self._buffer.count &- (self.headBackingIndex &- self.tailBackingIndex)
        }
    }

