class PermissionParser extends Parser<T> {

    protected void check(T type, Permission permission) {
        String name = permission.value();
        
        checkMalformed(type, permission);
        
        if (Set.of(permission.children()).contains(name)) {
            environment.warn(type, format(name, "inherits itself"));
        }
        
        if (!names.add(name)) {
            environment.error(type, format(name, "already exists"));
        }
    }

    public  PermissionParser(Environment<T> environment);

}