code: public List<List<String>> getImplicitPermissionsForUser(String user) {
          List<String> roles = new ArrayList<>();
          roles.add(user);
          roles.addAll(this.getImplicitRolesForUser(user));
          List<List<String>> res = new ArrayList<>();
          for (String n : roles) {
              res.addAll(this.getPermissionsForUser(n));
          }
          return res;
      }
docs: getImplicitPermissionsForUser gets implicit permissions for a user or role.
  Compared to getPermissionsForUser(), this function retrieves permissions for inherited roles.
  For example:
  p, admin, data1, read
  p, alice, data2, read
  g, alice, admin
  <p>
  getPermissionsForUser("alice") can only get: [["alice", "data2", "read"]].
  But getImplicitPermissionsForUser("alice") will get: [["admin", "data1", "read"], ["alice", "data2", "read"]].
  
  @param user the user.
  @return implicit permissions for a user or role.