Boolean r=((Literal) right).getBoolean(null);
if(l!=null && r!=null) {
switch(operation) {
case AND: return new LitBoolean(l.booleanValue()&&r.booleanValue(),left.getStart(),right.getEnd());
case OR: return new LitBoolean(l.booleanValue()||r.booleanValue(),left.getStart(),right.getEnd());
case XOR: return new LitBoolean(l.booleanValue()^r.booleanValue(),left.getStart(),right.getEnd());
}
}
}
return new OpBool(left,right,operation);
}