It is an obvious fact that every P8 ObjectStore has its own class hierarchy. This class tree also contains all user defined classes as sub classes of "Document", "Folder", "CustomObject" and others.
But only a few people are aware that the P8 Domain has its own class hierarchy. Here you can find the classes of objects that are defined in the entire domain for all ObjectStores, like MarkingSets. Objects in an ObjectStore can reference objects in the domain (e.g. a PropertyDescription references a MarkingSet) and vice versa. But this domain class hierarchy also needs to contain the basic P8 classes like GenericObject, ClassDescription or PropertyDescription. And these classes even have the same ID in the Domain class hierarchy and the ObjectStore class hierarchy. So you end up with two different ClassDescriptions for the classes "GenericObject", "ClassDescription" and "PropertyDescription" each with idendical name and ID. Only when investigating properties like "SubClasses" you will notice the difference.
The FileNet Daphne API distinguishes between both by the "scope". When invoking the fetchInstance method in the Object Factory, you need to pass either a Domain or an ObjectStore object as scope.