IBindableBuilder <TNextHolder, TItemValue, IList <TItemValue> > IListBuilder <TItemValue> .Holding <TNextHolder>(
     HolderFactory <TNextHolder> holderFactory,
     BindingFunction <TNextHolder, TItemValue> bind)
 {
     Node.HolderFactory = v => holderFactory(v);
     Node.Binder        = (h, v) => bind((TNextHolder)h, (TItemValue)v);
     return(new NodeBuilder <TNextHolder, TItemValue, IList <TItemValue> >(Node));
 }
        public INetworkPacketFactory <T> GetFactory <T>() where T : INetworkPacket
        {
            INetworkPacketFactory ret;

            if (!factoriesMap.TryGetValue(typeof(T), out ret))
            {
                ret = getGeneratedFactory <T>();
                if (ret != null)
                {
                    factoriesMap.Add(typeof(T), ret);
                    return(ret as INetworkPacketFactory <T>);
                }
                HolderFactory <T> holder = new HolderFactory <T>(this);
                factoriesMap.Add(typeof(T), holder);
                ret = holder;
            }

            return(ret as INetworkPacketFactory <T>);
        }
 ISingleViewBuilder <TNextHolder> ISingleViewBuilder.Holding <TNextHolder>(
     HolderFactory <TNextHolder> holderFactory)
 {
     Node.HolderFactory = v => holderFactory(v);
     return(new NodeBuilder <TNextHolder, TItemValue, TUpdateValue>(Node));
 }