code: public List<GroupMember> backups(int numBackups) {
      if (primary == null || candidates.isEmpty()) {
        return Collections.emptyList();
      }
      return candidates.subList(1, Math.min(candidates.size(), numBackups + 1));
    }
docs: Returns an ordered list of backup members.
  <p>
  The backups are populated from the set of {@link #candidates()} based on order and group information. The list of
  backups is guaranteed not to contain any duplicate {@link MemberGroup}s unless not enough groups exist to
  satisfy the number of backups.
  
  @param numBackups the number of backups to return
  @return an ordered list of backup members