isn't `!empty()` checking the whole chain? 

```php
[1] php> $a = new stdClass; $a->b = new \stdClass; $a;
 → stdClass (1)
   b => stdClass (0)
[2] php> empty($a->b);
 → FALSE
[3] php> empty($a->b->c);
 → TRUE
[4] php> empty($a->b->c->d);
 → TRUE
[5] php> empty($a->b->c->d->e);
 → TRUE
```