code: def _serialize_properties(self):
          
          shift = 15
          flag_bits = 0
          flags = []
          raw_bytes = AMQPWriter()
          for key, proptype in self.PROPERTIES:
              val = self.properties.get(key, None)
              if val is not None:
                  if shift == 0:
                      flags.append(flag_bits)
                      flag_bits = 0
                      shift = 15
  
                  flag_bits |= (1 << shift)
                  if proptype != 'bit':
                      getattr(raw_bytes, 'write_' + proptype)(val)
  
              shift -= 1
  
          flags.append(flag_bits)
          result = AMQPWriter()
          for flag_bits in flags:
              result.write_short(flag_bits)
          result.write(raw_bytes.getvalue())
  
          return result.getvalue()
docs: serialize the 'properties' attribute (a dictionary) into
          the raw bytes making up a set of property flags and a
          property list, suitable for putting into a content frame header.