Подумалось, что было бы здорово если бы оператор из можно было дополнять гуардом и as-ом как при паттерн-матчинге. Тогда можно было бы писать:
collection.All(x => x is SubruleInfo.TokenString as ts when ts.SomeTest())
В ts, при этом, помещается ссылка на x приведенная к типу SubruleInfo.TokenString, точно так же как это происходит в паттерн-матчинге.
А то в подобных случаях приходится создавать отдельные локальные функции, что громоздко и долго.
Как развитие этой идеи можно и частичное приведение операторов захачить. Тогда тот же пример можно было бы написать так:
collection.All(_ is SubruleInfo.TokenString as ts when ts.SomeTest())
Экономия, конечно, не велика. Но выглядит концептуальненько.