protected void RegisterCore <TDiagnostic>(TDiagnostic diagnostic) where TDiagnostic : IDiagnostic { configuration.@Do(cfg => { cfg.Register(() => diagnostic); factory.@Do(f => { var spec = f(null).Unwrap(); modifier.@Do(m => spec = m(spec)); cfg.Register <T, TDiagnostic>(spec); }); }); }