@Override
    public OFOxmBsnL3InterfaceClassIdMasked readFrom(ChannelBuffer bb) throws OFParseError {
      // fixed value property typeLen == 0x30908L
      int typeLen = bb.readInt();
      if (typeLen != 0x30908)
        throw new OFParseError("Wrong typeLen: Expected=0x30908L(0x30908L), got=" + typeLen);
      ClassId value = ClassId.read4Bytes(bb);
      ClassId mask = ClassId.read4Bytes(bb);

      OFOxmBsnL3InterfaceClassIdMaskedVer12 oxmBsnL3InterfaceClassIdMaskedVer12 =
          new OFOxmBsnL3InterfaceClassIdMaskedVer12(value, mask);
      if (logger.isTraceEnabled())
        logger.trace("readFrom - read={}", oxmBsnL3InterfaceClassIdMaskedVer12);
      return oxmBsnL3InterfaceClassIdMaskedVer12;
    }
    @Override
    public OFOxmBsnL3InterfaceClassId readFrom(ByteBuf bb) throws OFParseError {
      // fixed value property typeLen == 0x30804L
      int typeLen = bb.readInt();
      if (typeLen != 0x30804)
        throw new OFParseError("Wrong typeLen: Expected=0x30804L(0x30804L), got=" + typeLen);
      ClassId value = ClassId.read4Bytes(bb);

      OFOxmBsnL3InterfaceClassIdVer13 oxmBsnL3InterfaceClassIdVer13 =
          new OFOxmBsnL3InterfaceClassIdVer13(value);
      if (logger.isTraceEnabled())
        logger.trace("readFrom - read={}", oxmBsnL3InterfaceClassIdVer13);
      return oxmBsnL3InterfaceClassIdVer13;
    }