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()); }