anchor.diff:    endrule
   
     Empty init_state <- mkStateStart(curr_state, data_in_fifo, start_fsm);
  -  ParseIpv4 parse_ipv4 <- mkStateParseIpv4(curr_state, data_in_fifo);
  +  ParseIpv4 parse_ipv4 <- mkStateParseIpv4(curr_state, data_in_fifo, parse_state_in_fifo[0]);
     ParseEthernet parse_ethernet <- mkStateParseEthernet(curr_state, data_in_fifo);
     mkConnection(parse_ipv4.parse_ethernet, parse_ethernet.parse_ipv4);
     rule start if (start_fsm);
  
positive.code:       let masked_data = pack(buff_data) & pack(curr_mask);
        let curr_data = masked_data | pack(curr_meta);
        let nextState = compute_next_state(ipv4_meta.first.protocol);
        $display("(%0d) compute_next_state ", $time, fshow(ipv4_meta.first.protocol));
        $display("(%0d) Goto ", $time, fshow(nextState));
        ipv4_meta.deq;
        ipv4_mask.deq;
        state <= nextState;
  
negative.code:   let verbose = True;
    FIFOF#(Bit#(16)) unparsed_parse_ipv4_fifo <- mkSizedFIFOF(1);
  
    FIFOF#(Bit#(16)) parsed_etherType_fifo <- mkFIFOF;
  
    Wire#(Bit#(128)) packet_in_wire <- mkDWire(0);
    Vector#(4, Wire#(Maybe#(ParserState))) next_state_wire <- replicateM(mkDWire(tagged Invalid));
  