/// <summary>
 /// Is the specified state allowed?
 /// </summary>
 /// <param name="state"></param>
 /// <returns>True if allowed</returns>
 public bool IsAllowed(State state)
 {
     return m_states.Contains(state);
 }
 /// <summary>
 /// Remove a state
 /// </summary>
 /// <param name="state"></param>
 public void RemoveState(State state)
 {
     if (m_states.Contains(state))
         m_states.Remove(state);
 }
 /// <summary>
 /// Add a state
 /// </summary>
 /// <param name="state"></param>
 public void AddState(State state)
 {
     if (!m_states.Contains(state))
         m_states.Add(state);
 }