{
    // Get the adapter from the factory.
    //
    ITableItemFontProvider tableItemFontProvider = (ITableItemFontProvider)adapterFactory.adapt(object, ITableItemFontProviderClass);

    // No font is a good default.
    //
    Font result = null;

    // Now we could check that the adapter implements interface ITableItemFontProvider.
    //
    if (tableItemFontProvider  != null)
    {
      // And delegate the call.
      //
      result = getFontFromObject(tableItemFontProvider.getFont(object, columnIndex));
    }
    // Otherwise, we could check that the adapter implements interface IItemFontProvider.
    //
    else
    {
      IItemFontProvider itemFontProvider = (IItemFontProvider)adapterFactory.adapt(object, IItemFontProviderClass);
      if (itemFontProvider != null)
      {
        // And delegate the call.
        //
        result = getFontFromObject(itemFontProvider.getFont(object));
      }
    }

    return result;
  }