public void nextBytes(byte[] out, int offset, int length)
   throws IllegalStateException, LimitReachedException {
      if (out == null) {
         return;
      }

      if (!initialised) {
         throw new IllegalStateException();
      }

      if (offset < 0 || offset >= out.length || length < 1) {
         return;
      }

      int limit = ((offset+length) > out.length ? out.length-offset : length);
      for (int i = 0; i < limit; i++) {
         out[offset++] = nextByteInternal();
      }
   }