Спуститься на уровень ниже и написать код за компилятор, если уж компилятор не справился. Или, если не хочется, переписать код так, чтобы сгенерировано было именно то, что вам нужно — это ж дело перекладывания кода из одной формы в другую, не более того.
Опять же мой тезис в том, что должно быть несколько уровней языка. Convention over configuration. То есть большинство пишет и верит умным настройкам, но в тех случаях, когда надо настроить, можно включить ручную настройку (на уровне более сложной конструкции в либе или ключом компилятора).
Валидный консёрн, на который у меня пока нет ответа. Скорее всего, ответ сведётся к аналогичному в коллекциях - там есть random access, если однонаправленные. То есть, циклы можно делать не во всех цепочках. И теперь уже задача разделить те, в которых можно от тех, в которых нельзя и выразить это разделение.
Ааа... Ну там же главное не способности, а их применение. Если чморить кого надо, то все способности хороши. Ну и я оптимист. Верю в близкое светлое будущее