docs: @Override
      protected int next(int bits)
      {
          try
          {
              lock.lock();
              index = (index + 1) & 4095;
              long t = A * (state[index] & 0xFFFFFFFFL) + carry;
              carry = (int) (t >> 32);
              int x = ((int) t) + carry;
              if (x < carry)
              {
                  x++;
                  carry++;
              }
              state[index] = 0xFFFFFFFE - x;
              return state[index] >>> (32 - bits);
          }
          finally
          {
              lock.unlock();
          }
      }