@type t() :: %Macfly.Options{ caveat_types: %{required(integer()) => Macfly.Caveat.t()}, location: String.t() }
@spec with_caveats(t(), [module()]) :: t()