Это на самом деле чрезвычайно сложная проблема для решения.
Когда вы получаете AST для программы, вы получаете статическую информацию о структуре программы, а не динамическую информацию о реальном выполнении программы.,На самом деле, общая проблема «учитывая исходный код для этой программы, какую последовательность вызовов методов она сделает?» неразрешимо , что означает, что ни один алгоритм, независимо от того, насколько он умный, не всегда сможет правильно получить ответ на этот вопрос.Во-первых, вы можете попытаться аппроксимировать серию вызовов методов, заканчивая ответом, который дает вам что-то близкое к истинному ответу, но не правильно покрывает все случаи.Во-вторых, вы можете попробовать запустить программу и отслеживать, какие функции вызываются, написав своего рода плагин JVM, возможно, через JVMTI.