A Thrift union
Unions can have one field set at a time.
t() :: %Thrift.Parser.Models.Union{fields: %{optional(String.t) => %Thrift.Parser.Models.Field{default: term, id: term, name: term, required: term, type: term}}, name: String.t}
new(charlist, [%Thrift.Parser.Models.Field{default: term, id: term, name: term, required: term, type: term}, ...]) :: %Thrift.Parser.Models.Union{fields: term, name: term}