Nitpick, but that's a double write to _value.
```D
        uint n = countTrailingZeros(value);
        _index = startIndex + n;
        _value = value >>> n;
```