code: public <S extends T> S get(String name) {
  
          String key = key(name);
  
          if (settings.containsKey(key)) return (S) settings.get(key);
  
          throw new InvalidParameterException("No setting found for name " + name + "(key=" + key + ") "
                  + "available settings are: " + settings.keySet());
  
      }
docs: Access the setting stored for given name. If not setting is found the provided
  name an {@link InvalidParameterException} will be thrown. The method is generic
  to allow simplified access to settings. This however means that if the incorrect
  type is provided a {@link ClassCastException} may be thrown.
  
  <pre>{@code
  SettingManager manager = ...;
  manger.add(new BooleanIOSetting("name", ...));
  
  BooleanIOSetting setting = manager.get("Name"); // okay
  OptionIOSetting setting  = manager.get("Name"); // class cast exception
  }</pre>
  
  @param name name of the setting to retrieve
  @param <S>  type that will be return
  
  @return instance of the setting for the provided name
  
  @see #get(String, Class)