docs: public static Object instantiateModule(Provider in) throws IllegalArgumentException {
      String moduleClassName;
      if (in.getClass().isAnonymousClass()) {
        moduleClassName = in.getClass().getSuperclass().getName() + "$Module";
      } else {
        moduleClassName = in.getClass().getName() + "$Module";
      }
      Class<?> moduleClass;
      try {
        moduleClass = Class.forName(moduleClassName);
      } catch (ClassNotFoundException e) {
        throw new IllegalArgumentException(in.getClass().getName()
                                           + " should have a static inner class named Module", e);
      } catch (Exception e) {
        throw new IllegalArgumentException("exception attempting to instantiate " + moduleClassName
                                           + " for provider " + in.name(), e);
      }
      try {
        Constructor<?> ctor = moduleClass.getDeclaredConstructor();
        // allow private or package protected ctors
        ctor.setAccessible(true);
        return ctor.newInstance();
      } catch (NoSuchMethodException e) {
        throw new IllegalArgumentException("ensure " + moduleClassName + " has a no-args constructor",
                                           e);
      } catch (Exception e) {
        throw new IllegalArgumentException("exception attempting to instantiate " + moduleClassName
                                           + " for provider " + in.name(), e);
      }
    }