protected void TestInvoker(DomainConfiguration domainConfiguration, Action <Domain> domainValidationAction, Action <DomainModelDef> domainDefsValidationAction)
        {
            domainConfiguration.Types.Register(typeof(ModelDefCapturer));

            var upgradeContext = new UpgradeContext(domainConfiguration);

            if (shouldBuildRealDomain)
            {
                using (var domain = Domain.Build(domainConfiguration)) {
                    var modelDef = domain.Extensions.Get <DomainModelDef>();
                    if (domainDefsValidationAction != null && modelDef != null)
                    {
                        domainDefsValidationAction.Invoke(modelDef);
                    }

                    if (domainValidationAction != null)
                    {
                        domainValidationAction.Invoke(domain);
                    }
                }
            }
            else
            {
                using (upgradeContext.Activate())
                    using (upgradeContext.Services) {
                        BuildServices(upgradeContext);
                        var domain   = CreateDomainBuilder(upgradeContext).Invoke();
                        var modelDef = domain.Extensions.Get <DomainModelDef>();
                        if (domainDefsValidationAction != null && modelDef != null)
                        {
                            domainDefsValidationAction.Invoke(modelDef);
                        }
                        if (domainValidationAction != null)
                        {
                            domainValidationAction.Invoke(domain);
                        }
                    }
            }
        }