Переполнение блока со скроллом

Довольно часто, при работе с версткой, приходится иметь дело с переполнением блоков, за которое отвечает свойство overflow.
С одной стороны с ним все понятно — если содержимое блока требуется ограничить в рамках некоторых заданных размеров, то можно либо «обрезать» все лишнее, выходящее за границы с помощью значения overflow: hidden, либо добавить прокрутку, с помощью overflow: scroll.
Но с другой стороны возможны не самые тривиальные случаи, когда управлять переполнением требуется более гибко.

Например, весьма распространён кейс, связанный с многоуровневым меню: есть ограниченное по высоте меню первого уровня, при наведении на пункты которого появляется меню второго уровня. Разметка меню второго уровня лежит непосредственно в разметке пункта меню первого уровня и показ меню реализуется по hover:

Но из-за ограничения высоты меню первого уровня, требуется добавлять ему прокрутку на случай переполнения, при этом меню второго уровня «обрезается» и верстка ломается:

Первое, что приходит на ум в такой ситуации — вынести разметку вложенного меню из блока с overflow: scroll (auto, hidden) и позиционировать при помощи скриптов. Но есть возможность упростить эту задачу. И хотя обойтись без скриптов будет трудно, но разметку трогать не придется, да и скрипт будет значительно проще.
Принцип заключается в том, что если от абсолютно позиционированного потомка до родителя с overflow все родительские элементы имеют position: static, то этот элемент не будет обрезаться, т.к будет позиционироваться относительно более старшего родителя с position: relative или относительно body.

Это довольно неоднозначное поведение, которое позволяет выйти из трудных ситуаций, когда надо показать блок, являющийся дочерним по отношению к блоку с overflow: scroll/hidden.
Также, такой блок можно сделать позиционированным фиксировано, но, в этом случае, придется писать более сложный скрипт для позиционирования и существует опасность ошибки, если одному из родителей задано свойство transform со значением, отличным от none.