docs: protected final List<ExtensionFunction> initExtensions(final WebSocketHttpExchange exchange) {
          String extHeader = exchange.getResponseHeaders().get(Headers.SEC_WEB_SOCKET_EXTENSIONS_STRING) != null ?
                  exchange.getResponseHeaders().get(Headers.SEC_WEB_SOCKET_EXTENSIONS_STRING).get(0) : null;
  
          List<ExtensionFunction> negotiated = new ArrayList<>();
          if (extHeader != null) {
              List<WebSocketExtension> extensions = WebSocketExtension.parse(extHeader);
              if (extensions != null && !extensions.isEmpty()) {
                  for (WebSocketExtension ext : extensions) {
                      for (ExtensionHandshake extHandshake : availableExtensions) {
                          if (extHandshake.getName().equals(ext.getName())) {
                              negotiated.add(extHandshake.create());
                          }
                      }
                  }
              }
          }
          return negotiated;
      }