private boolean semicolonInserted() throws ParseException {
if (tq.isEmpty() || tq.lookaheadToken(Punctuation.RCURLY)) { return true; }
FilePosition last = tq.lastPosition(),
current = tq.currentPosition();
if (last == null) { return true; } // Can insert at beginning
if (current.startLineNo() == last.endLineNo()) { return false; }
for (Token<JsTokenType> filtered : tq.filteredTokens()) {
if (filtered.type == JsTokenType.LINE_CONTINUATION) { return false; }
}
return true;
}