private static void BufferNextExceptionChecking(this IBufferedArray buffer, int count)
    {
        Contracts.Requires.That(buffer != null);
        Contracts.Requires.That(count >= 0);

        if (!buffer.TryBufferNext(count))
        {
            throw new EndOfStreamException("End of buffered source reached.");
        }
    }
    public static bool TryNextDecimal(this IBufferedArray buffer, IByteConverter converter, out decimal value)
    {
        SharedContracts(buffer, converter);

        if (buffer.TryBufferNext(ByteLength.Decimal))
        {
            value = converter.ToDecimal(buffer.Buffer, 0);
            return(true);
        }
        else
        {
            value = default(decimal);
            return(false);
        }
    }
    public static bool TryNextFloat(this IBufferedArray buffer, IByteConverter converter, out float value)
    {
        SharedContracts(buffer, converter);

        if (buffer.TryBufferNext(ByteLength.Float))
        {
            value = converter.ToFloat(buffer.Buffer, 0);
            return(true);
        }
        else
        {
            value = default(float);
            return(false);
        }
    }
    public static bool TryNextChar(this IBufferedArray buffer, IByteConverter converter, out char value)
    {
        SharedContracts(buffer, converter);

        if (buffer.TryBufferNext(ByteLength.Char))
        {
            value = converter.ToChar(buffer.Buffer, 0);
            return(true);
        }
        else
        {
            value = default(char);
            return(false);
        }
    }
    public static bool TryNextULong(this IBufferedArray buffer, IByteConverter converter, out ulong value)
    {
        SharedContracts(buffer, converter);

        if (buffer.TryBufferNext(ByteLength.ULong))
        {
            value = converter.ToULong(buffer.Buffer, 0);
            return(true);
        }
        else
        {
            value = default(ulong);
            return(false);
        }
    }
    public static bool TryNextSByte(this IBufferedArray buffer, IByteConverter converter, out sbyte value)
    {
        SharedContracts(buffer, converter);

        if (buffer.TryBufferNext(ByteLength.SByte))
        {
            value = converter.ToSByte(buffer.Buffer, 0);
            return(true);
        }
        else
        {
            value = default(sbyte);
            return(false);
        }
    }