
Why AI Agents Get JVM Codebases Wrong — and How Bytecode Changes That
Your AI agent just confidently told you which methods call AbClient.getOption() . It listed six call sites. The actual number is nineteen. The other thirteen are there — just not visible from source code. Some constants are defined in separate modules and passed across class boundaries. Some calls go through Kotlin inline functions that got expanded by the compiler. Some are hidden behind synthetic bridge methods generated for lambda captures. The agent read the source. The source lied. The Wrong Layer Most code intelligence tools — GitNexus, code-review-graph, and the rest — are built on Tree-sitter . Tree-sitter is excellent at what it does: it parses syntax, fast, incrementally, with error tolerance. It's why your editor highlights code correctly while you're still typing. But syntax is the wrong layer for understanding what code does . Tree-sitter sees one file at a time, with no type resolution and no cross-file dataflow. Feed it a Spring Boot monolith and ask "what calls this met
Continue reading on Dev.to
Opens in a new tab



