33    const IR::Expression *shift(
const IR::Operation_Binary *expression) 
const;
 
   37        : typeMap(typeMap), maxShiftWidth(maxShiftWidth) {
 
   39        setName(
"LowerExpressions");
 
   42    const IR::Node *postorder(IR::Expression *expression) 
override;
 
   43    const IR::Node *postorder(IR::Shl *expression)
 override { 
return shift(expression); }
 
   44    const IR::Node *postorder(IR::Shr *expression)
 override { 
return shift(expression); }
 
   45    const IR::Node *postorder(IR::Cast *expression) 
override;
 
   46    const IR::Node *postorder(IR::Neg *expression) 
override;
 
   47    const IR::Node *postorder(IR::Slice *expression) 
override;
 
   48    const IR::Node *postorder(IR::Concat *expression) 
override;
 
   49    const IR::Node *preorder(IR::P4Table *table)
 override {