public static Set<KeyRecord> extractKeyRecords(Role role){ if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeyRecords(); } else if(role instanceof RoleLink) { return extractKeyRecords(role.resolve()); } else if(role instanceof ListRole) { Set<KeyRecord> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeyRecords(r))); return result; } return null; }