changeset( {map(), map()} | %{ :__struct__ => atom() | %{__changeset__: map()}, optional(atom()) => any() }, :invalid | %{optional(:__struct__) => none(), optional(atom() | binary()) => any()} ) :: Ecto.Changeset.t()