private void expressionRest(Map<String, Boolean> fields, Stack<Boolean> stack, ConditionLexer lex)
     throws IOException, AnnotationParseException {
   ConditionToken tok = lex.lex();
   if (tok == null) {
     return;
   }
   switch (tok.type) {
     case AND:
       Boolean andOp1 = stack.pop();
       expression(fields, stack, lex);
       Boolean andOp2 = stack.pop();
       stack.push(andOp1 && andOp2);
       break;
     case OR:
       Boolean orOp1 = stack.pop();
       expression(fields, stack, lex);
       Boolean orOp2 = stack.pop();
       stack.push(orOp1 || orOp2);
       break;
     default:
       lex.pushback(tok);
   }
 }