code: private boolean lookaheadSequence(boolean terminated, Token.Kind... kinds) {
  		int next = index;
  		for (Token.Kind k : kinds) {
  			next = terminated ? skipWhiteSpace(next) : skipLineSpace(next);
  			if (next >= tokens.size() || tokens.get(next++).kind != k) {
  				return false;
  			}
  		}
  		return true;
  	}
docs: Attempt to match a given sequence of tokens in the given order, whilst
  ignoring any whitespace in between. Note that, in any case, the index
  will be unchanged!
  
  @param terminated
  Indicates whether or not this function should be concerned
  with new lines. The terminated flag indicates whether or not
  the current construct being parsed is known to be terminated.
  If so, then we don't need to worry about newlines and can
  greedily consume them (i.e. since we'll eventually run into
  the terminating symbol).
  @param kinds
  
  @return whether the sequence matches