private void Dispose (bool disposing)
		{
			// do this first so that no more events will fire
			OnButtonStateChange = null;

			if (disposing)
			{
				// manually dispose of any directly referenced resources
				m_Listener.OnButtonStateChange -= m_AgentButtonListener;
			}

			m_Listener = null;
		}
		public CombinationAgentButtonListener (AgentButtonListener listener, params AgentButton[] buttons)
		{
			if (listener == null)
				throw new ArgumentNullException ("listener");

			m_Listener = listener;

			m_ButtonToStateMap = new Hashtable();
			foreach (var b in AgentButton.Empty.GetAll ())
				m_ButtonToStateMap[b] = AgentButtonState.Up;

			listener.StartListeningTo (buttons);
			m_AgentButtonListener = OnAgentButtonListenerPressed;
			listener.OnButtonStateChange += m_AgentButtonListener;
        }