anchor.diff:         }
          else if (indent > previous) {
            indents.push(indent);
  -         emit(new CommonToken(Python3Parser.INDENT, "INDENT"));
  +         emit(commonToken(Python3Parser.INDENT, spaces));
          }
          else {
            // Possibly emit more than 1 DEDENT token.
            while(!indents.isEmpty() && indents.peek() > indent) {
  -           emit(new CommonToken(Python3Parser.DEDENT, "DEDENT"));
  +           this.emit(createDedent());
              indents.pop();
            }
          }
  
positive.code:     if (_input.LA(1) == EOF && !this.indents.isEmpty()) {
  
        // First emit an extra line break that serves as the end of the statement.
        this.emit(new CommonToken(Python3Parser.NEWLINE, "\n"));
  
        // Now emit as much DEDENT tokens as needed.
        while (!indents.isEmpty()) {
          this.emit(new CommonToken(Python3Parser.DEDENT, "DEDENT"));
          indents.pop();
        }
      }
  
      Token next = super.nextToken();
  
      return tokens.isEmpty() ? next : tokens.poll();
    }  
    
    // Calculates the indentation of the provided spaces, taking the 
    // following rules into account:
  
negative.code:   // The amount of opened braces, brackets and parenthesis.
    private int opened = 0;
  
    // The most recently produced token.
    private Token lastToken = null;
  
    @Override
    public void emit(Token t) {
      super.setToken(t);
  