public static IEnumerable <T> Filter <T>(this IDataStructure <T> items, Func <T, bool> predicate) { for (int i = 0; i < items.Size(); i++) { if (predicate(items[i])) { yield return(items[i]); } } }