public void generatePushValue(final GeneratorAdapter generator, final Object value) {
   FontDescriptor descriptor = (FontDescriptor) value;
   if (descriptor.isFixedFont()) {
     if (!descriptor.isFullyDefinedFont())
       throw new IllegalStateException("Unexpected font state");
     generator.newInstance(ourFontType);
     generator.dup();
     generator.push(descriptor.getFontName());
     generator.push(descriptor.getFontStyle());
     generator.push(descriptor.getFontSize());
     generator.invokeConstructor(ourFontType, ourInitMethod);
   } else if (descriptor.getSwingFont() != null) {
     generator.push(descriptor.getSwingFont());
     generator.invokeStatic(ourUIManagerType, ourUIManagerGetFontMethod);
   } else {
     throw new IllegalStateException("Unknown font type");
   }
 }