private void WriteParameter(ItemWrapper wrapper, bool withModel, Action <string> validate)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                var message = new InMemoryMessage {
                    Stream = stream
                };
                var settings = new ODataMessageWriterSettings {
                    Version = ODataVersion.V4
                };

                using (ODataMessageWriter messageWriter = new ODataMessageWriter((IODataRequestMessage)message, settings, withModel ? model : null))
                {
                    ODataWriter     writer;
                    ResourceWrapper resource = wrapper as ResourceWrapper;
                    if (resource != null)
                    {
                        writer = messageWriter.CreateODataUriParameterResourceWriter(null, null);
                        WriteResource(writer, resource);
                    }
                    else
                    {
                        writer = messageWriter.CreateODataUriParameterResourceSetWriter(null, null);
                        WriteResourceSet(writer, wrapper as ResourceSetWrapper);
                    }

                    writer.Flush();
                }

                var actual = Encoding.UTF8.GetString(stream.ToArray());
                validate(actual);
            }
        }