switch(data.command.name)
Debug.Log("I know I created this as a GameEvent ... no need to cast here");
data.command.Invoke(this);
Debug.Log("I know I created this as a StringGameEvent");
((StringGameEvent)data.command).Invoke(this, data.argument);
Debug.Log("I know I created this as something :)");