Value joinObject = ((InstanceInvokeExpr) (join).getInvokeExpr()).getBase();
// If startObject and joinObject MUST be the same, and if join post-dominates start
List barriers = new ArrayList();
barriers.addAll(g.getSuccsOf(join)); // definitions of the start variable are tracked until they pass a join
if( lif.areEqualUses( start, (Local) startObject, join, (Local) joinObject, barriers) )
{
if((pd.getDominators(start)).contains(join)) // does join post-dominate start?
{
// G.v().out.println("START-JOIN PAIR: " + start + ", " + join);
startToJoin.put(start, join); // then this join always joins this start's thread