static IEnumerable <object> Unfold(IEnumerable <object> items) { return(items.SelectMany((item) => { item = ASTExpr.ConvertAnythingIteratableToIterator(item); if (item is Antlr.Runtime.JavaExtensions.Iterator) { return ((Antlr.Runtime.JavaExtensions.Iterator)item).Source.Cast <object>(); } else if (item is string) { return Enumerable.Repeat(item, 1); } else if (item is IEnumerable) { return ((IEnumerable)item).Cast <object>(); } else if (item is IEnumerator) { return Enumerable.Repeat(item, 1); } else { return Enumerable.Repeat(item, 1); } })); }
static IEnumerable <object> Unfold(IEnumerable <object> items) { return(items.SelectMany((item) => { item = ASTExpr.ConvertAnythingIteratableToIterator(item); if (item is string) { return Enumerable.Repeat(item, 1); } else if (item is IEnumerable) { return ((IEnumerable)item).Cast <object>(); } else if (item is IEnumerator) { return Enumerate((IEnumerator)item); } else { return Enumerable.Repeat(item, 1); } })); }