t() :: %Errx{context: term(), error: term(), file: term(), func: term()}
first(any()) :: t()
match(any(), any()) :: boolean()
wrap(any()) :: t()
wrap(any(), any()) :: t()