Boomerang is an efficient and precise demand-driven pointer analysis for Java. It achieves efficiency by propagating pointer relations in a distributive manner. For more details see our ECOOP2016 publication on Boomerang.
We recently redesigned Boomerang based on Synchronized Pushdown Systems (SPDS). SPDS are an efficient replace for $k$-limited access paths or access graphs, the original heap model Boomerang relied on.
The implementation based on SPDS is found here.
The old implementation is found here.