docs: Constructor<?> getDefaultConstructorForConcreteTypeOf(final Class<?> cls) {
          if (cls == null) {
              throw new IllegalArgumentException("Class reference cannot be null");
          }
          // Check cache
          final Constructor<?> constructor = defaultConstructorForConcreteType.get(cls);
          if (constructor != null) {
              return constructor;
          }
          final Class<?> concreteType = getConcreteType(cls, /* returnNullIfNotMapOrCollection = */ false);
          for (Class<?> c = concreteType; c != null
                  && (c != Object.class || cls == Object.class); c = c.getSuperclass()) {
              try {
                  final Constructor<?> defaultConstructor = c.getDeclaredConstructor();
                  JSONUtils.isAccessibleOrMakeAccessible(defaultConstructor);
                  // Store found constructor in cache
                  defaultConstructorForConcreteType.put(cls, defaultConstructor);
                  return defaultConstructor;
              } catch (final ReflectiveOperationException | SecurityException e) {
                  // Ignore
              }
          }
          throw new IllegalArgumentException("Class " + cls.getName() //
                  + " does not have an accessible default (no-arg) constructor");
      }