function hasUnsafeIf(nodeToCheck) {
			switch (nodeToCheck.type) {
				case "IfStatement":
					if (!nodeToCheck.alternate) {
						return true;
					}
					return hasUnsafeIf(nodeToCheck.alternate);
				case "ForStatement":
				case "ForInStatement":
				case "ForOfStatement":
				case "LabeledStatement":
				case "WithStatement":
				case "WhileStatement":
					return hasUnsafeIf(nodeToCheck.body);
				default:
					return false;
			}
		}
Determines whether the code represented by the given node contains an `if` statement
that would become associated with an `else` keyword directly appended to that code.

Examples where it returns `true`:

   if (a)
       foo();

   if (a) {
       foo();
   }

   if (a)
       foo();
   else if (b)
       bar();

   while (a)
       if (b)
           if(c)
               foo();
           else
               bar();

Examples where it returns `false`:

   if (a)
       foo();
   else
       bar();

   while (a) {
       if (b)
           if(c)
               foo();
           else
               bar();
   }

   while (a)
       if (b) {
           if(c)
               foo();
       }
       else
           bar();
@param {ASTNode} nodeToCheck Node representing the code to check.
@returns {boolean} `true` if an `if` statement within the code would become associated with an `else` appended to that code.