function bindReachableStatement(node) {
            if (checkUnreachable(node)) {
                ts.forEachChild(node, bind);
                return;
            }
            switch (node.kind) {
                case 198 /* WhileStatement */:
                    bindWhileStatement(node);
                    break;
                case 197 /* DoStatement */:
                    bindDoStatement(node);
                    break;
                case 199 /* ForStatement */:
                    bindForStatement(node);
                    break;
                case 200 /* ForInStatement */:
                case 201 /* ForOfStatement */:
                    bindForInOrForOfStatement(node);
                    break;
                case 196 /* IfStatement */:
                    bindIfStatement(node);
                    break;
                case 204 /* ReturnStatement */:
                case 208 /* ThrowStatement */:
                    bindReturnOrThrow(node);
                    break;
                case 203 /* BreakStatement */:
                case 202 /* ContinueStatement */:
                    bindBreakOrContinueStatement(node);
                    break;
                case 209 /* TryStatement */:
                    bindTryStatement(node);
                    break;
                case 206 /* SwitchStatement */:
                    bindSwitchStatement(node);
                    break;
                case 220 /* CaseBlock */:
                    bindCaseBlock(node);
                    break;
                case 207 /* LabeledStatement */:
                    bindLabeledStatement(node);
                    break;
                default:
                    ts.forEachChild(node, bind);
                    break;
            }
        }
Returns true if node and its subnodes were successfully traversed.
Returning false means that node was not examined and caller needs to dive into the node himself.