key() :: String.t()
t() :: value()
value() :: String.t() | nil | boolean() | integer() | float() | %{optional(key()) => value()} | [value()]
valid?(term()) :: boolean()