/** Intended to be called within {@link #introspectTypeHierarchyAndMembers()} . */
 protected void updateSuperclass(final Class<?> superclass) {
   if (superclass == null) {
     return;
   }
   superclassSpec = getSpecificationLookup().loadSpecification(superclass);
   if (superclassSpec != null) {
     if (LOG.isDebugEnabled()) {
       LOG.debug("  Superclass " + superclass.getName());
     }
     updateAsSubclassTo(superclassSpec);
   }
 }
  public ObjectSpecificationAbstract(
      final Class<?> introspectedClass,
      final String shortName,
      final SpecificationContext specificationContext,
      final ObjectMemberContext objectMemberContext) {

    this.correspondingClass = introspectedClass;
    this.fullName = introspectedClass.getName();
    this.shortName = shortName;

    this.isAbstract = ClassExtensions.isAbstract(introspectedClass);
    this.identifier = Identifier.classIdentifier(introspectedClass);

    this.deploymentCategory = specificationContext.getDeploymentCategory();
    this.authenticationSessionProvider = specificationContext.getAuthenticationSessionProvider();
    this.servicesProvider = specificationContext.getServicesProvider();
    this.objectInstantiator = specificationContext.getObjectInstantiator();
    this.specificationLookup = specificationContext.getSpecificationLookup();
    this.facetProcessor = specificationContext.getFacetProcessor();

    this.objectMemberContext = objectMemberContext;
  }