FIX dictionary behaviour
@type subject_field() :: String.t() | {String.t(), String.t()} | nil
@callback subject(msg_type :: String.t()) :: subject_field()