code: protected synchronized Collection<T> findAllInstances() {
          if (this.allInstances == null) {
              this.allInstances = new ArrayList<>();
  
              ServiceLocator serviceLocator = Scope.getCurrentScope().getServiceLocator();
              this.allInstances.addAll(serviceLocator.findInstances(getPluginClass()));
          }
  
          return this.allInstances;
      }
docs: Finds implementations of the given interface or class and returns instances of them.
  Standard implementation uses {@link ServiceLoader} to find implementations and caches results in {@link #allInstances} which means the same objects are always returned.
  If the instances should not be treated as singletons, clone the objects before returning them from {@link #getPlugin(Object...)}.