code: function checkProgram(node) {
  					var lines = context.getSourceLines();
  					var allComments = context.getAllComments();
  					
  					// add all comments to the ignored elements
  					allComments.forEach(function(node) {
  						ignoredLocations.push(node.loc);
  					});
  					
  					// now we check if the lines starts with a mix of tabs and spaces
  					lines.forEach(function(line, index) {
  						var match = lineStart.exec(line);
  						if (match !== null) {
  							// we got a match on the corresponding line
  							// we need to see if the match is within an existing comment or a literal
  							var currentLine = index + 1; // index is 0-based
  							var currentColumn = match.index + 1; // column is 1-based
  							if (searchInsideComments(ignoredLocations, { line: currentLine, column: currentColumn}) !== null) {
  								// the position is inside a comment so we ignore it - move to the next one
  								return;
  							}
  							context.report(node, { line: currentLine, column: currentColumn}, ProblemMessages['no-mixed-spaces-and-tabs']);
  						}
  					});
  				}
docs: smart-tabs enabled var lineStart = /^(?=[\t ]*( \t|\t ))/; // smart-tabs disabled var lineStart = /^(?:<script>)*(?=[\t ]* \t)/; // include <script> at start of line 
  @description Check the Program node in the AST (the whole AST)
  @param {Object} node The AST node