code: @Override
      public byte[] encodeAsBytes(long time, int sequence) {
          byte[] buffer = new byte[16];
          buffer[0] = (byte) (time >>> 56);
          buffer[1] = (byte) (time >>> 48);
          buffer[2] = (byte) (time >>> 40);
          buffer[3] = (byte) (time >>> 32);
          buffer[4] = (byte) (time >>> 24);
          buffer[5] = (byte) (time >>> 16);
          buffer[6] = (byte) (time >>> 8);
          buffer[7] = (byte) (time);
  
          long rest = shiftedMachineId | (0x0000FFFF & sequence);
          buffer[8] = (byte) (rest >>> 56);
          buffer[9] = (byte) (rest >>> 48);
          buffer[10] = (byte) (rest >>> 40);
          buffer[11] = (byte) (rest >>> 32);
          buffer[12] = (byte) (rest >>> 24);
          buffer[13] = (byte) (rest >>> 16);
          buffer[14] = (byte) (rest >>> 8);
          buffer[15] = (byte) (rest);
  
          return buffer;
      }
docs: Return a 128-bit version of the given time and sequence numbers according
  to the Flake specification.
  
  @param time     a time value to encode
  @param sequence a sequence value to encode
  @return the Flake id as bytes