anchor.diff:    method Action start;
     method Action clear;
   endinterface
  -module mkStateDeparseIpv4#(Reg#(DeparserState) state,
  -                           FIFOF#(EtherData) datain,
  -                           FIFOF#(EtherData) dataout,
  -                           FIFOF#(Ipv4T) ipv4_meta,
  -                           FIFOF#(Ipv4T) ipv4_mask)
  -                           (DeparseIpv4);
  -
  +module mkStateDeparseIpv4#(Reg#(DeparserState) state, FIFOF#(EtherData) datain, FIFOF#(EtherData) dataout, FIFOF#(Ipv4T) meta_fifo, FIFOF#(Ipv4T) mask_fifo)(DeparseIpv4);
  +   let verbose = False;
      Wire#(EtherData) packet_in_wire <- mkDWire(defaultValue);
      FIFOF#(EtherData) deparse_ethernet_fifo <- mkBypassFIFOF;
  -   PulseWire start_wire <- mkPulseWire();
  -   PulseWire clear_wire <- mkPulseWire();
  +   PulseWire start_wire <- mkPulseWire;
  +   PulseWire clear_wire <- mkPulseWire;
   
      function DeparserState compute_next_state(Bit#(8) protocol);
          DeparserState nextState = StateDeparseIdle;
  
positive.code: instance DefaultMask#(RoutingReqT);
    defaultMask = unpack(maxBound);
  endinstance
  
  
  instance FShow#(RoutingReqT);
    function Fmt fshow(RoutingReqT p);
  
negative.code: endmodule
  
  typedef enum {
    StateDeparseIdle,
    StateDeparseEthernet,
    StateDeparseIpv4
  } DeparserState deriving (Bits, Eq, FShow);
  
  function Tuple2#(EthernetT, EthernetT) toEthernet(MetadataT meta);
  