code: public ClassDescriptor findFirstConcreteClass(ClassDescriptor cld)
      {
          if(m_firstConcreteClassMap == null)
          {
              m_firstConcreteClassMap = new HashMap();
          }
          ClassDescriptor result = (ClassDescriptor) m_firstConcreteClassMap.get(cld.getClassNameOfObject());
          if (result == null)
          {
              if(cld.isInterface() || cld.isAbstract())
              {
                  if(cld.isExtent())
                  {
                      List extents = cld.getExtentClasses();
                      for (int i = 0; i < extents.size(); i++)
                      {
                          Class ext = (Class) extents.get(i);
                          result = findFirstConcreteClass(getDescriptorFor(ext));
                          if(result != null) break;
                      }
                  }
                  else
                  {
                      LoggerFactory.getDefaultLogger().error("["+this.getClass().getName()+"] Found interface/abstract class" +
                              " in metadata declarations without concrete class: "+cld.getClassNameOfObject());
                  }
                  m_firstConcreteClassMap.put(cld.getClassNameOfObject(), result);
              }
              else
              {
                  result = cld;
              }
          }
          return result;
      }
docs: Return the first found concrete class {@link ClassDescriptor}.
  This means a class which is not an interface or an abstract class.
  If given class descriptor is a concrete class, given class descriptor
  was returned. If no concrete class can be found <code>null</code> will be
  returned.