Результаты маленького исследования условий срабатывания оптимизатора selective receive в эрланге.
Итак оно работает, если:
1. Ref создается в той же области видимости, что и блок receive
2. Все ветки блока receive в шаблонах содержат Ref в явном виде
3. Уровень вложенности и местоположение Ref в шаблоне receive (вроде) не важно - хоть {Ref, ...}, хоть {..., Ref, ...}, хоть {..., {Ref, ...}, ...}, но если сделать X = {Ref, ...} и в receive написать {X, ...}, то оптимизация не сработает.
Дизассемблер наше всё )
upd: использование нескольких Ref в одном блоке receive тоже ломает оптимизацию.