subject() :: {atom(), module()}
t() :: %ExState.Definition.Chart{ initial_state: atom(), name: String.t(), participants: [atom()], states: %{required(String.t()) => ExState.Definition.State.t()}, subject: subject() | nil }