if (left && rg1.hasSymmetricalBond()){
// there is an awkward case where a site may match both sides of a bond if
// the bond is on the same agent and site eg. A(a!1),A(a!1)
return union(
collect(select(toSites(agents), siteMatchesNode(rg1, left,true)), createGraph),
collect(select(toSites(agents), siteMatchesNode(rg1, left,false)), new ShapeToRuleGraphTransformer(rg1)));
}
else
return collect(select(toSites(agents), siteMatchesNode(rg1, left)), createGraph);
}