code: @Pure
  	public static <C extends Capacity> C createSkillDelegatorIfPossible(Skill originalSkill, Class<C> capacity, AgentTrait capacityCaller)
  			throws ClassCastException {
  		try {
  			return Capacities.createSkillDelegator(originalSkill, capacity, capacityCaller);
  		} catch (Exception e) {
  			return capacity.cast(originalSkill);
  		}
  	}
docs: Create a delegator for the given skill when it is possible.
  
  <p>The delegator is wrapping the original skill in order to set the value of the caller
  that will be replied by {@link #getCaller()}. The associated caller is given as argument.
  
  <p>The delegator is an instance of an specific inner type, sub-type of {@link Capacity.ContextAwareCapacityWrapper},
  which is declared in the given {@code capacity}.
  
  <p>This functions assumes that the name of the definition type is the same as {@link Capacity.ContextAwareCapacityWrapper},
  and this definition extends the delegator definition of the first super type of the {@code capacity}, and implements
  all the super types of the {@code capacity}. The expected constructor for this inner type has the same
  signature as the one of {@link Capacity.ContextAwareCapacityWrapper}.
  If the delegator instance cannot be created due to to inner type not found, invalid constructor signature,
  run-time exception when creating the instance, this function replies the original skill.
  
  <p>The function {@link #createSkillDelegator(Skill, Class, AgentTrait)} is a similar function than this
  function, except that it fails when the delegator instance cannot be created.
  
  @param <C> the type of the capacity.
  @param originalSkill the skill to delegate to after ensure the capacity caller is correctly set.
  @param capacity the capacity that contains the definition of the delegator.
  @param capacityCaller the caller of the capacity functions.
  @return the delegator, or the original skill.
  @throws ClassCastException if the skill is not implementing the capacity.
  @see #createSkillDelegator(Skill, Class, AgentTrait)