code: public static byte[] decodeSingleNullableDesc(byte[] src, int prefixPadding, int suffixPadding)
          throws CorruptEncodingException
      {
          try {
              byte b = src[prefixPadding];
              if (b == NULL_BYTE_HIGH || b == NULL_BYTE_LOW) {
                  return null;
              }
              int length = src.length - suffixPadding - 1 - prefixPadding;
              if (length == 0) {
                  return EMPTY_BYTE_ARRAY;
              }
              byte[] dst = new byte[length];
              while (--length >= 0) {
                  dst[length] = (byte) (~src[1 + prefixPadding + length]);
              }
              return dst;
          } catch (IndexOutOfBoundsException e) {
              throw new CorruptEncodingException(null, e);
          }
      }
docs: Decodes the given byte array which was encoded by {@link
  KeyEncoder#encodeSingleNullableDesc}. Always returns a new byte array
  instance.
  
  @param prefixPadding amount of extra bytes to skip from start of encoded byte array
  @param suffixPadding amount of extra bytes to skip at end of encoded byte array