name() :: atom() | binary()
t() :: %Grumble.ObjectSpread{fields: term(), name: name()}
new(name :: name(), set :: list()) :: t()
set(query :: t(), set :: list()) :: t()