code: public static ReadPreference valueOf(final String name) {
          notNull("name", name);
  
          String nameToCheck = name.toLowerCase();
  
          if (nameToCheck.equals(PRIMARY.getName().toLowerCase())) {
              return PRIMARY;
          }
          if (nameToCheck.equals(SECONDARY.getName().toLowerCase())) {
              return SECONDARY;
          }
          if (nameToCheck.equals(SECONDARY_PREFERRED.getName().toLowerCase())) {
              return SECONDARY_PREFERRED;
          }
          if (nameToCheck.equals(PRIMARY_PREFERRED.getName().toLowerCase())) {
              return PRIMARY_PREFERRED;
          }
          if (nameToCheck.equals(NEAREST.getName().toLowerCase())) {
              return NEAREST;
          }
  
          throw new IllegalArgumentException("No match for read preference of " + name);
      }
docs: Creates a read preference from the given read preference name.
  
  @param name the name of the read preference
  @return the read preference