docs: protected InferredPrototype createPrototype(QualifiedActionName id,
  			boolean isVarargs, FormalParameterProvider parameters) {
  		assert parameters != null;
  		final ActionParameterTypes key = new ActionParameterTypes(isVarargs, parameters.getFormalParameterCount());
  		final Map<ActionParameterTypes, List<InferredStandardParameter>> ip = buildSignaturesForArgDefaultValues(
  				id.getDeclaringType(),
  				key.toActionPrototype(id.getActionName()).toActionId(),
  				parameters, key);
  		final List<InferredStandardParameter> op = ip.remove(key);
  		final InferredPrototype proto = new DefaultInferredPrototype(
  				id,
  				parameters,
  				key,
  				op,
  				ip);
  		final String containerID = id.getContainerID();
  		Map<String, Map<ActionParameterTypes, InferredPrototype>> c = this.prototypes.get(containerID);
  		if (c == null) {
  			c = new TreeMap<>();
  			this.prototypes.put(containerID, c);
  		}
  		Map<ActionParameterTypes, InferredPrototype> list = c.get(id.getActionName());
  		if (list == null) {
  			list = new TreeMap<>();
  			c.put(id.getActionName(), list);
  		}
  		list.put(key, proto);
  		return proto;
  	}