/// <summary> /// Applies the specified effect on the given state (modifies him!). /// </summary> /// <param name="effect">Effect for the application.</param> /// <param name="state">State.</param> /// <param name="substitution">Variables substitution.</param> public void Apply(IEffect effect, IState state, ISubstitution substitution) { State = state; Substitution = substitution; effect.Accept(this); Substitution = null; State = null; }