code: public void register(Class<?> type) {
          Source typeSource = register(new TypeSource(type));
  
          for (Method method : type.getMethods()) {
              Component annotation = method.getAnnotation(Component.class);
              
              /**
               * Technically, this check that the annotation exists should not
               * need to happen. Unfortunately, the reflections library Iroh
               * uses sometimes returns stray types generated by javac that are
               * related to the compilation process of component types, but don't
               * otherwise carry the appropriate annotations. This additional
               * check ensures that none of those types are accidentally 
               * registered. This is a known feature (bug?) in the Java 
               * compilation process.
               */
              if (annotation != null) {
                  register(new MethodSource(typeSource, method));
              }
          }
          
          /**
           * Check that this type doesn't introduce a dependency cycle into Iroh's
           * resolution mechanics.
           */
          checkForCycles(type);
      }
docs: Registers a type and the return types of any methods annotated with
  {@link com.github.msoliter.iroh.container.annotations.Component} for
  dependency injection.
  
  @param type The type to be registered for dependency injection, including
  all of properly annotated factory methods.