code: public static void addDependencyFactory(Object... dependencyFactories) {
          for (Object dependencyFactory : dependencyFactories) {
              if (!dependencyFactory.getClass().isAnnotationPresent(DependencyFactory.class)) {
                  throw new AvicennaRuntimeException(
                          dependencyFactory.getClass() + " should be annotated with DependencyFactory.");
              }
              if (Avicenna.dependencyFactories.contains(dependencyFactory.getClass())) {
                  throw new AvicennaRuntimeException(
                          dependencyFactory.getClass() + " has already been added to container.");
              }
              addDependencyFactoryToContainer(dependencyFactory);
              Avicenna.dependencyFactories.add(dependencyFactory.getClass());
          }
      }
docs: Adds objects annotated by {@link org.labcrypto.avicenna.DependencyFactory}. Added object
  has some methods or fields which supplied dependencies.
  
  @param dependencyFactories An object annotated by {@link org.labcrypto.avicenna.DependencyFactory}.