code: public static ConfigConverter<ServerSocketSettings> ofServerSocketSettings() {
  		return new ComplexConfigConverter<ServerSocketSettings>(ServerSocketSettings.create(DEFAULT_BACKLOG)) {
  			@Override
  			protected ServerSocketSettings provide(Config config, ServerSocketSettings defaultValue) {
  				return Function.<ServerSocketSettings>identity()
  						.andThen(apply(
  								ServerSocketSettings::withBacklog,
  								config.get(ofInteger(), "backlog", defaultValue.getBacklog())))
  						.andThen(applyIfNotNull(
  								ServerSocketSettings::withReceiveBufferSize,
  								config.get(ofMemSize(), "receiveBufferSize",
  										defaultValue.hasReceiveBufferSize() ? defaultValue.getReceiveBufferSize() : null)))
  						.andThen(applyIfNotNull(
  								ServerSocketSettings::withReuseAddress,
  								config.get(ofBoolean(), "reuseAddress",
  										defaultValue.hasReuseAddress() ? defaultValue.getReuseAddress() : null)))
  						.apply(ServerSocketSettings.create(DEFAULT_BACKLOG));
  			}
  		};
  	}
docs: compound