public void Activate(IEnumerable <IPackageInfo> packages, IPackageLog log)
        {
            _templates.Each(t =>
            {
                var context = new AttachRequest <T>
                {
                    Template = t,
                    Logger   = TemplateLogger.Default()
                };

                _attachers.Where(a => a.CanAttach(context)).Each(a => a.Attach(context));
            });
        }
        public void Compose(ITemplateRegistry <T> templates)
        {
            templates.Each(t =>
            {
                var bindRequest = new BindRequest <T>
                {
                    Target           = t,
                    Parsing          = _parsings.ParsingFor(t),
                    Types            = _types,
                    TemplateRegistry = templates,
                    Logger           = TemplateLogger.Default()
                };

                var binders  = _binders.Where(x => x.CanBind(bindRequest));
                var policies = _policies.Where(x => x.Matches(t));

                binders.Each(binder => binder.Bind(bindRequest));
                policies.Each(policy => policy.Apply(t));
            });
        }