/// <summary>Encodes a <paramref name="value"/>, /// and write it on an <paramref name="output"/> stream.</summary> /// <param name="value">A value to encode.</param> /// <param name="output">A stream that a value is printed on.</param> /// <exception cref="ArgumentException">Thrown when a given /// <paramref name="output"/> stream is not writable.</exception> public void Encode(IValue value, Stream output) { if (!output.CanWrite) { throw new ArgumentException( "stream cannot be written to", nameof(output) ); } value.EncodeToStream(output); }