public void PopulatePropertiesFromBuffer(ByteBuffer buffer, ushort propertyFlags)
 {
     _log.Debug("Property flags: " + propertyFlags);
     if ((propertyFlags & (1 << 15)) > 0)
     {
         ContentType = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 14)) > 0)
     {
         Encoding = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 13)) > 0)
     {
         Headers = EncodingUtils.ReadFieldTable(buffer);
     }
     if ((propertyFlags & (1 << 12)) > 0)
     {
         DeliveryMode = buffer.GetByte();
     }
     if ((propertyFlags & (1 << 11)) > 0)
     {
         Priority = buffer.GetByte();
     }
     if ((propertyFlags & (1 << 10)) > 0)
     {
         CorrelationId = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 9)) > 0)
     {
         ReplyTo = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 8)) > 0)
     {
         Expiration = EncodingUtils.ReadLongAsShortString(buffer);
     }
     if ((propertyFlags & (1 << 7)) > 0)
     {
         MessageId = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 6)) > 0)
     {
         Timestamp = buffer.GetUInt64();
     }
     if ((propertyFlags & (1 << 5)) > 0)
     {
         Type = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 4)) > 0)
     {
         UserId = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 3)) > 0)
     {
         AppId = EncodingUtils.ReadShortString(buffer);
     }
     if ((propertyFlags & (1 << 2)) > 0)
     {
         ClusterId = EncodingUtils.ReadShortString(buffer);
     }
 }