void delegate() foo()
{
    size_t value = 0;
    void check()
    {
        assert(value == 0);
    }
    void nest1()
    {
        void nest2() { check(); }
        nest2();
    }
    return &nest1;
}
void main()
{
    foo()();
}
void delegate() foo()
{
    size_t value = 0;
    void check()
    {
        assert(value == 0);
    }
    void nest1()
    {
        void nest2() { check(); }
        nest2();
    }
    return &nest1;
}
void main()
{
    foo()();
}