docs: public static NodeExtension create(Node node, List<String> extensionPriorityList) {
          try {
              ClassLoader classLoader = node.getConfigClassLoader();
              Class<NodeExtension> chosenExtension = null;
              int chosenPriority = Integer.MAX_VALUE;
              for (Iterator<Class<NodeExtension>> iter =
                   ServiceLoader.classIterator(NodeExtension.class, NODE_EXTENSION_FACTORY_ID, classLoader);
                   iter.hasNext();
              ) {
                  Class<NodeExtension> currExt = iter.next();
                  warnIfDuplicate(currExt);
                  int currPriority = extensionPriorityList.indexOf(currExt.getName());
                  if (currPriority == -1) {
                      continue;
                  }
                  if (currPriority < chosenPriority) {
                      chosenPriority = currPriority;
                      chosenExtension = currExt;
                  }
              }
              if (chosenExtension == null) {
                  throw new HazelcastException("ServiceLoader didn't find any services registered under "
                          + NODE_EXTENSION_FACTORY_ID);
              }
              return chosenExtension.getConstructor(Node.class).newInstance(node);
          } catch (Exception e) {
              throw ExceptionUtil.rethrow(e);
          }
     }