anchor.diff:  interface DeparseEthernet;
     interface Get#(EtherData) deparse_ipv4;
     method Action start;
  -  method Action clear;
  +  method Action stop;
   endinterface
   module mkStateDeparseEthernet#(Reg#(DeparserState) state, FIFOF#(EtherData) datain, FIFOF#(EtherData) dataout, FIFOF#(EthernetT) meta_fifo, FIFOF#(EthernetT) mask_fifo)(DeparseEthernet);
     let verbose = False;
  
positive.code:     let data_last_cycle <- toGet(internal_fifo_144).get;
      Bit#(272) data = {data_this_cycle, data_last_cycle};
      Vector#(272, Bit#(1)) dataVec = unpack(data);
      let hdr = extract_Ipv4T(pack(takeAt(0, dataVec)));
      $display(fshow(hdr));
      parseStateFifo.enq(StateParseIpv4);
      parsed_ipv4_protocol_fifo.enq(hdr.protocol);
      next_state_wire[0] <= tagged Valid StateParseStart;
    endaction
    endseq;
    FSM fsm_parse_ipv4 <- mkFSM(stmt_parse_ipv4);
    rule start_fsm if (start_wire);
      fsm_parse_ipv4.start;
    endrule
    rule clear_fsm if (clear_wire);
      fsm_parse_ipv4.abort;
    endrule
  
    method start = start_wire.send;
    method stop = clear_wire.send;
    interface parse_ethernet = toPut(unparsed_parse_ethernet_fifo);
    interface parsedOut_ipv4_protocol = toGet(parsed_ipv4_protocol_fifo);
  endmodule
  
negative.code:     packet_in_wire <= data_current.data;
    endrule
  
    Stmt parse_ethernet =
    seq
    action
      let data_this_cycle = packet_in_wire;
      Vector#(128, Bit#(1)) dataVec = unpack(data_this_cycle);
      Vector#(16, Bit#(1)) unparsed = takeAt(112, dataVec);
      let ethernet_t = extract_ethernet_t(pack(takeAt(0, dataVec)));
      let nextState = compute_next_state(ethernet_t.etherType);
      if (verbose) $display("Goto state ", nextState);
      if (nextState == StateParseIpv4) begin
        unparsed_parse_ipv4_fifo.enq(pack(unparsed));
  