<doc>
    <assembly>
        <name>Demo</name>
    </assembly>
    <members>
        <member name="T:Cadenza.ObjectCoda">
            <summary>
             Extension methods on <see cref="T:System.Object" />.
            </summary>
            <remarks>To be added.</remarks>
        </member>
        <member name="M:Cadenza.ObjectCoda.With``2(``0,System.Func{``0,``1})">
            <typeparam name="TSource">The type to operate on.</typeparam>
            <typeparam name="TResult">The type to return.</typeparam>
            <param name="self">
              A <typeparamref name="TSource" /> containing the value to manipulate.
              This value may be <see langword="null" /> (unlike most other
              extension methods).
            </param>
            <param name="selector">
              A <see cref="T:System.Func{TSource,TResult}" /> which will be
              invoked with <paramref name="self" /> as a parameter.
            </param>
            <summary>
              Supports chaining otherwise temporary values.
            </summary>
            <returns>
              The value of type <typeparamref name="TResult" /> returned by
              <paramref name="selector" />.
            </returns>
            <remarks>
                <para>
                    <c>With</c> is useful for easily using an intermediate value within
                an expression "chain" without requiring an explicit variable
                declaration (which is useful for reducing in-scope variables, as no
                variable is explicitly declared).
              </para>
                <code lang="C#" src="../../example.cs#With">Console.WriteLine(
    args.OrderBy(v =&gt; v)
    .With(c =&gt; c.ElementAt (c.Count()/2)));
</code>
            </remarks>
            <exception cref="T:System.ArgumentNullException">
                <paramref name="selector" /> is <see langword="null" />.
            </exception>
        </member>
    </members>
</doc>

