                 return theSibling
             }
             
-            return pushUp(leftSideDescendantEvaluatedBy: evaluation, bailIf: shouldBail)
+            return pushUp(leftSideDescendantEvaluatedBy: evaluation, bailIf: bail)
         }
         
-        ///  Pushes up to the level of the receiver and right-side descendant that evaluates
+        /// Pushes up to the level of the receiver any right-side descendant that evaluates
         /// to `true`.
         ///
         /// - Parameters:
         ///     - evaluationClosure: the closure that will be used to evaluate all descendants.
+        ///     - bail: the closure that will be used to evaluate if the descendant search must
+        ///             bail.
         ///
         /// - Returns: if any matching descendant is found, this method will return the requested
         ///         node after being pushed all the way up, or `nil` if no matching descendant is
         ///         found.
         ///
-        func pushUp<T: Node>(rightSideDescendantEvaluatedBy evaluationClosure: (T -> Bool), bailIf shouldBail: (T -> Bool) = { _ in return false }) -> T? {
-            
-            guard let node = find(rightSideDescendantEvaluatedBy: evaluationClosure, bailIf: shouldBail) else {
+        func pushUp<T: Node>(rightSideDescendantEvaluatedBy evaluationClosure: (T -> Bool), bailIf bail: (T -> Bool) = { _ in return false }) -> T? {
+            
+            guard let node = find(rightSideDescendantEvaluatedBy: evaluationClosure, bailIf: bail) else {
                 return nil
             }
             

        /// - Parameters:
        ///     - evaluate: the closure to evaluate the candidate.  `true` means we have a good
        ///             candidate.
        ///
        /// - Returns: the matching element, if any was found, or `nil`.
        ///
        @warn_unused_result
        private func find<T: Node>(leftSideDescendantEvaluatedBy evaluate: (T -> Bool), bailIf shouldBail: (T -> Bool) = { _ in return false }) -> T? {
            
            guard children.count > 0 else {
                return nil

        /// - Parameters:
        ///     - evaluate: the closure to evaluate the candidate.  `true` means we have a good
        ///             candidate.
        ///     - bail: the closure that will be used to evaluate if the descendant search must
        ///             bail.
        ///
        /// - Returns: the matching element, if any was found, or `nil`.
        ///
        @warn_unused_result
        private func find<T: Node>(rightSideDescendantEvaluatedBy evaluate: (T -> Bool), bailIf bail: (T -> Bool) = { _ in return false }) -> T? {
            
            guard children.count > 0 else {
                return nil
