82        : refMap(refMap), 
warned(warn ? new 
std::set<const IR::Node *> : nullptr) {
 
   84        setName(
"RemoveUnusedDeclarations");
 
   88    using Transform::init_apply;
 
   89    using Transform::postorder;
 
   90    using Transform::preorder;
 
   94    const IR::Node *preorder(IR::P4Control *cont) 
override;
 
   95    const IR::Node *preorder(IR::P4Parser *cont) 
override;
 
   96    const IR::Node *preorder(IR::P4Table *cont) 
override;
 
   97    const IR::Node *preorder(IR::ParserState *state) 
override;
 
   98    const IR::Node *preorder(IR::Type_Enum *type) 
override;
 
   99    const IR::Node *preorder(IR::Type_SerEnum *type) 
override;
 
  101    const IR::Node *preorder(IR::Declaration_Instance *decl) 
override;
 
  102    const IR::Node *preorder(IR::Method *decl) 
override;
 
  105    const IR::Node *preorder(IR::Type_Error *type)
 override {
 
  109    const IR::Node *preorder(IR::Declaration_MatchKind *decl)
 override {
 
  113    const IR::Node *preorder(IR::Type_StructLike *type)
 override {
 
  114        visit(type->typeParameters);
 
  118    const IR::Node *preorder(IR::Type_Extern *type)
 override {
 
  119        visit(type->typeParameters);
 
  123    const IR::Node *preorder(IR::Type_Method *type)
 override {
 
  124        visit(type->typeParameters);
 
  128    const IR::Node *preorder(IR::Parameter *param) 
override;
 
  129    const IR::Node *preorder(IR::NamedExpression *ne)
 override { 
return ne; }  
 
  130    const IR::Node *preorder(IR::Type_Var *p)
 override {
 
  132        return warnIfUnused(p);
 
  135    const IR::Node *preorder(IR::Declaration_Variable *decl) 
override;
 
  136    const IR::Node *preorder(IR::Declaration *decl)
 override { 
return process(decl); }
 
  137    const IR::Node *preorder(IR::Type_Declaration *decl)
 override { 
return process(decl); }