macro_rules! application {
    (
        $self:ident: $Provider:ident
        $(init [
            $($JobIterable:block $(as [$ProvidedJobType:ident])?,)*
            $($Job:ty $(as $JobType:ident)?),*$(,)?
        ])?
        $(services [
            $($SvcIterable:block $(as [$ProvidedSvcType:ident])?,)*
            $($Svc:ty $(as $SvcType:ident)?),*$(,)?
        ])?
        $(components [
            // $($Component:ty $(: $ComponentType:ident)?),+$(,)?
            $($Component:ty $(as $DynTrait:ty)?),+$(,)?
        ])?
        $(provided {
            $($($Provided:ty),+: $logic:expr),+$(,)?
        })?
    ) => { ... };
}