Ok, here's a suggestion for a test with smaller npath complexity:

```php
if (null === $parent) {
    $this->parent = null;

    return;
}

if (is_string($parent)) {
    $this->parent = new self($parent);

    return;
}

throw new Exception\InvalidArgumentException(
    sprintf(
        '%s expects either a string or Zend\Permissions\Acl\Role\RoleInterface 'instance; received "%s"',
        __METHOD__,
        is_object($parent) ? get_class($parent) : gettype($parent)
));
```