private void OnAgentButtonListenerPressed (AgentButton button, InterruptPort port, AgentButtonState state, DateTime time)
{
var previousPressedButtons = GetPressedButtons ();
m_ButtonToStateMap[button] = state;
var currentPressedButtons = GetPressedButtons ();
if (OnButtonStateChange == null) return; // no listeners
OnButtonStateChange (previousPressedButtons, currentPressedButtons, button, state, time);
}