Consider the following classes in C#:

```
class A
{
    public B b;
}

class B
{
    public A a;
}

```

Later:

```
{
    A a = new A();
    B b = new B();
    a.b = b;
    b.a = a;
}

```

The question:
When execution falls out of this scope, will either instance be garbage collected, as there is still a reference to each of them, held by the other?