Redefinition of _MainTex_ST in surface shader

Hi,
I am writing a system that covers multiple render pipelines and I’m having a bit of a problem with Surface Shader in the built-in render pipeline, although I’ve also encountered a similar issue using Shader Graphs.

The problem is that _MainTex and _MaintTex_ST are kind of built in but also, not.

As part of the system I’m writing, I have some macros that declare decoration around variables (stringified #defs, that sort of thing) and as part of this, I declare the _ST suffix as part of my definition table as this is required by the system. The trouble is, if I do this I receive this error:

redefinition of '_MainTex_ST'

So then I tried doing a special version of my member uniform declaration for pre-defined types. Then, annoyingly, I receive this error:

undeclared identifier '_MainTex_ST'

This is a surface shader, so I presume that in passes behind the scenes, some #include is automagically being included and in others, it isn’t. One solution to my problem would be if I could identify the passes that either include or don’t whatever is being included.
I’ve tried replacing ‘CGPROGRAM’ with ‘HLSLPROGRAM’ as I’ve read that includes less in the background but then I receive errors regarding types like ‘fixed4’ (Again, in the code before my code, in a place I can’t access, including ‘HLSLsupport’ or defining ‘fixed4’ myself does nothing to fix the error)

Finally, I could just redefine ‘_MainTex’ as ‘_MainTex2’ or whatever and make my code aware of this hack but I want this shader to be a drop in replacement and to follow conventions. Unfortunately, the shader system scaffolding (and this applies to ShaderGraph as well, I recall having similar problems there a while back) makes this difficult with hidden definitions that aren’t even consistent across shader passes.