/// <summary>
        /// Create all internal structures.
        /// </summary>
        public void Create(ProxySerializationContext context)
        {
            foreach (var property in type.Properties)
            {
                if (!Ignore(property))
                {
                    var builder       = context.GetDeserializer(property.PropertyType.Resolve());
                    var builderHelper = new DeserializerBuilderHelper
                    {
                        TypeDeserializerBuilder = builder,
                        PropertyName            = property.Name
                    };

                    FillBuilderHelper(type, property, builderHelper);

                    builders.Add(property.Name, builderHelper);
                }
            }
        }
        /// <summary>
        /// Create all internal structures.
        /// </summary>
        public void Create(ProxySerializationContext context)
        {
            foreach (var property in type.Properties)
            {
                if (!Ignore(property))
                {
                    var builder = context.GetDeserializer(property.PropertyType.Resolve());
                    var builderHelper = new DeserializerBuilderHelper
                        {
                            TypeDeserializerBuilder = builder,
                            PropertyName = property.Name
                        };

                    FillBuilderHelper(type, property, builderHelper);

                    builders.Add(property.Name, builderHelper);
                }
            }
        }
        private void ProcessSerializers(ProxySerializationContext context)
        {
            if (InterfaceMethod.ReturnType != null)
            {
                var typeDefinition = InterfaceMethod.ReturnType.Resolve();
                if (typeDefinition.FullName != "System.Void")
                {
                    typeDeserializerBuilder = context.GetDeserializer(typeDefinition);
                    deserializerTypeIsArray = InterfaceMethod.ReturnType.IsArray;
                }
            }

            if (!string.IsNullOrEmpty(toSerializeArgument))
            {
                var parameter      = InterfaceMethod.Parameters.First(p => p.Name == toSerializeArgument);
                var typeDefinition = parameter.ParameterType.Resolve();
                typeSerializerBuilder = context.GetSerializer(typeDefinition);
                serializerTypeIsArray = parameter.ParameterType.IsArray;
            }
        }
        private void ProcessSerializers(ProxySerializationContext context)
        {
            if (InterfaceMethod.ReturnType != null)
            {
                var typeDefinition = InterfaceMethod.ReturnType.Resolve();
                if (typeDefinition.FullName != "System.Void")
                {
                    typeDeserializerBuilder = context.GetDeserializer(typeDefinition);
                    deserializerTypeIsArray = InterfaceMethod.ReturnType.IsArray;
                }
            }

            if (!string.IsNullOrEmpty(toSerializeArgument))
            {
                var parameter = InterfaceMethod.Parameters.First(p => p.Name == toSerializeArgument);
                var typeDefinition = parameter.ParameterType.Resolve();
                typeSerializerBuilder = context.GetSerializer(typeDefinition);
                serializerTypeIsArray = parameter.ParameterType.IsArray;
            }
        }