code: @Override
      public Algorithm readAlgorithm(String id) throws AlgorithmSourceReadException {
          Algorithm result = null;
          if (id != null) {
              if (algorithms != null) {
                  result = algorithms.getAlgorithm(id);
              }
              if (result == null) {
                  initializeIfNeeded();
                  for (AlgorithmSourceBackend backend : getBackends()) {
                      result = backend.readAlgorithm(id, algorithms);
                      if (result != null) {
                          break;
                      }
                  }
              }
          }
  
          return result;
      }
docs: Read an algorithm with the given id.
  
  @param id an algorithm id {@link String}.
  @return an {@link Algorithm} object, or <code>null</code> if no algorithm
  with the specified id exists. If a <code>null</code> id is      * specified, <code>null</code> is returned.
  
  @throws AlgorithmSourceReadException when an error occurs in a backend
  reading the specified algorithm.