private void parseListLiteralExpression(final SyntaxTreeBuilder builder, boolean isTargetExpression) {
    LOG.assertTrue(builder.getTokenType() == PyTokenTypes.LBRACKET);
    final SyntaxTreeBuilder.Marker expr = builder.mark();
    builder.advanceLexer();
    if (builder.getTokenType() == PyTokenTypes.RBRACKET) {
      builder.advanceLexer();
      expr.done(PyElementTypes.LIST_LITERAL_EXPRESSION);
      return;
    }
    if (!parseNamedTestExpression(false, isTargetExpression)) {
      builder.error(message("PARSE.expected.expression"));
    }
    if (atForOrAsyncFor()) {
      parseComprehension(expr, PyTokenTypes.RBRACKET, PyElementTypes.LIST_COMP_EXPRESSION);
    }
    else {
      while (builder.getTokenType() != PyTokenTypes.RBRACKET) {
        if (!matchToken(PyTokenTypes.COMMA)) {
          builder.error(message("rbracket.or.comma.expected"));
        }
        if (atToken(PyTokenTypes.RBRACKET)) {
          break;
        }
        if (!parseNamedTestExpression(false, isTargetExpression)) {
          builder.error(message("PARSE.expected.expr.or.comma.or.bracket"));
          break;
        }
      }
      checkMatches(PyTokenTypes.RBRACKET, message("PARSE.expected.rbracket"));
      expr.done(PyElementTypes.LIST_LITERAL_EXPRESSION);
    }
  }
private void parseListLiteralExpression(final SyntaxTreeBuilder builder, boolean isTargetExpression)