code: public String newSessionId(long seedTerm) {
          synchronized (random) {
              long r0;
              if (weakRandom) {
                  r0 = hashCode() ^ Runtime.getRuntime().freeMemory() ^ random.nextInt() ^ (seedTerm << 32);
              } else {
                  r0 = random.nextLong();
              }
              if (r0 < 0) {
                  r0 = -r0;
              }
  
              long r1;
              if (weakRandom) {
                  r1 = hashCode() ^ Runtime.getRuntime().freeMemory() ^ random.nextInt() ^ (seedTerm << 32);
              } else {
                  r1 = random.nextLong();
              }
              if (r1 < 0) {
                  r1 = -r1;
              }
  
              StringBuilder id = new StringBuilder();
              if (!StringUtils.isEmpty(groupName)) {
                  id.append(groupName);
              }
              id.append(Long.toString(r0,36));
              id.append(Long.toString(r1,36));
              id.append(counter.getAndIncrement());
              return id.toString();
          }
      }
docs: Returns a new unique session id.
  
  @param seedTerm the seed for RNG
  @return a new unique session id