Parameterize all types excluding a certain type

Just for completeness I am posting the macro I am talking about here:

macro custom_order(lt_func)
      ordering_type = lt_func.args[1].args[2].args[1]
      unwrap_node_lt_func = quote
          Base.Order.lt(
              o::$ordering_type, 
              a::MergedIterators.MergedIteratorStateNode, 
              b::MergedIterators.MergedIteratorStateNode
          ) = Base.Order.lt(o, a.value, b.value)
      end
  
      quote
          $(esc(lt_func))
          $(esc(unwrap_node_lt_func))
      end
end

Here lt_func is the user defined baz. unwrap_node_lt_func is an auto-defined method to remove ambiguity. It ends up being defined by the user through the use of the library provided macro. MergedIterator.MergedIteratorStateNode is Foo. And finally ordering_type is Bar1.

Example use would be:

struct AbsOrder <: Base.Order.Ordering end
@custom_order Base.Order.lt(::AbsOrder, a, b) = Base.Order.lt(Base.Order.Forward, abs(a), abs(b))