t() :: %Optimal.Schema{ allow_values: Keyword.t(), custom: Keyword.t(), defaults: Keyword.t(), extra_keys?: boolean(), opts: [atom() | {atom(), term()}], required: [], types: Keyword.t() }
merge(t(), t()) :: t()
new() :: t()
new(Keyword.t() | t()) :: t() | no_return()