The loop in functionCallBase() tries to match parenthesis. It tries to recognize multiline comments, but either the comment constructs or parens could actually be inside a string literal and the code doesn't handle those cases.
Here are some examples of cases that the function does not properly handle: foo.bar("/abc\)*/") blah(/* A /* B */ x, y) baz("((((")