Не взломать. Примеры старые / вводящие в заблуждение (что-либо, использующее Method.setAccessible(true)
, всегда является хаком), но посетитель com.sun.tools.javac.tree.TreeScanner
и фабрика TreeMaker
так же официальны, как и API javac.
Из их javadoc:
Это НЕ является частью какого-либо поддерживаемого API. Если вы пишете код, который зависит от этого, вы делаете это на свой страх и риск. Этот код и его внутренние интерфейсы могут быть изменены или удалены без уведомления.
Это их свобода вводить новшества без компилятора , ставшего обратно совместимым беспорядком, подобным основному JLS /JDK иногда есть. Вы можете понять, почему им понадобится это заявление, и я не считаю это хаком, а предупреждением о том, какое количество будущего обслуживания вам может понадобиться со временем. ИМХО подклассификация TreeScanner
вполне учитывает будущие языковые изменения, и я не ожидаю фундаментальных несовместимостей по мере появления новых языковых функций.