public DictionaryAdapterMeta(Type type, IDictionaryInitializer[] initializers,
									 object[] behaviors,  IDictionary<String, PropertyDescriptor> properties)
		{
			Type = type;
			Initializers = initializers;
			Behaviors = behaviors;
			Properties = properties;
		}
		public DictionaryAdapterMeta(Type type, IDictionaryInitializer[] initializers,
									 IDictionaryMetaInitializer[] metaInitializers,
									 object[] behaviors, IDictionary<String, PropertyDescriptor> properties,
									 IDictionaryAdapterFactory factory)
		{
			Type = type;
			Initializers = initializers;
			MetaInitializers = metaInitializers;
			Behaviors = behaviors;
			Properties = properties;

			InitializeMeta(factory, metaInitializers);
		}
		private static IDictionaryInitializer[] MergeInitializers(
			IDictionaryInitializer[] source, List<IDictionaryBehavior> behaviors)
		{
			int index, count;
			IDictionaryInitializer initializer;
			var result = null as List<IDictionaryInitializer>;

			count = source.Length;
			for (index = 0; index < count; index++)
				PropertyDescriptor.MergeBehavior(ref result, source[index]);

			count = behaviors.Count;
			for (index = 0; index < count; index++)
				if (null != (initializer = behaviors[index] as IDictionaryInitializer))
					PropertyDescriptor.MergeBehavior(ref result, initializer);

			return result == null
				? NoInitializers
				: result.ToArray();
		}