       #     f a
       #     .g b
       #     .h a
-      #
-      if inImplicitCall() and tag in CALL_CLOSERS and
-         (prevTag is 'OUTDENT' or prevToken.newLine)
-        endAllImplicitCalls()
-        return forward(1)
 
       stackTop()[2].sameLine = no if inImplicitObject() and tag in LINEBREAKS
 
-      if tag in IMPLICIT_END
+      newLine = prevTag is 'OUTDENT' or prevToken.newLine
+      if tag in IMPLICIT_END or tag in CALL_CLOSERS and newLine
         while inImplicit()
           [stackTag, stackIdx, {sameLine, startsLine}] = stackTop()
           # Close implicit calls when reached end of argument list

LINEBREAKS       = ['TERMINATOR', 'INDENT', 'OUTDENT']

# Tokens that close open calls when they follow a newline.
CALL_CLOSERS = ['.', '?.', '::', '?::']

        tokens.splice i, 0, generate 'CALL_END', ')'
        i += 1

      startImplicitObject = (j, startsLine = yes) ->
        idx = j ? i
        stack.push ['{', idx, sameLine: yes, startsLine: startsLine, ours: yes]
