code: public static boolean hasSuperClass(Class<?> clazz, Class<?> superClazz) {
          if (clazz == null || superClazz == null || clazz == superClazz) {
              return false;
          }
  
          if (clazz.isInterface()) {
              return superClazz.isAssignableFrom(clazz);
          }
  
          Class<?> parent = clazz.getSuperclass();
          while (parent != null) {
              if (parent == superClazz) {
                  return true;
              }
              parent = parent.getSuperclass();
          }
          return false;
      }
docs: Tells if a class is a sub-class of a super-class.
  
  Note:
  <ul>
  <li>Sub-class against super-class: this method returns {@code true}.</li>
  <li>Sub-interface against super-interface: this method returns
  {@code true}.</li>
  <li>Class against interface: this method returns {@code false}.</li>
  </ul>
  
  @param clazz
  class to check
  @param superClazz
  the super-class to check
  @return {@code true} if {@code superClazz} is indeed the super-class of
  {@code clazz}