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