docs: public Double nextValue()
      {
          double u;
          do
          {
              // Get a uniformly-distributed random double between
              // zero (inclusive) and 1 (exclusive)
              u = rng.nextDouble();
          } while (u == 0d); // Reject zero, u must be positive for this to work.
          return (-Math.log(u)) / rate.nextValue();
      }