Overriding Methods with Tuples and Field Name Rules in C# 7.0
<p>I was reading this <a href="https://github.com/dotnet/roslyn/blob/master/docs/features/tuples.md#overloading-overriding-hiding" rel="nofollow noreferrer">page</a>, which is officially referenced in the <a href="https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes" rel="nofollow noreferrer">release notes</a> of Visual Studio 17 RC, it states the following:</p>

<blockquote>
  <p>For the purpose of Overloading Overriding Hiding, tuples of the same
  types and lengths as well as their underlying ValueTuple types are
  considered equivalent. All other differences are immaterial.</p>
  
  <p>When overriding a member it is permitted to use tuple types with same
  or different field names than in the base member.</p>
  
  <p>A situation where same field names are used for non-matching fields
  between base and derived member signatures, a warning is reported by
  the compiler</p>
</blockquote>

<p>When giving that a shot:</p>

<pre><code>public abstract class Foo
{
    public abstract void AbstractTuple((int a, string b) tuple);

    public virtual void OverrideTuple((int a, string b) tuple)
    {
        Console.WriteLine($"First= {tuple.a}  Second = {tuple.b}");
    }
}

public class Bar : Foo
{
    public override void AbstractTuple((int c, string d) tuple)
    {
        Console.WriteLine($"First= {tuple.c}  Second= {tuple.d}");
    }

    public override void OverrideTuple((int c, string d) tuple)
    {
        base.OverrideTuple(tuple);
    }
}
</code></pre>

<p>I get the following errors:</p>

<blockquote>
  <p>Error CS8139  'Bar.AbstractTuple((int c, string d))': cannot change
  tuple element names when overriding inherited member
  'Foo.AbstractTuple((int a, string b))'</p>
</blockquote>

<p>and</p>

<blockquote>
  <p>Error CS8139  'Bar.OverrideTuple((int c, string d))': cannot change
  tuple element names when overriding inherited member
  'Foo.OverrideTuple((int a, string b))'</p>
</blockquote>

<p>The Questions are:</p>

<ol>
<li><p>Is the official design Notes wrong ? Or is this a behavior that is yet to be implemented in the official C# 7.0 Release ?</p></li>
<li><p>If this is the correct behavior, does it make sense that the tuple Field Names has to be the same in the overridden method ? Keeping in mind that two methods with same Tuples <code>(int a, int b)</code> and <code>(int c, int d)</code> are not considered overload candidates and generate an error!</p></li>
<li><p>Do we have official C# 7.0 Features documentation somewhere ?</p></li>
</ol>