code: @Override
    public <T> CpoClass getMetaClass(T obj) throws CpoException {
      CpoClass cpoClass = null;
      String className;
      String requestedName;
      List<Class<?>> classList = new ArrayList<>();
      Class<?> requestedClass;
  
      if (obj != null) {
        requestedClass = obj.getClass();
        classList.add(requestedClass);
        requestedName = requestedClass.getName();
        className = requestedName;
        cpoClass = classMap.get(className);
  
        while (cpoClass == null && !classList.isEmpty()) {
          classList = getSuperClasses(classList);
          for (Class<?> clazz : classList) {
            className = clazz.getName();
            cpoClass = classMap.get(className);
            if (cpoClass != null)
              break;
          }
        }
        if (cpoClass == null) {
          throw new CpoException("No Metadata found for class:" + requestedName);
        }
      }
  
      return cpoClass;
    }
docs: DOCUMENT ME!
  
  @param obj DOCUMENT ME!
  @return DOCUMENT ME!
  @throws CpoException DOCUMENT ME!