Structure for working with closures as ASTs
code_type() :: :one_arg_pipe
t() :: %Pathex.Builder.Code{ code: Macro.t(), vars: [{atom(), list(), atom() | nil}] | [] }
multiple_to_fn([{atom(), t()}]) :: Macro.t()
new_one_arg_pipe(Macro.t()) :: t()
to_def(t(), atom()) :: Macro.t()
to_fn(t()) :: Macro.t()