public void BuildSerializeExpression(MessageMemberInfo member, BinarySerializationContext context)
		{
			context.Code.Add(
				Expression.Call(
					context.QueueParameter,
					MessageQueueMethods.WriteFloat,
					Expression.Add(context.PositionParameter, Expression.Constant(member.Offset)),
					member.GetProperty(context.MessageParameter)));
		}
		public Expression BuildDynamicSizeEvaluator(MessageMemberInfo member, BinarySerializationContext context)
		{
			return
				Expression.RightShift(
					Expression.Add(
						Expression.Constant(4),
						Expression.Call(
							((Func<string, int>)CircularArrayQueue.ExtensionMethods.GetByteCount).Method,
							member.GetProperty(context.MessageParameter))),
					Expression.Constant(2));
		}
		public void BuildSerializeExpression(MessageMemberInfo member, BinarySerializationContext context)
		{
			Expression expression = member.GetProperty(context.MessageParameter);
			if (member.Type != typeof(int))
			{
				expression = Expression.Convert(expression, typeof(int));
			}
			context.Code.Add(
				Expression.Call(
					context.QueueParameter,
					MessageQueueMethods.WriteInt32,
					Expression.Add(context.PositionParameter, Expression.Constant(member.Offset)),
					expression));
		}
		public void BuildSerializeExpression(MessageMemberInfo member, BinarySerializationContext context)
		{
			context.Code.Add(
				Expression.Call(
					context.QueueParameter,
					MessageQueueMethods.WriteInt32,
					Expression.Add(context.PositionParameter, Expression.Constant(member.Offset)),
					Expression.Subtract(context.DynamicPositionParameter, context.PositionParameter)));
			context.Code.Add(
				Expression.Assign(
					context.DynamicPositionParameter,
					Expression.Call(
						((Func<IMessageQueue, int, string, int>)CircularArrayQueue.ExtensionMethods.WriteStringContent).Method,
						context.QueueParameter,
						context.DynamicPositionParameter,
						member.GetProperty(context.MessageParameter))));
		}
		public static void BuildDeSerializationAndAssignment(
			this ITypeBinarySerializer binarySerializer, MessageMemberInfo member, BinarySerializationContext context)
		{
			Expression expression = member.GetProperty(context.MessageParameter);
			context.Code.Add(Expression.Assign(expression, binarySerializer.BuildDeserializeExpression(member, context)));
		}