Patch Set 1: Looks good to me, but someone else must approve

I still do not know if the RevObject's equality was changed on purpose.

In that case things would get complicated. We could try the trick wtih comparing classes (http://www.angelikalanger.com/Articles/JavaSolutions/SecretsOfEquals/Equals.html#Listing4) but this would be complicated because there are more than two classes in the Hierarchy. But then RevObjects and AnyObjectIds would never be equal to each other.