/// <summary>
            /// Initializes a new instance of the JsonBinaryNavigator class
            /// </summary>
            /// <param name="buffer">The (UTF-8) buffer to navigate.</param>
            /// <param name="skipValidation">whether to skip validation or not.</param>
            public JsonBinaryNavigator(byte[] buffer, bool skipValidation = false)
            {
                if (buffer == null)
                {
                    throw new ArgumentNullException($"{nameof(buffer)} can not be null");
                }

                if (buffer.Length < 1)
                {
                    throw new ArgumentException($"{nameof(buffer)} must have at least one byte.");
                }

                this.rootNode = new BinaryNode(1, JsonBinaryEncoding.GetNodeType(buffer[1]));

                // false, since stream is not writeable
                // true, since buffer is visible
                this.binaryReader = new LittleEndianBinaryReader(new MemoryStream(buffer, 0, buffer.Length, false, true));
                this.buffer       = buffer;
            }
 private BinaryNode CreateBinaryNode(int offset)
 {
     return(new BinaryNode(offset, JsonBinaryEncoding.GetNodeType(this.buffer[offset])));
 }