docs: Constructor<?> getConstructorWithSizeHintForConcreteTypeOf(final Class<?> cls) {
          // Check cache
          final Constructor<?> constructor = constructorForConcreteTypeWithSizeHint.get(cls);
          if (constructor == NO_CONSTRUCTOR) {
              return null;
          } else if (constructor != null) {
              return constructor;
          }
          final Class<?> concreteType = getConcreteType(cls, /* returnNullIfNotMapOrCollection = */ true);
          if (concreteType != null) {
              for (Class<?> c = concreteType; c != null
                      && (c != Object.class || cls == Object.class); c = c.getSuperclass()) {
                  try {
                      final Constructor<?> constructorWithSizeHint = c.getDeclaredConstructor(Integer.TYPE);
                      JSONUtils.isAccessibleOrMakeAccessible(constructorWithSizeHint);
                      // Store found constructor in cache
                      constructorForConcreteTypeWithSizeHint.put(cls, constructorWithSizeHint);
                      return constructorWithSizeHint;
                  } catch (final ReflectiveOperationException | SecurityException e) {
                      // Ignore
                  }
              }
          }
          constructorForConcreteTypeWithSizeHint.put(cls, NO_CONSTRUCTOR);
          return null;
      }