static void NoModifiesWithJoin(ModifiesInformation a, bool b)
  {
    if (b)
    {
    }
    else
    {
    }
    string tmpx = a.next.x; // should be unmodified
    string tmpy = a.next.y; // should be unmodified

    Contract.Assert(tmpx != null); // should result in a pre-condition suggestion
    Contract.Assert(tmpy != null); // should result in a pre-condition suggestion
  }
    static void NoModifiesWithJoin(ModifiesInformation a, bool b)
    {
        if (b)
        {
        }
        else
        {
        }
        string tmpx = a.next.x;        // should be unmodified
        string tmpy = a.next.y;        // should be unmodified

        Contract.Assert(tmpx != null); // should result in a pre-condition suggestion
        Contract.Assert(tmpy != null); // should result in a pre-condition suggestion
    }
    void ModifiesOnBranch2(bool b)
    {
        if (b)
        {
            this.next = new ModifiesInformation();
        }
        else
        {
        }
        string tmpx = this.next.x;     // should be modified
        string tmpy = this.next.y;     // should be modified

        Contract.Assert(tmpx != null); // should NOT result in a pre-condition suggestion
        Contract.Assert(tmpy != null); // should NOT result in a pre-condition suggestion
    }
  void ModifiesOnBranch2(bool b)
  {
    if (b)
    {
      this.next = new ModifiesInformation();
    }
    else
    {
    }
    string tmpx = this.next.x; // should be modified
    string tmpy = this.next.y; // should be modified

    Contract.Assert(tmpx != null); // should NOT result in a pre-condition suggestion
    Contract.Assert(tmpy != null); // should NOT result in a pre-condition suggestion
  }