dkl - 2012-09-23

SWAP will now check not only whether l = r would work, but also whether r = l would work. That way it can be "inheritance-aware" now, but it really should have done the check that way from the beginning.