whole_func_string: function(pattern, consume, caseInsensitive) {
  			if (typeof pattern == "string") {
  				var cased = caseInsensitive
  					? function(str) {return str.toLowerCase();}
  					: function(str) {return str;};
  				
  				if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
  					if (consume !== false)
  						this.pos += pattern.length;
  					return true;
  				}
  			} else {
  				var match = this.string.slice(this.pos).match(pattern);
  				if (match && consume !== false)
  					this.pos += match[0].length;
  				return match;
  			}
  		}
func_code_string: function(pattern, consume, caseInsensitive) {
  			if (typeof pattern == "string") {
  				var cased = caseInsensitive
  					? function(str) {return str.toLowerCase();}
  					: function(str) {return str;};
  				
  				if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
  					if (consume !== false)
  						this.pos += pattern.length;
  					return true;
  				}
  			} else {
  				var match = this.string.slice(this.pos).match(pattern);
  				if (match && consume !== false)
  					this.pos += match[0].length;
  				return match;
  			}
  		}
func_documentation_string: Act like a multi-character <code>eat</code>—if <code>consume</code> is true or
  not given—or a look-ahead that doesn't update the stream position—if
  it is false. <code>pattern</code> can be either a string or a
  regular expression starting with ^. When it is a string,
  <code>caseInsensitive</code> can be set to true to make the match
  case-insensitive. When successfully matching a regular expression,
  the returned value will be the array returned by <code>match</code>,
  in case you need to extract matched groups.
  
  @param {RegExp} pattern
  @param {Boolean} consume
  @param {Boolean} caseInsensitive
  @returns