title: Overriding coroutines not working as expected
body: <pre><code>protected virtual IEnumerator Lerp()
      {
          Debug.Log("BaseMethod");
  
          while (true)
          {
              speed = startSpeed;
              currentColor = SpriteRend.color;
              float r = Random.Range(0f, 1f),
                  g = Random.Range(0f, 1f),
                  b = Random.Range(0f, 1f),
                  a = Random.Range(0f, 1f);
              nextColor = new Color(r, g, b, a);
  
              while (nextColor != (currentColor = Color.Lerp(currentColor, nextColor, speed * Time.deltaTime)))
              {
  
                  if (AnyRgbValueReached())
                  {
                      speed += 2f;
                  }
  
                  SpriteRend.color = currentColor;
                  yield return null;
              }
          }
      }
  
  
  
  protected override IEnumerator Lerp()
      {
          if (IsFirst)
          {
              while (!Game.GameInstance.GameOver)
              {
                  if (Recording)
                  {
                      Debug.Log("SubMethod");
                      yield return base.Lerp();                                                
                  }
                  else
                  {
                      yield return null;
  
                  }
              }
          }
          else
          {
              yield return new WaitForEndOfFrame();
  
              while (!Game.GameInstance.GameOver)
              {
                  SpriteRend.color = firstTop.GetComponent&lt;SpriteRenderer&gt;().color;
                  yield return null;
              }
          }
      }
  </code></pre>
  
  <p>Note: these 2 methods aren't in 1 class, they are in 2 separate classes.</p>
  
  <p>The problem is that the Debug.Log("BaseMethod"); doesn't get printed while the Debug.Log("SubMethod"); is being printed every single frame. Why is this happening?</p>