@Override
  public TLValue evaluate() {

    for(Choice ch : choices) {
      TLValue value = ch.expression.evaluate();

      if(!value.isBoolean()) {
        throw new RuntimeException("illegal boolean expression " + 
            "inside if-statement: " + ch.expression);
      }

      if(value.asBoolean()) {
        return ch.block.evaluate();
      }
    }

    return TLValue.VOID;
  }