private static UnparsableAst GetLeftTerminalLeave(UnparsableAst self, FormatYielder formatYielder = null)
{
// NOTE: topAncestorCacheForLeft will not be changed if we have no formatter, that's why we use topAncestorForLeft + the static vs. instance behavior
UnparsableAst leftTerminalLeave;
if (formatYielder == null || !UnparsableAst.IsCalculated(formatYielder.topAncestorCacheForLeft))
{
leftTerminalLeave = CalculateLeftTerminalLeave(self, formatYielder);
if (formatYielder != null)
formatYielder.leftTerminalLeaveCache = leftTerminalLeave;
}
else
{
leftTerminalLeave = formatYielder.leftTerminalLeaveCache;
//Unparser.tsUnparse.Debug(formatter.leftTerminalLeaveCache != CalculateLeftTerminalLeave(self, formatter),
// "!!!!!!!! should be equal for {0}, but leftTerminalLeaveCache is '{1}' and calculated value is '{2}'", self, formatter.leftTerminalLeaveCache, CalculateLeftTerminalLeave(self, formatter));
Debug.Assert(formatYielder.leftTerminalLeaveCache == CalculateLeftTerminalLeave(self, formatYielder));
}
return leftTerminalLeave;
}