public static Closure Root(ITypedElement root, EvaluationContext ctx = null) { var newContext = new Closure() { EvaluationContext = ctx ?? EvaluationContext.CreateDefault() }; var input = new[] { root }; newContext.SetThis(input); newContext.SetThat(input); newContext.SetIndex(ElementNode.CreateList(0)); newContext.SetOriginalContext(input); if (ctx.Resource != null) { newContext.SetResource(new[] { ctx.Resource }); } if (ctx.RootResource != null) { newContext.SetRootResource(new[] { ctx.RootResource }); } return(newContext); }