private void _iterateFuzzyConverters (@Nonnull final Class <?> aSrcClass,
                                        @Nonnull final Class <?> aDstClass,
                                        @Nonnull final ITypeConverterCallback aCallback)
  {
    // For all possible source classes
    for (final WeakReference <Class <?>> aCurWRSrcClass : ClassHierarchyCache.getClassHierarchyIterator (aSrcClass))
    {
      final Class <?> aCurSrcClass = aCurWRSrcClass.get ();
      if (aCurSrcClass != null)
      {
        // Do we have a source converter?
        final Map <Class <?>, ITypeConverter <?, ?>> aConverterMap = m_aConverter.get (aCurSrcClass);
        if (aConverterMap != null)
        {
          // Check explicit destination classes
          final ITypeConverter <?, ?> aConverter = aConverterMap.get (aDstClass);
          if (aConverter != null)
          {
            // We found a match -> invoke the callback!
            if (aCallback.call (aCurSrcClass, aDstClass, aConverter).isBreak ())
              break;
          }
        }
      }
    }
  }
private void _iterateFuzzyConverters ( @ Nonnull final Class < ? > aSrcClass , @ Nonnull final Class < ? > aDstClass , @ Nonnull final ITypeConverterCallback aCallback ) { for ( final WeakReference < Class < ? > > aCurWRSrcClass : ClassHierarchyCache . getClassHierarchyIterator ( aSrcClass ) ) { final Class < ? > aCurSrcClass = aCurWRSrcClass . get ( ) ; if ( aCurSrcClass != null ) { final Map < Class < ? > , ITypeConverter < ? , ? > > aConverterMap = m_aConverter . get ( aCurSrcClass ) ; if ( aConverterMap != null ) { final ITypeConverter < ? , ? > aConverter = aConverterMap . get ( aDstClass ) ; if ( aConverter != null ) { if ( aCallback . call ( aCurSrcClass , aDstClass , aConverter ) . isBreak ( ) ) break ; } } } } }
Iterate all possible fuzzy converters from source class to destination
class.

@param aSrcClass
Source class.
@param aDstClass
Destination class.
@param aCallback
The callback to be invoked once a converter was found. Must return
either {@link EContinue#CONTINUE} to continue iteration or
{@link EContinue#BREAK} to break iteration at the current position.