code: @Override
      public Set<Algorithm> readAlgorithms() throws AlgorithmSourceReadException {
          initializeIfNeeded();
          if (algorithms != null) {
              if (!readAlgorithmsCalled && getBackends() != null) {
                  for (AlgorithmSourceBackend backend : getBackends()) {
                      backend.readAlgorithms(algorithms);
                  }
                  readAlgorithmsCalled = true;
              }
              return algorithms.getAlgorithms();
          }
          return Collections.emptySet();
      }
docs: Reads all algorithms in this algorithm source.
  
  @return an unmodifiable <code>Set</code> of <code>Algorithm</code>
  objects. Guaranteed not to return <code>null</code>.
  
  @throws AlgorithmSourceReadException when an error occurs in a backend
  reading an algorithm.