Comparing this with ORM [here](https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php#L249), which dates back to 2009 in [this commit](https://github.com/doctrine/doctrine2/commit/09a48a896eb3adfb1569beafab8566b69167b01e) and [DDC-34](http://www.doctrine-project.org/jira/browse/DDC-34):

```
if ($metadata->isMappedSuperclass && ! $property->isPrivate()
    || $metadata->isInheritedField($property->name)
    || $metadata->isInheritedAssociation($property->name)) {
```

ODM doesn't have an `isInheritedAssociation()` method, which is probably OK for now, since associations are already in the fields array within ClassMetadata. I don't think we need to compare class names here, since `isInheritedField()` should be sufficient.