protected override Expression VisitPartialExpression(PartialExpression pex) { var bindingContext = ExpressionShortcuts.Arg <BindingContext>(CompilationContext.BindingContext); var partialBlockTemplate = pex.Fallback != null ? FunctionBuilder.CompileCore(new[] { pex.Fallback }, CompilationContext.Configuration) : null; if (pex.Argument != null || partialBlockTemplate != null) { var value = ExpressionShortcuts.Arg <object>(FunctionBuilder.Reduce(pex.Argument, CompilationContext)); var partialTemplate = ExpressionShortcuts.Arg(partialBlockTemplate); bindingContext = bindingContext.Call(o => o.CreateChildContext(value, partialTemplate)); } var partialName = ExpressionShortcuts.Cast <string>(pex.PartialName); var configuration = ExpressionShortcuts.Arg(CompilationContext.Configuration); return(ExpressionShortcuts.Call(() => InvokePartialWithFallback(partialName, bindingContext, (ICompiledHandlebarsConfiguration)configuration) )); }