/// <summary>
		///		Create <see cref="MessagePackObject"/> which wraps appropriate empty collection.
		/// </summary>
		/// <param name="header">Header which has type information.</param>
		/// <returns><see cref="MessagePackObject"/> which wraps appropriate empty collection.</returns>
		private static MessagePackObject CreateEmptyCollection( MessagePackHeader header )
		{
			Contract.Assert( header.ValueOrLength == 0, header.ToString() );

			if ( ( header.Type & MessageType.IsArray ) != 0 )
			{
				return new MessagePackObject( _emptyArray, true );
			}
			else if ( ( header.Type & MessageType.IsMap ) != 0 )
			{
				return new MessagePackObject( _emptyMap, true );
			}
			else
			{
				return _emptyBinary.Value;
			}
		}