code: public static byte[] encodeSingleNullableDesc(byte[] value,
                                                    int prefixPadding, int suffixPadding) {
          if (prefixPadding <= 0 && suffixPadding <= 0) {
              if (value == null) {
                  return new byte[] {NULL_BYTE_LOW};
              }
  
              int length = value.length;
              if (length == 0) {
                  return new byte[] {NOT_NULL_BYTE_LOW};
              }
  
              byte[] dst = new byte[1 + length];
              dst[0] = NOT_NULL_BYTE_LOW;
              while (--length >= 0) {
                  dst[1 + length] = (byte) (~value[length]);
              }
              return dst;
          }
  
          if (value == null) {
              byte[] dst = new byte[prefixPadding + 1 + suffixPadding];
              dst[prefixPadding] = NULL_BYTE_LOW;
              return dst;
          }
  
          int length = value.length;
          byte[] dst = new byte[prefixPadding + 1 + length + suffixPadding];
          dst[prefixPadding] = NOT_NULL_BYTE_LOW;
          while (--length >= 0) {
              dst[prefixPadding + 1 + length] = (byte) (~value[length]);
          }
          return dst;
      }
docs: Encodes the given byte array for use when there is only a single
  nullable property, descending order, whose type is a byte array.
  
  @param prefixPadding amount of extra bytes to allocate at start of encoded byte array
  @param suffixPadding amount of extra bytes to allocate at end of encoded byte array