class AuditAuthorizer implements IAuthorizer {

    @Override
    public Set<Permission> authorize(AuthenticatedUser user, IResource resource)
    {
        if (resource.hasParent() && resource instanceof RoleResource)
        {
            Set<Permission> permissions = EnumSet.copyOf(wrappedAuthorizer.authorize(user, resource));
            permissions.add(Permission.ALTER);
            return permissions;
        }
        else
        {
            return wrappedAuthorizer.authorize(user, resource);
        }
    }

    public  AuditAuthorizer();
    @VisibleForTesting  AuditAuthorizer(IAuthorizer wrappedAuthorizer);

}