Если анализировать построение, то эта логика не фиксируется в одном виде, а меняется в каждой версии. Ниже собран развёрнутый конспект. В завершение приведены рекомендации, чтобы сохранить понятность. Когда требуется можно применить эти формулировки под свою задачу.