HandlerExtensionsUtil
using Castle.Core;
using System;
using System.Collections.Generic;
namespace Castle.MicroKernel.Handlers
{
    public static class HandlerExtensionsUtil
    {
        public static readonly string ReleaseExtensionsKey = "Castle.ReleaseExtensions";
        public static readonly string ResolveExtensionsKey = "Castle.ResolveExtensions";
        public static ICollection<IReleaseExtension> ReleaseExtensions(this ComponentModel model, bool ensureExists)
        {
            if (model == null)
                throw new ArgumentNullException("model");
            ICollection<IReleaseExtension> collection = model.ExtendedProperties[ReleaseExtensionsKey] as ICollection<IReleaseExtension>;
            if ((collection == null) & ensureExists) {
                collection = new HashSet<IReleaseExtension>();
                model.ExtendedProperties[ReleaseExtensionsKey] = collection;
            }
            return collection;
        }
        public static ICollection<IResolveExtension> ResolveExtensions(this ComponentModel model, bool ensureExists)
        {
            if (model == null)
                throw new ArgumentNullException("model");
            ICollection<IResolveExtension> collection = model.ExtendedProperties[ResolveExtensionsKey] as ICollection<IResolveExtension>;
            if ((collection == null) & ensureExists) {
                collection = new HashSet<IResolveExtension>();
                model.ExtendedProperties[ResolveExtensionsKey] = collection;
            }
            return collection;
        }
    }
}