   value ||= @chunk.substr(0, 1)
   tag: if value.match(ASSIGNMENT) then 'ASSIGN' else value
   tag: 'TERMINATOR' if value == ';'
-  if @value() isnt @spaced and CALLABLE.indexOf(@tag()) >= 0
+
+  if not @tokens[@tokens.length - 1].spaced and CALLABLE.indexOf(@tag()) >= 0
     tag: 'CALL_START'  if value is '('
     tag: 'INDEX_START' if value is '['
   @token tag, value

# Matches identifying literals: variables, keywords, method names, etc.
lex::identifier_token: ->
  return false unless id: @match IDENTIFIER, 1
  # Keywords are special identifiers tagged with their own name,
  # 'if' will result in an ['IF', "if"] token.
  tag: if KEYWORDS.indexOf(id) >= 0 then id.toUpperCase() else 'IDENTIFIER'
  tag: 'LEADING_WHEN' if tag is 'WHEN' and BEFORE_WHEN.indexOf(@tag()) >= 0
  @tag(1, 'PROTOTYPE_ACCESS') if tag is 'IDENTIFIER' and @value() is '::'
  if tag is 'IDENTIFIER' and @value() is '.' and !(@value(2) is '.')
    if @tag(2) is '?'
      @tag(1, 'SOAK_ACCESS')
      @tokens.splice(-2, 1)
    else
      @tag(1, 'PROPERTY_ACCESS')
  @token(tag, id)
  @i += id.length
  true

# Matches and consumes non-meaningful whitespace.
lex::whitespace_token: ->
  return false unless space: @match WHITESPACE, 1
  @tokens[@tokens.length - 1].spaced: true
  @i += space.length
  true

