code: public BaseListener getListener(Object strBehaviorClass, boolean bExactMatch)
      {
          BaseListener listener = m_nextListener;
          if (listener == null)
              return null;
          if (!bExactMatch)
          {
              try {
                  if (strBehaviorClass instanceof String)
                      strBehaviorClass = Class.forName((String)strBehaviorClass);
                  if (((Class<?>)strBehaviorClass).isAssignableFrom(listener.getClass()))
                      return listener;
                  else
                      return listener.getListener(strBehaviorClass, bExactMatch);
              } catch (ClassNotFoundException ex) {
                  ex.printStackTrace();
                  return null;
              }
          }
          if (strBehaviorClass instanceof String)
          {
              String strClass = listener.getClass().getName();
              if (((String)strBehaviorClass).indexOf('.') == -1)
              {   // If identifier is not fully qualified, strip the package from the class
                  if (strClass.lastIndexOf('.') != -1)
                      strClass = strClass.substring(strClass.lastIndexOf('.') + 1);
              }
              if (strClass.equalsIgnoreCase((String)strBehaviorClass))
                  return listener;
          }
          else if (listener.getClass().equals(strBehaviorClass))
              return listener;
          return listener.getListener(strBehaviorClass, bExactMatch);
      }
docs: Get the listener with this class identifier.
  Note: You can pass the full class name, or the short class name or (preferably) the class.
  @param bExactMatch Only returns classes that are an exact match... if false, return classes that are an instanceof the class
  @param strListenerClass The name of the class I'm looking for.
  @return The first listener of this class or null if no match.