PayloadSizeInBytes( payload_size_in_bytes ),
     Payload( new uint8_t[ payload_size_in_bytes ] )
 {
-    BOOST_ASSERT( 0 < payload_size_in_bytes );
+    BOOST_ASSERT( 0 < PayloadSizeInBytes );
+    BOOST_ASSERT( Payload.get() != NULL );
 
     fill( Payload.get(), Payload.get() + PayloadSizeInBytes, 0 );
 }
     Payload( new uint8_t[ other.PayloadSizeInBytes ] )
 {
     BOOST_ASSERT( 0 < PayloadSizeInBytes );
-    BOOST_ASSERT( PayloadSizeInBytes == other.PayloadSizeInBytes );
-    BOOST_ASSERT( Payload.get() == NULL );
+    BOOST_ASSERT( Payload.get() != NULL );
     BOOST_ASSERT( other.Payload.get() != NULL );
 
     copy( other.Payload.get(), other.Payload.get() + PayloadSizeInBytes, Payload.get() );
+
+    BOOST_ASSERT( PayloadSizeInBytes == other.PayloadSizeInBytes );
 }
 
 MessagePayload::~MessagePayload()
 MessagePayload& MessagePayload::operator=( const MessagePayload &other )
 {
     BOOST_ASSERT( 0 < PayloadSizeInBytes );
-    BOOST_ASSERT( PayloadSizeInBytes == other.PayloadSizeInBytes );
     BOOST_ASSERT( Payload.get() != NULL );
     BOOST_ASSERT( other.Payload.get() != NULL );
 
     copy( other.Payload.get(), other.Payload.get() + PayloadSizeInBytes, Payload.get() );
 
+    BOOST_ASSERT( PayloadSizeInBytes == other.PayloadSizeInBytes );
+
     return *this;
 }