class LongExprEvaluator implements LongExprVisitor<Long, Void> {

  @Override
  public Long visitUint32HighLowExpr(Uint32HighLowExpr uint32HighLowExpr) {
    long high = uint32HighLowExpr.getHighExpr().accept(IntExprEvaluator.instance(), null);
    assert 0L <= high && high <= 0xFFFFL;
    long low = uint32HighLowExpr.getLowExpr().accept(IntExprEvaluator.instance(), null);
    assert 0L <= low && low <= 0xFFFFL;
    return (high << 16) | low;
  }

}