anchor.diff:    hdr._padding = pack(_padding);
     return hdr;
   endfunction
  +
  +typedef struct {
  +  Maybe#(Bit#(32)) ipv4$dstAddr;
  +  Maybe#(Bit#(16)) ethernet$etherType;
  +  Maybe#(Bit#(9)) standard_metadata$egress_port;
  +  Maybe#(RouteActionT) routing$p4_action;
  +  Maybe#(Bool) valid_ipv4;
  +  Maybe#(Bool) valid_ethernet;
  +} MetadataT deriving (Bits, Eq);
  +
  +instance DefaultValue#(MetadataT);
  +  defaultValue = unpack(0);
  +endinstance
  +instance DefaultMask#(MetadataT);
  +  defaultMask = unpack(maxBound);
  +endinstance
  +
  +instance FShow#(MetadataT);
  +  function Fmt fshow(MetadataT p);
  +    return $format("MetadataT: ipv4$dstAddr=%h, ethernet$etherType=%h, standard_metadata$egress_port=%h", p.ipv4$dstAddr, p.ethernet$etherType, p.standard_metadata$egress_port);
  +  endfunction
  +endinstance
   
   typedef struct {
     Bit#(4) version;
  
positive.code:   let verbose = False;
    FIFOF#(Bit#(16)) unparsed_parse_ethernet_fifo <- mkBypassFIFOF;
  
    FIFOF#(Bit#(8)) parsed_ipv4_protocol_fifo <- mkFIFOF;
    FIFOF#(Bit#(32)) parsed_ipv4_dstAddr_fifo <- mkFIFOF;
    FIFOF#(Bit#(144)) internal_fifo_144 <- mkSizedFIFOF(1);
  
  
negative.code:   rule stop_fsm if (stop_wire);
      fsm_deparse_ethernet.abort;
    endrule
    method start = start_wire.send;
    method stop = stop_wire.send;
    interface deparse_ipv4 = toGet(deparse_ipv4_fifo);
  endmodule
  
  