private IEnumerable<UtokenBase> YieldBetween(UnparsableAst self)
{
Unparser.tsUnparse.Debug("YieldBetween");
try
{
// NOTE: topAncestorCacheForLeft may get updated by _YieldBetween
// NOTE: ToList is needed to fully evaluate the called function, so we can catch the exception
return _YieldBetween(self, formatYielder: this).ToList();
}
catch (NonCalculatedException)
{
// top left node or someone in the chain is non-calculated -> defer execution
return new[]
{
new DeferredUtokens(
() => _YieldBetween(self, formatYielder: this),
self: self,
helpMessage: "YieldBetween"
)
};
}
}