    void redo() override;
  
  private:
    const MessageId id;
    Signal signal = {};
  };
  
  class EditSignalCommand : public QUndoCommand {
  public:
    EditSignalCommand(const MessageId &id, const Signal *sig, const Signal &new_sig, QUndoCommand *parent = nullptr);
 
</s> remove   EditSignalCommand(const MessageId &id, const Signal *sig, const Signal &new_sig, QUndoCommand *parent = nullptr);
 </s> add   EditSignalCommand(const MessageId &id, const cabana::Signal *sig, const cabana::Signal &new_sig, QUndoCommand *parent = nullptr); </s> remove   Signal signal = {};
 </s> add   cabana::Signal signal = {}; </s> remove   RemoveSigCommand(const MessageId &id, const Signal *sig, QUndoCommand *parent = nullptr);
 </s> add   RemoveSigCommand(const MessageId &id, const cabana::Signal *sig, QUndoCommand *parent = nullptr); </s> remove   AddSigCommand(const MessageId &id, const Signal &sig, QUndoCommand *parent = nullptr);
 </s> add   AddSigCommand(const MessageId &id, const cabana::Signal &sig, QUndoCommand *parent = nullptr); </s> remove   Msg message;
 </s> add   cabana::Msg message;
  cabana::Signal signal = {};
    void redo() override;
  
  private:
    const MessageId id;
  cabana::Signal signal = {};
  };
  
  class EditSignalCommand : public QUndoCommand {
  public:
    EditSignalCommand(const MessageId &id, const Signal *sig, const Signal &new_sig, QUndoCommand *parent = nullptr);
keep keep keep keep replace keep keep keep keep keep
 cabana: refactor Msg and Signal into dbc.cc (#27552) 
tools/cabana/commands.h