public void setIgnoreWhitespace(boolean ignoreWhitespaceNow) throws EOFException, IOException 
    {
    	if ( isIgnoreWhitespace() && ! ignoreWhitespaceNow && previousToken != null ) 
    	{
    		// switching "skip whitespace" => "do not skip whitespace"
    		
    		// - reset to current token position
    		/*
        private final List<Token> tokens = new ArrayList<>(Lexer.this.tokens);
        private final boolean atEOF = Lexer.this.atEOF;
        private final int currentOffset = scanner.getOffset();
        private final boolean ignoreWhitespace = Lexer.this.ignoreWhitespace;    		 
    		 */
    		this.tokens.clear();
    		this.atEOF = false;
    		this.scanner= new Scanner( createInputStream( previousToken.getOffset() ) );
    		// skip previous token
    		read();
    	} 
    	else if ( ! isIgnoreWhitespace() && ignoreWhitespaceNow) 
    	{
    		// switching "do not skip whitespace" => "skip whitespace"
    		// remove all whitespace tokens from the token queue that might've
    		// been added by read-ahead
    		for ( Iterator<Token> it = tokens.iterator() ; it.hasNext() ; ) 
    		{
    			final Token tok = it.next();
    			if ( tok.hasType( TokenType.WHITESPACE ) || tok.hasType(TokenType.EOL ) ) {
    				it.remove();
    			}
    		}
    	}
		this.ignoreWhitespace = ignoreWhitespaceNow;
	}