An Optional can be Present, Null or Absent.
Encode a list of Optional values. Absent values are omitted.
Encode a object of Optional fields. Absent fields are omitted.
Decode a JSON object with a Optional field.
Decode a JSON object with a Optional field that can be present or absent
but not null.