code: public byte[] encode() {
          byte[] bytes;
          switch (sizeOf(value)) {
              case 1:
                  return new byte[]{(byte) value};
              case 3:
                  bytes = new byte[3];
                  bytes[0] = (byte) 253;
                  Utils.uint16ToByteArrayLE((int) value, bytes, 1);
                  return bytes;
              case 5:
                  bytes = new byte[5];
                  bytes[0] = (byte) 254;
                  Utils.uint32ToByteArrayLE(value, bytes, 1);
                  return bytes;
              default:
                  bytes = new byte[9];
                  bytes[0] = (byte) 255;
                  Utils.int64ToByteArrayLE(value, bytes, 1);
                  return bytes;
          }
      }
docs: Encodes the value into its minimal representation.
  
  @return the minimal encoded bytes of the value