docs: private synchronized byte[] getPseudoIEEE802MACAddress(long uniqueTimeStamp) {
  
          byte[] ieee802Addr = new byte[6];
          byte[] currentTime = String.valueOf(uniqueTimeStamp).getBytes();
          byte[] localHostAddress = null;
  
          try {
              localHostAddress = InetAddress.getLocalHost().getAddress();
          } catch (UnknownHostException u) {
              localHostAddress = new byte[] { 127, 0, 0, 1 };
          }
  
          //Use the unsigned hexadecimal representation of the hash code of the object instead
          //of the java.lang.Object#toString() to eliminate the 'java.lang.Object@' prefix
          //(see java.lang.Object#toString()) which never changes:
          byte[] inMemoryObject = Integer.toHexString(new Object().hashCode()).getBytes();
          byte[] freeMemory = String.valueOf(Runtime.getRuntime().freeMemory()).getBytes();
          byte[] totalMemory = String.valueOf(Runtime.getRuntime().totalMemory()).getBytes();
          byte[] messageDigestInput = new byte[currentTime.length + localHostAddress.length + inMemoryObject.length + freeMemory.length + totalMemory.length];
          int messageDigestInputIndex = 0;
  
          System.arraycopy(currentTime, 0, messageDigestInput, messageDigestInputIndex, currentTime.length);
          messageDigestInputIndex += currentTime.length;
  
          System.arraycopy(localHostAddress, 0, messageDigestInput, messageDigestInputIndex, localHostAddress.length);
          messageDigestInputIndex += localHostAddress.length;
  
          System.arraycopy(inMemoryObject, 0, messageDigestInput, messageDigestInputIndex, inMemoryObject.length);
          messageDigestInputIndex += inMemoryObject.length;
  
          System.arraycopy(freeMemory, 0, messageDigestInput, messageDigestInputIndex, freeMemory.length);
          messageDigestInputIndex += freeMemory.length;
  
          System.arraycopy(totalMemory, 0, messageDigestInput, messageDigestInputIndex, totalMemory.length);
  
          try {
  
              //Compute the message digest:
              MessageDigest md5 = MessageDigest.getInstance("MD5");
  
              md5.reset();
  
              System.arraycopy(md5.digest(messageDigestInput), 0, ieee802Addr, 0, 6);
          } catch (Throwable t) {
  
              //If a provider for the MD5 hash algorithm (see Java Cryptography Architecture (JCA) APIs) 
              //is not available in the run-time environment, a simple additive hash algorithm is used over the random 
              //data.  The simple additive hash algorithm is similar to that used in java.lang.String#hashCode(). 
              //That is:
              //	b[0]*31^(n-1) + b[1]*31^(n-2) + ... + b[n-1]
              //where:
              //	b[i] = i-th byte
              //	n = total number of bytes
              //	^ = exponentiation
              //Note:  It is computationally feasible for this simple additive hash algorithm to generate the same output 
              //for two different inputs.
  
              int hashCode = 0;
  
              for (int counter = 0; counter < messageDigestInput.length; counter++) {
                  hashCode = (31 * hashCode) + messageDigestInput[counter];
              }
  
              byte[] hashCodeBytes = Integer.toHexString(hashCode).getBytes();
  
              //Zero pad the hash code if less than 6 bytes:
              if (hashCodeBytes.length < 6) {
                  System.arraycopy(hashCodeBytes, 0, ieee802Addr, (6 - hashCodeBytes.length), hashCodeBytes.length);
              }
  
              //Use the last 6 bytes of the hash code which contains the most varying data and :
              else {
                  System.arraycopy(hashCodeBytes, (hashCodeBytes.length - 6), ieee802Addr, 0, 6);
              }
          }
  
          //Turn on the high order bit of the first byte:
          ieee802Addr[0] |= 0x80;
  
          return ieee802Addr;
      }