Не совсем то, что вы хотите, но ...
Вы можете разделить ваш код на модули (ядро и отладка, в вашем случае), а затем убедиться, что модули вызывают друг друга с помощью отражения: используйте доступный в ядре интерфейс, создайте класс-оболочку в ядре, который будет скрывать создание экземпляров объекта с помощью детализации отражения /
Затем, на производстве, просто пропустите код отладки и сделайте так, чтобы обертка «ничего не делала», если инстанциация не удалась / когда вы установили определенный флаг.
Таким образом, ваши отладочные классы не попадут в рабочий процесс, и вам не придется «статически связываться» с ними, чтобы ваш основной производственный код не заботился.
Конечно, это возможно только в том случае, если ваш отладочный код не имеет побочных эффектов, видимых для основного кода, но, похоже, это ваш случай (из описания вашей проблемы).