 
 // TODO: fix bug where focus doesn't work if there are no `it`s in the scope
-// TODO: should fatal error when `scope` is inside an `it`
 
 private struct Constant {
     static let levelSpace = "   "

    static let nilGroupKey = "_____"

    struct ErrorMessage {
        static let tooManySubjectActions = "only one \"subjectAction()\" per `it`"
    }

    struct OutPutPrefix {

    }

    func intake(_ scope: Scope, closure: () -> Void) {
        ensureNotExecuting()
        tracker.intake(scope, closure: closure)
    }

    func intake(_ step: Step) {
        ensureNotExecuting()
        tracker.intake(step)
    }

    func intake(_ it: It) {
        ensureNotExecuting()
        tracker.intake(it)
    }

    func execute() {
        isExecuting = true
        rootScope.process(underFocus: false, underPending: false)
        let result = Scope.execute([rootScope], isSomethingFocused: rootScope.hasFocus)
        let endline = endLine(totalCount: result.total, succeeded: result.succeeded, pending: result.pending)
        print(result.description + endline)
        isExecuting = false
    }

    // MARK: Helper

    private func ensureNotExecuting() {
        guard !isExecuting else {
            fatalError(Constant.ErrorMessage.newScopesWhileExecuting)
        }
    }

    // MARK: - TrackedScope Protocol
