# tparallel Реализуйте api, дублирующее поведение `t.Parallel()`. Тест - это функция с сигнатурой `func(*T)`. Вам нужно реализовать функцию `Run(topTests []func(*T))`, запускающую множество top-level тестов. Каждый тест получает аргументом уникальный объект `*T`, по объекту `T` на каждый запуск теста. В начале все тесты выполняются последовательно. Если тест вызывает `t.Parallel()`, то он становится параллельным и блокируется на этом вызове. После этого, запускается следующий последовательный тест. Когда все последовательные тесты завершились, все параллельные тесты разблокируются и продолжают своё исполнение. Функция `Run` выходит, когда завершились все тесты. Тест может запускать под-тесты вызывая `t.Run`. Тест считается завершённым, когда завершилась его тестовая функция и завершились все его подтесты. Под-тест начинает своё выполнение последовательно, блокируя вызов Run. Подтест может стать параллельным, вызвав `t.Parallel()`. Такой тест должен продолжить исполнение, после того как функция родительского теста завершилась.