code: public static <T> List<T> createServiceObjects(String... pDescriptorPaths) {
          try {
              ServiceEntry.initDefaultOrder();
              TreeMap<ServiceEntry,T> extractorMap = new TreeMap<ServiceEntry,T>();
              for (String descriptor : pDescriptorPaths) {
                  readServiceDefinitions(extractorMap, descriptor);
              }
              ArrayList<T> ret = new ArrayList<T>();
              for (T service : extractorMap.values()) {
                  ret.add(service);
              }
              return ret;
          } finally {
              ServiceEntry.removeDefaultOrder();
          }
      }
docs: Create a list of services ordered according to the ordering given in the
  service descriptor files. Note, that the descriptor will be looked up
  in the whole classpath space, which can result in reading in multiple
  descriptors with a single path. Note, that the reading order for multiple
  resources with the same name is not defined.
  
  @param pDescriptorPaths a list of resource paths which are handle in the given order.
  Normally, default service should be given as first parameter so that custom
  descriptors have a chance to remove a default service.
  @param <T> type of the service objects to create
  @return a ordered list of created services or an empty list.