protected override IResponse InternalMake()
        {
            if (ctx.CurrentElement == null)
            {
                return(null);
            }

            LocalElement size = ctx.AdditionalContext as LocalElement;

            if (ctx.AdditionalContext == null)
            {
                size = ctx.VariablePool.GetNewVariable(typeof(uint));
                ctx.AdditionalContext = size;
                size.Store(ctx.G, (ConstantElement <uint>) 0, Model.TypeOfContent.Value);
            }

            if (!typeSizeMap.ContainsKey(ctx.CurrentElement.LoadedType))
            {
                return(null);
            }

            var sumElement = new GenericElement(typeof(uint))
            {
                LoadAction = (g, type) =>
                {
                    size.Load(ctx.G, Model.TypeOfContent.Value);
                    typeSizeMap[ctx.CurrentElement.LoadedType].Load(ctx.G, Model.TypeOfContent.Value);
                    ctx.G.Add();
                }
            };

            size.Store(ctx.G, sumElement, Model.TypeOfContent.Value);

            return(new ContextModifiedBuildResponse());
        }