code: protected void deregisterSuperClassMultipleJoinedTables(ClassDescriptor cld)
      {
          try
          {
              Class currentClass = cld.getClassOfObject();
              synchronized(descriptorTable)
              {
                  // first remove registered sub-classes for current class
                  List subClasses = (List) superClassMultipleJoinedTablesMap.remove(currentClass);
                  if(subClasses != null && log.isDebugEnabled())
                  {
                      log.debug("(MultipleJoinedTables): Deregister class " + currentClass
                              + " with sub classes " + subClasses);
                  }
                  if(cld.getBaseClass() != null)
                  {
                      // then remove sub-class entry of current class for super-class
                      Class superClass = ClassHelper.getClass(cld.getBaseClass());
                      subClasses = (List) superClassMultipleJoinedTablesMap.get(superClass);
                      if(subClasses != null)
                      {
                          boolean removed = subClasses.remove(currentClass);
                          if(removed && log.isDebugEnabled())
                          {
                              log.debug("(MultipleJoinedTables): Remove sub-class entry '" + currentClass
                              + "' in mapping for class '" + superClass + "'");
                          }
                      }
                  }
              }
          }
          catch(Exception e)
          {
              throw new MetadataException("Can't deregister super class '" + cld.getBaseClass()
                      + "' for class-descriptor: " + cld, e);
          }
      }
docs: Internal used! Deregister sub-classes of specified class when mapping to multiple joined tables
  is used. Normally this method is called when {@link #remove(Class)} a class.
  
  @param cld The {@link ClassDescriptor} of the class to register.