title: How does String.Equals(a,b) not produce a StackOverflowException?
body: <p>While examining the <code>String ==</code> operator, I noticed that it calls <code>String.Equals(string a, string b)</code>, meaning it's just a pass-through. </p>
  
  <p>Examining the <code>String.Equals(string a, string b)</code> method, I see that it does an equality check using the <code>==</code> operator. How is this actually working and not causing a <code>StackOverflowException</code> when doing something like <code>"x" == "x"</code> or <code>"x" == "y"</code>?</p>
  
  <p><strong>Update</strong>: I let JetBrains know and they made it a critical priority for dotPeek. <a href="https://youtrack.jetbrains.com/issue/DOTP-6789" rel="noreferrer">https://youtrack.jetbrains.com/issue/DOTP-6789</a></p>
  
  <p>I also added an issue on ILSpy's GitHub repo.</p>
  
  <p><img src="https://i.stack.imgur.com/LEXLE.png" alt="String Equality"></p>