private PickResult[] pickGeomAllIntersect(PickShape pickShape) {
	SceneGraphPath[] sgp = null;
	Node obj[] = null;
	int i, cnt=0;

	// First pass
	if (pickRootBG != null) {
	    sgp = pickRootBG.pickAll(pickShape);
	} else if (pickRootL != null) {
	    sgp = pickRootL.pickAll(pickShape);
	}
	if (sgp == null) return null; // no match

	// Second pass, check to see if geometries intersected
	boolean found[] = new boolean [sgp.length];

	PickResult[] pr = new PickResult[sgp.length];
	for (i=0; i<sgp.length; i++) {
	    pr[i] = new PickResult (sgp[i], pickShape);
	    if (pr[i].numIntersections() > 0) {
		found[i] = true;
		cnt++;
	    }
	}

	if (cnt == 0) return null; // no match

	PickResult[] newpr = new PickResult[cnt];
	cnt = 0; // reset for reuse.
	for(i=0; i<sgp.length; i++) {
	    if(found[i] == true)
	    pr[cnt++] = pr[i];
	}

	return pr;
    }