The problem with detecting that is that macros aren't really
statically declared. Macros are created as the template runs the
#macro directive. It's quite analogous to #assign in that regard, and
of course you can assign to the same variable twice. However, unlike
with #assign, there's trick,
It is useful to allow macro overrides, ie replace the macro and don’t throw an
exception.
As a specific use case: in Moqui for screen/form rendering (translating XML
screen/form/etc definitions to HTML, data XML, CSV, XSL-FO, etc) there are
macro libraries with around 65 macros for each