public void AcceptOnLevel(IModifier<ICharacter> modifier) { if (Experience.Level <= Experience.MaxLevel) { modifier.ModifyOnLevel(this); } else { throw new InvalidOperationException("The character must be able to level to be modified by ModifyOnLevel"); } }