Why don't you accept `PermissionInterface` here?