public IExceptionPolicyGroup Provide()
        {
            var hBuilder = new DefaultPolicyDefinitionBuilderProxy <TSrc>();
            var nBuilder = new RegularPolicyDefinitionBuilderProxy <TSrc>();

            var defaultPolicyDefinition = Provide(hBuilder);

            var defaultPolicy = defaultPolicyDefinition.CreatePolicy();

            var policyDict = new Dictionary <string, IExceptionPolicy>
            {
                { defaultPolicyDefinition.Context, defaultPolicy }
            };

            var regularPolicyDefinitions = Provide(nBuilder) ?? Enumerable.Empty <CompletePolicyDefinition <TSrc, TDst> >();

            foreach (var regularPolicyDefinition in regularPolicyDefinitions)
            {
                var regularPolicy = regularPolicyDefinition.CreatePolicy();
                policyDict.Add(regularPolicyDefinition.Context, regularPolicy);
            }

            return
                (new ExceptionPolicyGroup <TSrc>(
                     new ReadOnlyDictionary <string, IExceptionPolicy>(policyDict)));
        }
 /// <inheritdoc />
 protected override IEnumerable <CompletePolicyDefinition <AppleException, PearException> > Provide(RegularPolicyDefinitionBuilderProxy <AppleException> builderProxy)
 {
     yield return(builderProxy.SetTargetForContext <PearException>("red wine")
                  .StartAndComplete(c => c.Set <Handler3>())
                  .WithoutTerminator());
 }
 Provide(RegularPolicyDefinitionBuilderProxy <TSrc> builderProxy);