title: casting to base class, and calling its virtual method results in stackoverflow exception
body: <p>Consider this code:</p>
  
  <pre><code>public class Person
  {
      public virtual void UpdateLastLogin()
      {
          // business of last login here
      }
  }
  
  public class Student : Person
  {
      public override void UpdateLastLogin()
      {
          // logging something specific to person
          ((Person)this).UpdatelastLogin();
      }
  }
  </code></pre>
  
  <p>Why Above code throws STACKOVERFLOW exception?</p>
  
  <p>But this doesn't:</p>
  
  <pre><code>public class Person
  {
      public virtual void UpdateLastLogin()
      {
          // business of last login here
      }
  }
  
  public class Student : Person
  {
      public override void UpdateLastLogin()
      {
          // logging something specific to person
          base.UpdatelastLogin();
      }
  }
  </code></pre>