[Soc2014] Official meta API

The repeated special-casing of `if self.is_reverse_object` here seems like it's crying out for all the classes that set `is_reverse_object = True` to have a common `ReverseObject` base that overrides all these flags.