     tokens.push ['TO_BE_STRING', str[pi..]] if i > pi < str.length
     return tokens if regex
     return @token 'STRING', '""' unless tokens.length
+    tokens.unshift ['', ''] unless tokens[0][0] is 'TO_BE_STRING'
     @token '(', '(' if interpolated = tokens.length > 1
-    @tokens.push ['STRING', '""'], ['+', '+'] unless tokens[0][0] is 'TO_BE_STRING'
     for [tag, value], i in tokens
       @token '+', '+' if i
       if tag is 'TOKENS'

# Tokens which could legitimately be invoked or indexed. A opening
# parentheses or bracket following these tokens will be recorded as the start
# of a function invocation or indexing operation.
CALLABLE = ['IDENTIFIER', 'SUPER', ')', ']', '}', 'STRING', '@', 'THIS', '?', '::']

# Tokens that, when immediately preceding a `WHEN`, indicate that the `WHEN`
# occurs at the start of a line. We disambiguate these from trailing whens to

    else if include COMPOUND_ASSIGN, value then tag = 'COMPOUND_ASSIGN'
    else if include UNARY          , value then tag = 'UNARY'
    else if include SHIFT          , value then tag = 'SHIFT'
    else if value is '?' and prev?.spaced  then tag = 'LOGIC'
    else if prev and not prev.spaced
      if value is '(' and include CALLABLE, prev[0]
        prev[0] = 'FUNC_EXIST' if prev[0] is '?'
        tag = 'CALL_START'
      else if value is '[' and include INDEXABLE, prev[0]
        tag = 'INDEX_START'
        switch prev[0]
          when '?'  then prev[0] = 'INDEX_SOAK'
