public static void generatePushFont(GeneratorAdapter generator,
                                      GetFontMethodProvider fontMethodProvider,
                                      int componentLocal,
                                      LwComponent lwComponent,
                                      FontDescriptor descriptor,
                                      String readMethodName,
                                      Label fontNullLabel) {
    if (descriptor.isFixedFont()) {
      generator.loadThis();

      generator.push(descriptor.getFontName());
      generator.push(descriptor.getFontStyle());
      generator.push(descriptor.getFontSize());

      generator.loadLocal(componentLocal);
      Type componentType = AsmCodeGenerator.typeFromClassName(lwComponent.getComponentClassName());
      Method getFontMethod = new Method(readMethodName, ourFontType, new Type[0]);
      generator.invokeVirtual(componentType, getFontMethod);

      generator.invokeVirtual(fontMethodProvider.getMainClassType(), fontMethodProvider.getFontMethod());
    }
    else {
      generator.push(descriptor.getSwingFont());
      generator.invokeStatic(ourUIManagerType, ourUIManagerGetFontMethod);
    }

    if (fontNullLabel != null) {
      int fontResult = generator.newLocal(ourFontType);
      generator.storeLocal(fontResult);
      generator.loadLocal(fontResult);
      generator.ifNull(fontNullLabel);
      generator.loadLocal(componentLocal);
      generator.loadLocal(fontResult);
    }
  }
public static void generatePushFont(GeneratorAdapter generator,
                                      GetFontMethodProvider fontMethodProvider,
                                      int componentLocal,
                                      LwComponent lwComponent,
                                      FontDescriptor descriptor,
                                      String readMethodName,
                                      Label fontNullLabel)