The 'this' escape analyzer takes forever analyzing this class:
```
public class Test {
private Object obj;
public Test() {
getObject();
}
private Object getObject() {
if (this.obj == null) {
this.obj = new Object();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
getObject().hashCode();
}
return this.obj;
}
}
```
The problem is that the recursion detector keys on the method call site, not the target method itself, so if there are multiple recursive call sites inside the target method then you end up recursing through all possible combinations of call sites before stopping the recursion.
The fix is simple - key on the method itself, not the call site.