code: public T decode(byte[] buffer) {
          if (buffer == null) {
              throw new InvalidArgument("buffer", buffer);
          } else if (buffer.length != size) {
              final String fmt = "cannot decode %s bytes, expected %d";
              final String msg = format(fmt, buffer.length, size);
              throw new InvalidArgument(msg);
          }
  
          if (nullable) {
              final byte[] nullValue = getNullValue();
              if (Arrays.equals(buffer, nullValue)) {
                  return null;
              }
          }
  
          return decodeData(buffer);
      }
docs: Decodes the column's {@code byte[]} buffer.
  <p>
  A {@code null} is returned if the column is nullable and the
  {@code byte[]} buffer equals {@link Column#getNullValue() nullValue}.
  </p>
  
  @param buffer {@code byte[]} of size {@link #getSize()}
  @return {@code <T>}
  @throws InvalidArgument Thrown if {@code buffer} is null or its length is
  not equal to {@link #getSize()}