private <X> void populateStaticMetamodel(AbstractManagedType<X> managedType) {
    final Class<X> managedTypeClass = managedType.getJavaType();
    if (managedTypeClass == null) {
      // should indicate MAP entity mode, skip...
      return;
    }
    final String metamodelClassName = managedTypeClass.getName() + "_";
    try {
      final Class metamodelClass =
          Class.forName(metamodelClassName, true, managedTypeClass.getClassLoader());
      // we found the class; so populate it...
      registerAttributes(metamodelClass, managedType);
    } catch (ClassNotFoundException ignore) {
      // nothing to do...
    }

    // todo : this does not account for @MappeSuperclass, mainly because this is not being tracked
    // in our
    // internal metamodel as populated from the annotatios properly
    AbstractManagedType<? super X> superType = managedType.getSupertype();
    if (superType != null) {
      populateStaticMetamodel(superType);
    }
  }