private boolean parseOperand(PsiBuilder builder) {
    PsiBuilder.Marker marker = builder.mark();
    boolean parsed = true;
    if (builder.getTokenType() == JqlTokenTypes.LPAR) {
      marker.drop();
      parsed = parseList(builder);
    }
    else if (advanceIfMatches(builder, JqlTokenTypes.EMPTY_VALUES)) {
      marker.done(JqlElementTypes.EMPTY);
    }
    else if (advanceIfMatches(builder, JqlTokenTypes.LITERALS)) {
      if (builder.getTokenType() == JqlTokenTypes.LPAR) {
        marker.done(JqlElementTypes.IDENTIFIER);
        marker = marker.precede();
        parseArgumentList(builder);
        marker.done(JqlElementTypes.FUNCTION_CALL);
      }
      else {
        marker.done(JqlElementTypes.LITERAL);
      }
    }
    else {
      marker.drop();
      parsed = false;
    }
    if (!parsed) {
      builder.error(TaskBundle.message("parsing.error.expecting.either.literal.list.or.function.call"));
    }
    return parsed;
  }
private boolean parseOperand(PsiBuilder builder)