code: public static Constructor<?> getConstructor2(ClassInjector injector,
                                                   Class<?>[] classes,
                                                   String[] prefixes,
                                                   int observerMode)
          throws IllegalArgumentException
      {
          return getConstructor2(injector, classes, prefixes, null, observerMode);
      }
docs: Returns the constructor for a class that merges all of the given source
  classes. The constructor accepts one parameter type: an
  {@link InstanceFactory}. Merged instances are requested only when
  first needed. An IllegalArgumentException is thrown if any of the given
  conditions are not satisfied:
  
  <ul>
  <li>None of the given classes can represent a primitive type
  <li>A source class can only be provided once, unless paired with a
  unique prefix.
  <li>Any non-public classes must be in the same common package
  <li>Duplicate methods cannot have conflicting return types, unless a
  prefix is provided.
  <li>The given classes must be loadable from the given injector
  </ul>
  
  To help resolve ambiguities, a method prefix can be specified for each
  passed in class. For each prefixed method, the non-prefixed method is
  also generated, unless that method conflicts with the return type of
  another method. If any passed in classes are or have interfaces, then
  those interfaces will be implemented only if there are no conflicts.
  An optional implementation of the MethodInvocationEventObserver
  interface may be supplied.
  
  <p>The array of prefixes may be null, have null elements or
  be shorter than the array of classes. A prefix of "" is treated as null.
  
  @param injector ClassInjector that will receive class definition
  @param classes Source classes used to derive merged class
  @param prefixes Optional prefixes to apply to methods of each generated
  class to eliminate duplicate method names
  @param observerMode int Invocation event handling modes.