code: private boolean hasAccessibleZeroArgConstructor(Class<?> rawType) {
      Constructor<?> constructor;
      try {
        constructor = rawType.getDeclaredConstructor();
      } catch (NoSuchMethodException e) {
        return rawType.getDeclaredConstructors().length == 0;
      }
  
      return !ReflectUtil.isPrivate(constructor) || ReflectUtil.isPrivate(rawType);
    }
docs: Returns true iff the passed type has a constructor with zero arguments
  (default constructors included) and that constructor is non-private,
  excepting constructors for private classes where the constructor may be of
  any visibility.
  
  @param typeLiteral type to be checked for matching constructor
  @return true if a matching constructor is present on the passed type