<?xml version="1.0"?>
<typesystem package="com.trolltech.qt.gui" default-superclass="com.trolltech.qt.QtJambiObject">
  <inject-code>
    com.trolltech.qt.Utilities.loadQtLibrary("QtGui");
  </inject-code>

    <template name="gui.getter_returning_nativepointer">
        public final %RETURN_TYPE %FUNCTION_NAME() {
            QNativePointer np = %FUNCTION_NAME_private();
            %RETURN_TYPE tmp = np == null ? null : %RETURN_TYPE.fromNativePointer(np);
            return tmp == null ? null : new %RETURN_TYPE(tmp);
        }

    </template>

    <template name="gui.init_style_option">
        protected final void initStyleOption(%TYPE option) {
            initStyleOption(option.nativePointer());
        }
    </template>

    <template name="gui.convert_validationdata_to_java">
        StaticCache *sc = StaticCache::instance(__jni_env);
        sc-&gt;resolveValidationData();
        jstring __qt_converted_input = qtjambi_from_qstring(__jni_env, %STRING);
        jobject %out = __jni_env-&gt;NewObject(sc-&gt;ValidationData.class_ref, sc-&gt;ValidationData.constructor, __qt_converted_input, %POS);
        jobject __java_validation_data = %out;
    </template>

    <template name="gui.cleanup_validationdata_from_java">
        __jni_env-&gt;SetIntField(%1, sc-&gt;ValidationData.position, *__position_ptr);
        __jni_env-&gt;SetObjectField(%1, sc-&gt;ValidationData.string, qtjambi_from_qstring(__jni_env, *__string_ptr));
    </template>

    <template name="gui.convert_validationdata_to_string">
        StaticCache *sc = StaticCache::instance(__jni_env);
        sc-&gt;resolveValidationData();
        jstring __java_string = (jstring) __jni_env-&gt;GetObjectField(%in, sc-&gt;ValidationData.string);
        QString %out = __java_string == 0 ? QString() : qtjambi_to_qstring(__jni_env, __java_string);
        QString *__string_ptr = &amp;%out;
    </template>

    <template name="gui.convert_validationdata_to_pos">
        int %out = __jni_env-&gt;GetIntField(%1, sc-&gt;ValidationData.position);
        int *__position_ptr = &amp;%out;
    </template>

    <template name="gui.cleanup_validationdata_to_java">
        jstring __java_string = (jstring) __jni_env-&gt;GetObjectField(__java_validation_data, sc-&gt;ValidationData.string);
        %STRING = __java_string == 0 ? QString() : qtjambi_to_qstring(__jni_env, __java_string);
        %POS = __jni_env-&gt;GetIntField(__java_validation_data, sc-&gt;ValidationData.position);
    </template>

    <template name="gui.convert_object_array_to_java">
        jobjectArray %out = 0;

        {
            jclass __resolved_class = resolveClass(__jni_env, "%CLASSNAME_ARRAY", "%PACKAGE_ARRAY");
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            Q_ASSERT(__resolved_class != 0);

            %out = %in == 0 ? 0 : __jni_env-&gt;NewObjectArray(%LENGTH, __resolved_class, 0);
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            if (%out != 0) {
                for (int i=0; i&lt;%LENGTH; ++i) {
                    __jni_env-&gt;SetObjectArrayElement(%out, i, qtjambi_from_object(__jni_env, %REFERENCE %in[i], "%CLASSNAME", "%PACKAGE", %LOOKUP true));
                }
            }
       }
    </template>

    <template name="gui.convert_graphicsitem_array_to_java">
        <insert-template name="gui.convert_object_array_to_java">
            <replace from="%CLASSNAME_ARRAY" to="QGraphicsItemInterface"/>
            <replace from="%PACKAGE_ARRAY" to="com/trolltech/qt/gui/"/>
            <replace from="%CLASSNAME" to="QGraphicsItem$ConcreteWrapper"/>
            <replace from="%PACKAGE" to="com/trolltech/qt/gui/"/>
            <replace from="%LOOKUP" to=""/>
            <replace from="%REFERENCE" to=""/>
        </insert-template>
    </template>

    <template name="gui.convert_styleoptiongraphicsitem_array_to_java">
        <insert-template name="gui.convert_object_array_to_java">
            <replace from="%CLASSNAME_ARRAY" to="QStyleOptionGraphicsItem"/>
            <replace from="%PACKAGE_ARRAY" to="com/trolltech/qt/gui/"/>
            <replace from="%CLASSNAME" to="QStyleOptionGraphicsItem"/>
            <replace from="%PACKAGE" to="com/trolltech/qt/gui/"/>
            <replace from="%LOOKUP" to="&quot;Lcom_trolltech_qt_gui_QStyleOption_2&quot;,"/>
            <replace from="%REFERENCE" to="&amp;"/>
        </insert-template>
    </template>

    <template name="gui.convert_interface_array_from_java">
        %CLASSNAME *%out = 0;
        QVarLengthArray&lt;%CLASSNAME, 256&gt; __interfaceArray(__length);
        if (%in != 0) {
            for (int i=0; i&lt;__length; ++i) {
                __interfaceArray[i] = (%CLASSNAME) %CONVERSION_FUNCTION(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i) %EXTRA);
            }
        }
        %out = %in == 0 ? 0 : __interfaceArray.data();
    </template>

    <template name="gui.convert_object_array_from_java">
        %CLASSNAME *%out = 0;
        QVarLengthArray&lt;%CLASSNAME, 256&gt; __array(__length);
        if (%in != 0) {
            for (int i=0; i&lt;__length; ++i) {
                __array[i] = *(%CLASSNAME *) %CONVERSION_FUNCTION(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i) %EXTRA);
            }
        }
        %out = %in == 0 ? 0 : __array.data();
    </template>

    <template name="gui.convert_graphicsitem_array_from_java">
        <insert-template name="gui.convert_interface_array_from_java">
            <replace from="%CLASSNAME" to="QGraphicsItem *"/>
            <replace from="%EXTRA" to=", &quot;QGraphicsItemInterface&quot;, &quot;com/trolltech/qt/gui/&quot;, &quot;__qt_cast_to_QGraphicsItem&quot;"/>
            <replace from="%CONVERSION_FUNCTION" to="qtjambi_to_interface"/>
        </insert-template>
    </template>


    <template name="gui.convert_styleoptiongraphicsitem_array_from_java">
        <insert-template name="gui.convert_object_array_from_java">
            <replace from="%CLASSNAME" to="QStyleOptionGraphicsItem"/>
            <replace from="%EXTRA" to=""/>
            <replace from="%CONVERSION_FUNCTION" to="qtjambi_to_object"/>
        </insert-template>
    </template>

  <rejection class="*" function-name="d_func"/>

  <rejection class="*" field-name="d_ptr"/>
  <rejection class="*" field-name="d"/>

  <rejection class="QAbstractUndoItem"/>
  <rejection class="QAccessibleApplication"/>
  <rejection class="QAccessibleBridgeFactoryInterface"/>
  <rejection class="QAccessibleBridgePlugin"/>
  <rejection class="QAccessibleFactoryInterface"/>
  <rejection class="QAccessiblePlugin"/>
  <rejection class="QBrushData"/>
  <rejection class="QIconEngineFactoryInterface"/>
  <rejection class="QIconEngineFactoryInterfaceV2"/>
  <rejection class="QIconEnginePluginV2"/>
  <rejection class="QIconEnginePlugin"/>
  <rejection class="QImageIOHandlerFactoryInterface"/>
  <rejection class="QImageIOPlugin"/>
  <rejection class="QImageTextKeyLang"/>
  <rejection class="QInputContextFactoryInterface"/>
  <rejection class="QInputContextPlugin"/>
  <rejection class="QItemEditorCreator"/>
  <rejection class="QLibrary"/>
  <rejection class="QLinkedList"/>
  <rejection class="QLinkedListData"/>
  <rejection class="QLinkedListIterator"/>
  <rejection class="QLinkedListNode"/>
  <rejection class="QMimeSource"/>
  <rejection class="QPainterPathPrivate"/>
  <rejection class="QPictureFormatInterface"/>
  <rejection class="QPictureFormatPlugin"/>
  <rejection class="QRegionData"/>
  <rejection class="QStandardItemEditorCreator"/>
  <rejection class="QStyleFactoryInterface"/>
  <rejection class="QStyleOptionQ3DockWindow"/>
  <rejection class="QStyleOptionQ3ListView"/>
  <rejection class="QStyleOptionQ3ListViewItem"/>
  <rejection class="QStylePlugin"/>
  <rejection class="QTextCodecFactoryInterface"/>
  <rejection class="QTextCodecPlugin"/>
  <rejection class="QTextFrameLayoutData"/>
  <rejection class="QUpdateLaterEvent"/>
  <rejection class="QVFbHeader"/>
  <rejection class="QWidgetData"/>
  <rejection class="QWindowSurface"/>
  <rejection class="QWindowsXPStyle"/>
  <rejection class="QWindowsVistaStyle"/>
  <rejection class="QWSEmbedWidget"/>
  <rejection class="QRegion::QRegionData"/>
  <rejection class="QAccessibleEditableTextInterface"/>
  <rejection class="QAccessibleSimpleEditableTextInterface"/>
  <rejection class="QAccessibleTextInterface"/>
  <rejection class="QAccessibleValueInterface"/>

  <rejection class="QAbstractItemDelegate" function-name="operator="/>
  <rejection class="QAccessible" function-name="installFactory"/>
  <rejection class="QAccessible" function-name="installRootObjectHandler"/>
  <rejection class="QAccessible" function-name="installUpdateHandler"/>
  <rejection class="QAccessible" function-name="removeFactory"/>
  <rejection class="QApplication" function-name="compressEvent"/>
  <rejection class="QBrush" function-name="cleanUp"/>
  <rejection class="QPictureIO" function-name="defineIOHandler"/>
  <rejection class="QPolygon" function-name="putPoints"/>
  <rejection class="QPolygon" function-name="setPoints"/>
  <rejection class="QPolygon" function-name="setPoint"/>
  <rejection class="QPolygon" function-name="points"/>
  <rejection class="QPolygon" function-name="point"/>
  <rejection class="QPrinter" function-name="printerSelectionOption"/>
  <rejection class="QPrinter" function-name="setPrinterSelectionOption"/>
  <rejection class="QWidget" function-name="create"/>
  <rejection class="QWidget" function-name="find"/>
  <rejection class="QWidget" function-name="handle"/>
  <rejection class="QWidget" function-name="styleChange"/>
  <rejection class="QWidget" function-name="internalWinId"/>
  <rejection class="QActionGroup" function-name="selected"/>
  <rejection class="QPaintEngine" function-name="fix_neg_rect"/>
  <rejection class="QTreeModel" function-name="node"/>
  <rejection class="QTreeModel" function-name="initializeNode"/>
  <rejection class="QTreeModel" function-name="queryChildren"/>
  <rejection class="QAccessible" function-name="cast_helper"/>
  <rejection class="QAccessible2"/>
  <rejection class="QAccessibleInterface" function-name="backgroundColor"/>
  <rejection class="QAccessibleInterface" function-name="foregroundColor"/>
  <rejection class="QAccessibleInterface" function-name="textInterface"/>
  <rejection class="QAccessibleInterface" function-name="valueInterface"/>
  <rejection class="QAccessibleInterface" function-name="tableInterface"/>
  <rejection class="QAccessibleInterface" function-name="editableTextInterface"/>
  <rejection class="QAccessibleInterface" function-name="cast_helper"/>
  <rejection class="QAccessibleInterfaceEx" function-name="interface_cast"/>
  <rejection class="QTabletEvent" field-name="mExtra"/>

  <enum-type name="QAbstractItemDelegate::EndEditHint"/>
  <enum-type name="QAbstractItemView::CursorAction"/>
  <enum-type name="QAbstractItemView::DragDropMode"/>
  <enum-type name="QAbstractItemView::DropIndicatorPosition"/>
  <enum-type name="QAbstractItemView::EditTrigger" flags="QAbstractItemView::EditTriggers"/>
  <enum-type name="QAbstractItemView::ScrollHint"/>
  <enum-type name="QAbstractItemView::ScrollMode"/>
  <enum-type name="QAbstractItemView::SelectionBehavior"/>
  <enum-type name="QAbstractItemView::SelectionMode"/>
  <enum-type name="QAbstractItemView::State"/>
  <enum-type name="QAbstractPrintDialog::PrintDialogOption" flags="QAbstractPrintDialog::PrintDialogOptions"/>
  <enum-type name="QAbstractPrintDialog::PrintRange"/>
  <enum-type name="QAbstractSlider::SliderAction"/>
  <enum-type name="QAbstractSlider::SliderChange"/>
  <enum-type name="QAbstractSpinBox::ButtonSymbols"/>
  <enum-type name="QAbstractSpinBox::CorrectionMode"/>
  <enum-type name="QAbstractSpinBox::StepEnabledFlag" flags="QAbstractSpinBox::StepEnabled"/>
  <enum-type name="QAccessible::Event"/>
  <enum-type name="QAccessible::Method"/>
  <enum-type name="QAccessible::RelationFlag" flags="QAccessible::Relation"/>
  <enum-type name="QAccessible::Role"/>
  <enum-type name="QAccessible::StateFlag" flags="QAccessible::State"/>
  <enum-type name="QAccessible::Text"/>
  <enum-type name="QMdiArea::AreaOption" flags="QMdiArea::AreaOptions"/>
  <enum-type name="QMdiArea::WindowOrder"/>
  <enum-type name="QMdiSubWindow::SubWindowOption" flags="QMdiSubWindow::SubWindowOptions"/>

  <enum-type name="QAction::ActionEvent"/>
  <enum-type name="QAction::MenuRole"/>
  <enum-type name="QApplication::ColorSpec"/>
  <enum-type name="QApplication::Type"/>
  <enum-type name="QCalendarWidget::HorizontalHeaderFormat"/>
  <enum-type name="QCalendarWidget::SelectionMode"/>
  <enum-type name="QCalendarWidget::VerticalHeaderFormat"/>
  <enum-type name="QColor::Spec"/>
  <enum-type name="QColormap::Mode"/>
  <enum-type name="QComboBox::InsertPolicy"/>
  <enum-type name="QComboBox::SizeAdjustPolicy"/>
  <enum-type name="QCompleter::CompletionMode"/>
  <enum-type name="QCompleter::ModelSorting"/>
  <enum-type name="QContextMenuEvent::Reason"/>
  <enum-type name="QDataWidgetMapper::SubmitPolicy"/>
  <enum-type name="QDateTimeEdit::Section" flags="QDateTimeEdit::Sections"/>
  <enum-type name="QDialog::DialogCode"/>
  <enum-type name="QDialogButtonBox::ButtonLayout"/>
  <enum-type name="QDialogButtonBox::ButtonRole"/>
  <enum-type name="QFileDialog::AcceptMode"/>
  <enum-type name="QFileDialog::DialogLabel"/>
  <enum-type name="QFileDialog::FileMode"/>
  <enum-type name="QFileDialog::Option" flags="QFileDialog::Options"/>
  <enum-type name="QFileDialog::ViewMode"/>
  <enum-type name="QFileIconProvider::IconType"/>
  <enum-type name="QFont::FontWeight"/>
  <enum-type name="QFont::Stretch"/>
  <enum-type name="QFont::Style"/>
  <enum-type name="QFont::StyleStrategy"/>
  <enum-type name="QFont::Weight"/>
  <enum-type name="QFontComboBox::FontFilter" flags="QFontComboBox::FontFilters"/>
  <enum-type name="QFrame::FrameFlags"/>
  <enum-type name="QFrame::Shadow" extensible="yes"/>
  <enum-type name="QFrame::Shape"/>
  <enum-type name="QFrame::StyleMask"/>
  <enum-type name="QFrame::enum_1"/>
  <enum-type name="QGradient::CoordinateMode"/>
  <enum-type name="QGradient::Spread" lower-bound="QGradient.PadSpread" upper-bound="QGradient.RepeatSpread"/>
  <enum-type name="QGradient::Type"/>
  <enum-type name="QGraphicsEllipseItem::enum_1"/>
  <enum-type name="QGraphicsItem::Extension"/>
  <enum-type name="QGraphicsItem::GraphicsItemChange"/>
  <enum-type name="QGraphicsItem::GraphicsItemFlag" flags="QGraphicsItem::GraphicsItemFlags"/>
  <enum-type name="QGraphicsItem::enum_1"/>
  <enum-type name="QGraphicsItemGroup::enum_1"/>
  <enum-type name="QGraphicsLineItem::enum_1"/>
  <enum-type name="QGraphicsPathItem::enum_1"/>
  <enum-type name="QGraphicsPixmapItem::ShapeMode"/>
  <enum-type name="QGraphicsPixmapItem::enum_1"/>
  <enum-type name="QGraphicsPolygonItem::enum_1"/>
  <enum-type name="QGraphicsRectItem::enum_1"/>
  <enum-type name="QGraphicsScene::ItemIndexMethod"/>
  <enum-type name="QGraphicsSceneContextMenuEvent::Reason"/>
  <enum-type name="QGraphicsSimpleTextItem::enum_1"/>
  <enum-type name="QGraphicsTextItem::enum_1"/>
  <enum-type name="QGraphicsView::CacheModeFlag" flags="QGraphicsView::CacheMode"/>
  <enum-type name="QGraphicsView::DragMode"/>
  <enum-type name="QGraphicsView::OptimizationFlag" flags="QGraphicsView::OptimizationFlags"/>
  <enum-type name="QGraphicsView::ViewportAnchor"/>
  <enum-type name="QGraphicsView::ViewportUpdateMode"/>
  <enum-type name="QIcon::Mode"/>
  <enum-type name="QIcon::State"/>
  <enum-type name="QImage::Format"/>
  <enum-type name="QImage::InvertMode"/>
  <enum-type name="QImageIOHandler::ImageOption"/>
  <enum-type name="QImageIOPlugin::Capability" flags="QImageIOPlugin::Capabilitys"/>
  <enum-type name="QImageReader::ImageReaderError"/>
  <enum-type name="QImageWriter::ImageWriterError"/>
  <enum-type name="QInputContext::StandardFormat"/>
  <enum-type name="QInputMethodEvent::AttributeType"/>
  <enum-type name="QItemSelectionModel::SelectionFlag" flags="QItemSelectionModel::SelectionFlags"/>
  <enum-type name="QKeySequence::SequenceFormat"/>
  <enum-type name="QKeySequence::SequenceMatch"/>
  <enum-type name="QKeySequence::StandardKey"/>
  <enum-type name="QLCDNumber::Mode"/>
  <enum-type name="QLCDNumber::SegmentStyle"/>
  <enum-type name="QLayout::SizeConstraint"/>
  <enum-type name="QLineEdit::EchoMode"/>
  <enum-type name="QLineF::IntersectType"/>
  <enum-type name="QListView::Flow"/>
  <enum-type name="QListView::LayoutMode"/>
  <enum-type name="QListView::Movement"/>
  <enum-type name="QListView::ResizeMode"/>
  <enum-type name="QListView::ViewMode"/>
  <enum-type name="QListWidgetItem::ItemType"/>
  <enum-type name="QListWidgetItem::enum_1"/>
  <enum-type name="QMainWindow::DockOption" flags="QMainWindow::DockOptions"/>
  <enum-type name="QMessageBox::Button"/>
  <enum-type name="QMessageBox::ButtonRole"/>
  <enum-type name="QMessageBox::Icon"/>
  <enum-type name="QMovie::CacheMode"/>
  <enum-type name="QMovie::MovieState"/>
  <enum-type name="QPaintDevice::PaintDeviceMetric"/>
  <enum-type name="QPaintEngine::DirtyFlag" flags="QPaintEngine::DirtyFlags"/>
  <enum-type name="QPaintEngine::PaintEngineFeature" flags="QPaintEngine::PaintEngineFeatures"/>
  <enum-type name="QPaintEngine::PolygonDrawMode"/>
  <enum-type name="QPaintEngine::Type"/>
  <enum-type name="QPainter::CompositionMode"/>
  <enum-type name="QPainter::RenderHint" flags="QPainter::RenderHints"/>
  <enum-type name="QPainterPath::ElementType"/>
  <enum-type name="QPrintEngine::PrintEnginePropertyKey"/>
  <enum-type name="QPrinter::ColorMode"/>
  <enum-type name="QPrinter::Orientation"/>
  <enum-type name="QPrinter::OutputFormat"/>
  <enum-type name="QPrinter::PageOrder"/>
  <enum-type name="QPrinter::PaperSource"/>
  <enum-type name="QPrinter::PrintRange"/>
  <enum-type name="QPrinter::PrinterMode"/>
  <enum-type name="QPrinter::PrinterState"/>
  <enum-type name="QProgressBar::Direction"/>
  <enum-type name="QRegion::RegionType"/>
  <enum-type name="QRubberBand::Shape"/>
  <enum-type name="QSessionManager::RestartHint"/>
  <enum-type name="QSizePolicy::Policy"/>
  <enum-type name="QSizePolicy::PolicyFlag"/>
  <enum-type name="QSizePolicy::ControlType" flags="QSizePolicy::ControlTypes"/>
  <enum-type name="QSizePolicy::SizePolicyMasks"/>
  <enum-type name="QStandardItem::ItemType"/>
  <enum-type name="QStyle::SubControl" flags="QStyle::SubControls" extensible="yes" force-integer="yes"/>
  <enum-type name="QStyle::ComplexControl" extensible="yes"/>
  <enum-type name="QStyle::ContentsType" extensible="yes"/>
  <enum-type name="QStyle::ControlElement" extensible="yes"/>
  <enum-type name="QStyle::PixelMetric" extensible="yes">
    <reject-enum-value name="PM_MDIFrameWidth"/>
    <reject-enum-value name="PM_MDIMinimizedWidth"/>
  </enum-type>
  <enum-type name="QStyle::PrimitiveElement" extensible="yes"/>
  <enum-type name="QStyle::StandardPixmap" extensible="yes"/>
  <enum-type name="QStyle::StateFlag" flags="QStyle::State"/>
  <enum-type name="QStyle::SubElement" extensible="yes"/>
  <enum-type name="QStyleHintReturn::HintReturnType"/>
  <enum-type name="QStyleHintReturn::StyleOptionType"/>
  <enum-type name="QStyleHintReturn::StyleOptionVersion"/>
  <enum-type name="QStyleHintReturnVariant::StyleOptionType"/>
  <enum-type name="QStyleHintReturnVariant::StyleOptionVersion"/>

  <enum-type name="QStyleHintReturn::enum_1"/>
  <enum-type name="QStyleHintReturn::enum_2"/>
  <enum-type name="QStyleHintReturnMask::StyleOptionType"/>
  <enum-type name="QStyleHintReturnMask::StyleOptionVersion"/>
  <enum-type name="QStyleHintReturnMask::enum_1"/>
  <enum-type name="QStyleHintReturnMask::enum_2"/>
  <enum-type name="QStyleOption::StyleOptionType"/>
  <enum-type name="QStyleOption::OptionType" extensible="yes"/>
  <enum-type name="QStyleOption::StyleOptionVersion"/>
  <enum-type name="QStyleOption::enum_2"/>
  <enum-type name="QStyleOptionButton::ButtonFeature" flags="QStyleOptionButton::ButtonFeatures"/>
  <enum-type name="QStyleOptionButton::StyleOptionType"/>
  <enum-type name="QStyleOptionButton::StyleOptionVersion"/>
  <enum-type name="QStyleOptionButton::enum_1"/>
  <enum-type name="QStyleOptionButton::enum_2"/>
  <enum-type name="QStyleOptionComboBox::StyleOptionType"/>
  <enum-type name="QStyleOptionComboBox::StyleOptionVersion"/>
  <enum-type name="QStyleOptionComboBox::enum_1"/>
  <enum-type name="QStyleOptionComboBox::enum_2"/>
  <enum-type name="QStyleOptionComplex::StyleOptionType"/>
  <enum-type name="QStyleOptionComplex::StyleOptionVersion"/>
  <enum-type name="QStyleOptionComplex::enum_1"/>
  <enum-type name="QStyleOptionComplex::enum_2"/>
  <enum-type name="QStyleOptionDockWidget::StyleOptionType"/>
  <enum-type name="QStyleOptionDockWidget::StyleOptionVersion"/>
  <enum-type name="QStyleOptionDockWidgetV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionDockWidget::enum_1"/>
  <enum-type name="QStyleOptionDockWidget::enum_2"/>
  <enum-type name="QStyleOptionFocusRect::StyleOptionType"/>
  <enum-type name="QStyleOptionFocusRect::StyleOptionVersion"/>
  <enum-type name="QStyleOptionFocusRect::enum_1"/>
  <enum-type name="QStyleOptionFocusRect::enum_2"/>
  <enum-type name="QStyleOptionFrame::StyleOptionType"/>
  <enum-type name="QStyleOptionFrame::StyleOptionVersion"/>
  <enum-type name="QStyleOptionFrame::enum_1"/>
  <enum-type name="QStyleOptionFrame::enum_2"/>
  <enum-type name="QStyleOptionFrameV2::FrameFeature" flags="QStyleOptionFrameV2::FrameFeatures"/>
  <enum-type name="QStyleOptionFrameV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionFrameV2::enum_1"/>
  <enum-type name="QStyleOptionGraphicsItem::StyleOptionType"/>
  <enum-type name="QStyleOptionGraphicsItem::StyleOptionVersion"/>
  <enum-type name="QStyleOptionGroupBox::StyleOptionType"/>
  <enum-type name="QStyleOptionGroupBox::StyleOptionVersion"/>
  <enum-type name="QStyleOptionGroupBox::enum_1"/>
  <enum-type name="QStyleOptionGroupBox::enum_2"/>
  <enum-type name="QStyleOptionHeader::SectionPosition"/>
  <enum-type name="QStyleOptionHeader::SelectedPosition"/>
  <enum-type name="QStyleOptionHeader::SortIndicator"/>
  <enum-type name="QStyleOptionHeader::StyleOptionType"/>
  <enum-type name="QStyleOptionHeader::StyleOptionVersion"/>
  <enum-type name="QStyleOptionHeader::enum_1"/>
  <enum-type name="QStyleOptionHeader::enum_2"/>
  <enum-type name="QStyleOptionMenuItem::CheckType"/>
  <enum-type name="QStyleOptionMenuItem::MenuItemType"/>
  <enum-type name="QStyleOptionMenuItem::StyleOptionType"/>
  <enum-type name="QStyleOptionMenuItem::StyleOptionVersion"/>
  <enum-type name="QStyleOptionMenuItem::enum_1"/>
  <enum-type name="QStyleOptionMenuItem::enum_2"/>
  <enum-type name="QStyleOptionProgressBar::StyleOptionType"/>
  <enum-type name="QStyleOptionProgressBar::StyleOptionVersion"/>
  <enum-type name="QStyleOptionProgressBar::enum_1"/>
  <enum-type name="QStyleOptionProgressBar::enum_2"/>
  <enum-type name="QStyleOptionProgressBarV2::StyleOptionType"/>
  <enum-type name="QStyleOptionProgressBarV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionProgressBarV2::enum_1"/>
  <enum-type name="QStyleOptionProgressBarV2::enum_2"/>
  <enum-type name="QStyleOptionQ3ListViewItem::Q3ListViewItemFeature"/>
  <enum-type name="QStyleOptionRubberBand::StyleOptionType"/>
  <enum-type name="QStyleOptionRubberBand::StyleOptionVersion"/>
  <enum-type name="QStyleOptionRubberBand::enum_1"/>
  <enum-type name="QStyleOptionRubberBand::enum_2"/>
  <enum-type name="QStyleOptionSizeGrip::StyleOptionType"/>
  <enum-type name="QStyleOptionSizeGrip::StyleOptionVersion"/>
  <enum-type name="QStyleOptionSlider::StyleOptionType"/>
  <enum-type name="QStyleOptionSlider::StyleOptionVersion"/>
  <enum-type name="QStyleOptionSlider::enum_1"/>
  <enum-type name="QStyleOptionSlider::enum_2"/>
  <enum-type name="QStyleOptionSpinBox::StyleOptionType"/>
  <enum-type name="QStyleOptionSpinBox::StyleOptionVersion"/>
  <enum-type name="QStyleOptionSpinBox::enum_1"/>
  <enum-type name="QStyleOptionSpinBox::enum_2"/>
  <enum-type name="QStyleOptionTab::CornerWidget" flags="QStyleOptionTab::CornerWidgets"/>
  <enum-type name="QStyleOptionTab::SelectedPosition"/>
  <enum-type name="QStyleOptionTab::StyleOptionType"/>
  <enum-type name="QStyleOptionTab::StyleOptionVersion"/>
  <enum-type name="QStyleOptionTab::TabPosition"/>
  <enum-type name="QStyleOptionTab::enum_1"/>
  <enum-type name="QStyleOptionTab::enum_2"/>
  <enum-type name="QStyleOptionTabBarBase::StyleOptionType"/>
  <enum-type name="QStyleOptionTabBarBase::StyleOptionVersion"/>
  <enum-type name="QStyleOptionTabBarBase::enum_1"/>
  <enum-type name="QStyleOptionTabBarBase::enum_2"/>
  <enum-type name="QStyleOptionTabV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionTabV2::enum_1"/>
  <enum-type name="QStyleOptionTabWidgetFrame::StyleOptionType"/>
  <enum-type name="QStyleOptionTabWidgetFrame::StyleOptionVersion"/>
  <enum-type name="QStyleOptionTabWidgetFrame::enum_1"/>
  <enum-type name="QStyleOptionTabWidgetFrame::enum_2"/>
  <enum-type name="QStyleOptionTitleBar::StyleOptionType"/>
  <enum-type name="QStyleOptionTitleBar::StyleOptionVersion"/>
  <enum-type name="QStyleOptionTitleBar::enum_1"/>
  <enum-type name="QStyleOptionTitleBar::enum_2"/>
  <enum-type name="QStyleOptionToolBar::StyleOptionType"/>
  <enum-type name="QStyleOptionToolBar::StyleOptionVersion"/>
  <enum-type name="QStyleOptionToolBar::ToolBarFeature" flags="QStyleOptionToolBar::ToolBarFeatures"/>
  <enum-type name="QStyleOptionToolBar::ToolBarPosition"/>
  <enum-type name="QStyleOptionToolBar::enum_1"/>
  <enum-type name="QStyleOptionToolBar::enum_2"/>
  <enum-type name="QStyleOptionToolBox::StyleOptionType"/>
  <enum-type name="QStyleOptionToolBox::StyleOptionVersion"/>
  <enum-type name="QStyleOptionToolBox::enum_1"/>
  <enum-type name="QStyleOptionToolBox::enum_2"/>
  <enum-type name="QStyleOptionToolButton::StyleOptionType"/>
  <enum-type name="QStyleOptionToolButton::StyleOptionVersion"/>
  <enum-type name="QStyleOptionToolButton::ToolButtonFeature" flags="QStyleOptionToolButton::ToolButtonFeatures">
    <reject-enum-value name="MenuButtonPopup"/>
  </enum-type>
  <enum-type name="QStyleOptionToolButton::enum_1"/>
  <enum-type name="QStyleOptionToolButton::enum_2"/>
  <enum-type name="QStyleOptionViewItem::Position"/>
  <enum-type name="QStyleOptionViewItem::StyleOptionType"/>
  <enum-type name="QStyleOptionViewItem::StyleOptionVersion"/>
  <enum-type name="QStyleOptionViewItem::enum_1"/>
  <enum-type name="QStyleOptionViewItem::enum_2"/>
  <enum-type name="QStyleOptionViewItemV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionViewItemV2::ViewItemFeature" flags="QStyleOptionViewItemV2::ViewItemFeatures"/>
  <enum-type name="QSystemTrayIcon::ActivationReason"/>
  <enum-type name="QSystemTrayIcon::MessageIcon"/>
  <enum-type name="QTabBar::Shape"/>
  <enum-type name="QTabWidget::TabPosition"/>
  <enum-type name="QTabWidget::TabShape"/>
  <enum-type name="QTableWidgetItem::ItemType"/>
  <enum-type name="QTableWidgetItem::enum_1"/>
  <enum-type name="QTabletEvent::PointerType"/>
  <enum-type name="QTabletEvent::TabletDevice"/>
  <enum-type name="QTextCharFormat::UnderlineStyle"/>
  <enum-type name="QTextCharFormat::VerticalAlignment"/>
  <enum-type name="QTextCursor::MoveMode"/>
  <enum-type name="QTextCursor::MoveOperation"/>
  <enum-type name="QTextCursor::SelectionType"/>
  <enum-type name="QTextDocument::FindFlag" flags="QTextDocument::FindFlags"/>
  <enum-type name="QTextDocument::MetaInformation"/>
  <enum-type name="QTextDocument::ResourceType"/>
  <enum-type name="QTextEdit::AutoFormattingFlag" flags="QTextEdit::AutoFormatting"/>
  <enum-type name="QTextEdit::CursorAction"/>
  <enum-type name="QTextEdit::LineWrapMode"/>
  <enum-type name="QTextFormat::ObjectTypes"/>
  <enum-type name="QTextFormat::PageBreakFlag" flags="QTextFormat::PageBreakFlags"/>
  <enum-type name="QTextFrameFormat::Position"/>
  <enum-type name="QTextFrameFormat::BorderStyle"/>
  <enum-type name="QTextItem::RenderFlag" flags="QTextItem::RenderFlags"/>
  <enum-type name="QTextLayout::CursorMode"/>
  <enum-type name="QTextLength::Type"/>
  <enum-type name="QTextLine::CursorPosition"/>
  <enum-type name="QTextLine::Edge"/>
  <enum-type name="QTextListFormat::Style"/>
  <enum-type name="QTextOption::Flag" flags="QTextOption::Flags"/>
  <enum-type name="QTextOption::WrapMode"/>
  <enum-type name="QToolButton::ToolButtonPopupMode"/>
  <enum-type name="QTreeWidgetItem::ItemType"/>
  <enum-type name="QTreeWidgetItem::enum_1"/>
  <enum-type name="QTreeWidgetItemIterator::IteratorFlag" flags="QTreeWidgetItemIterator::IteratorFlags"/>
  <enum-type name="QValidator::State"/>
  <enum-type name="QWidget::WidgetMode"/>
  <enum-type name="QWidget::RenderFlag" flags="QWidget::RenderFlags"/>
  <enum-type name="QWorkspace::WindowOrder"/>
  <enum-type name="QDoubleValidator::Notation"/>
  <enum-type name="QGraphicsScene::SceneLayer" flags="QGraphicsScene::SceneLayers"/>
  <enum-type name="QGraphicsSvgItem::enum_1"/>
  <enum-type name="QStyleOptionToolBoxV2::SelectedPosition"/>
  <enum-type name="QStyleOptionToolBoxV2::StyleOptionVersion"/>
  <enum-type name="QStyleOptionToolBoxV2::TabPosition"/>
  <enum-type name="QStyleOptionViewItemV3::StyleOptionVersion"/>
  <enum-type name="QTransform::TransformationType"/>
  <enum-type name="QTreeWidgetItem::ChildIndicatorPolicy"/>
  <enum-type name="QWizard::WizardOption" flags="QWizard::WizardOptions"/>
  <enum-type name="QWizard::WizardPixmap"/>
  <enum-type name="QWizard::WizardStyle"/>

  <enum-type name="QWizard::WizardButton">
    <reject-enum-value name="NStandardButtons"/>
    <reject-enum-value name="NButtons"/>
  </enum-type>

  <enum-type name="QAccessible::Action">
    <reject-enum-value name="FirstStandardAction"/>
    <reject-enum-value name="LastStandardAction"/>
  </enum-type>

  <enum-type name="QBoxLayout::Direction">
    <reject-enum-value name="Down"/>
    <reject-enum-value name="Up"/>
  </enum-type>


  <enum-type name="QClipboard::Mode">
    <reject-enum-value name="LastMode"/>
  </enum-type>

  <enum-type name="QDialogButtonBox::StandardButton" flags="QDialogButtonBox::StandardButtons">
    <reject-enum-value name="FirstButton"/>
    <reject-enum-value name="LastButton"/>
    <reject-enum-value name="YesAll"/>
    <reject-enum-value name="NoAll"/>
    <reject-enum-value name="Default"/>
    <reject-enum-value name="Escape"/>
    <reject-enum-value name="FlagMask"/>
    <reject-enum-value name="ButtonMask"/>
  </enum-type>

  <enum-type name="QDockWidget::DockWidgetFeature" flags="QDockWidget::DockWidgetFeatures"/>

  <enum-type name="QFont::StyleHint">
    <reject-enum-value name="SansSerif"/>
    <reject-enum-value name="Serif"/>
    <reject-enum-value name="TypeWriter"/>
    <reject-enum-value name="Decorative"/>
  </enum-type>

  <enum-type name="QFontDatabase::WritingSystem">
    <reject-enum-value name="Other"/>
  </enum-type>

  <enum-type name="QHeaderView::ResizeMode">
    <reject-enum-value name="Custom"/>
  </enum-type>


  <enum-type name="QMessageBox::StandardButton" flags="QMessageBox::StandardButtons">
    <reject-enum-value name="FirstButton"/>
    <reject-enum-value name="LastButton"/>
    <reject-enum-value name="YesAll"/>
    <reject-enum-value name="NoAll"/>
  </enum-type>

  <enum-type name="QPalette::ColorGroup">
    <reject-enum-value name="Normal"/>
  </enum-type>

  <enum-type name="QPalette::ColorRole">
    <reject-enum-value name="NColorRoles"/>
    <reject-enum-value name="Foreground"/>
    <reject-enum-value name="Background"/>
  </enum-type>

  <enum-type name="QPrinter::PageSize">
    <reject-enum-value name="NPageSize"/>
  </enum-type>

  <enum-type name="QSlider::TickPosition">
    <reject-enum-value name="TicksLeft"/>
    <reject-enum-value name="TicksRight"/>
  </enum-type>

  <enum-type name="QStyle::StyleHint" extensible="yes">
    <reject-enum-value name="SH_ScrollBar_StopMouseOverSlider"/>
    <reject-enum-value name="SH_Menu_Mask"/>
  </enum-type>


  <enum-type name="QTextFormat::FormatType"/>

  <enum-type name="QTextFormat::Property">
    <reject-enum-value name="FontSizeIncrement"/>
  </enum-type>

  <value-type name="QTransform">
    <modify-function signature="operator=(QTransform)" remove="all"/>
    <modify-function signature="map(int,int,int*,int*)const" remove="all"/>
    <modify-function signature="map(double,double,double*,double*)const" remove="all"/>

    <modify-function signature="operator*=(double)" access="private"/>
    <modify-function signature="operator+=(double)" access="private"/>
    <modify-function signature="operator-=(double)" access="private"/>
    <modify-function signature="operator/=(double)" access="private"/>
    <inject-code>
        public final QTransform multiply(double d) { operator_multiply_assign(d); return this; }
        public final QTransform add(double d) { operator_add_assign(d); return this; }
        public final QTransform divide(double d) { operator_divide_assign(d); return this; }
        public final QTransform subtract(double d) { operator_subtract_assign(d); return this; }
    </inject-code>

    <modify-function signature="operator*(QTransform)const" access="private"/>
    <modify-function signature="operator*=(QTransform)" access="private"/>

    <extra-includes>
        <include file-name="com.trolltech.qt.core.Qt.Axis" location="java"/>
    </extra-includes>

    <modify-function signature="inverted(bool*)const">
        <access modifier="private"/>
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
    /**
     * Returns an inverted copy of this transformation.
     *
     * @return The inverse of the transformation.
     * @throws IllegalArgumentException If this transformation is not invertible.
     */
    public final QTransform inverted() {
        QNativePointer ok = new QNativePointer(QNativePointer.Type.Boolean);
        QTransform returned = inverted(ok);
        if (!ok.booleanValue())
            throw new IllegalArgumentException("Transformation is not invertible");
        return returned;
    }
    </inject-code>



    <modify-function signature="rotate(double,Qt::Axis)">
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
        <access modifier="private"/>
        <rename to="rotate_private"/>
    </modify-function>
    <inject-code>
    /**
     * Rotates the transformation around the given axis.
     *
     * @return The rotated transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="rotate"/>
            <replace from="%ARGUMENTS" to="double angle, Axis axis"/>
            <replace from="%ARGUMENT_NAMES" to="angle, axis"/>
        </insert-template>

    /**
     * Rotates the transformation around the z-axis.
     *
     * @return The rotated transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="rotate"/>
            <replace from="%ARGUMENTS" to="double angle"/>
            <replace from="%ARGUMENT_NAMES" to="angle"/>
        </insert-template>
    </inject-code>

    <modify-function signature="rotateRadians(double,Qt::Axis)">
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
        <access modifier="private"/>
        <rename to="rotateRadians_private"/>
    </modify-function>
    <inject-code>
    /**
     * Rotates the transformation around the given axis.
     *
     * @return The rotated transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="rotateRadians"/>
            <replace from="%ARGUMENTS" to="double angle, Axis axis"/>
            <replace from="%ARGUMENT_NAMES" to="angle, axis"/>
        </insert-template>

    /**
     * Rotates the transformation around the z-axis.
     *
     * @return The rotated transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="rotateRadians"/>
            <replace from="%ARGUMENTS" to="double angle"/>
            <replace from="%ARGUMENT_NAMES" to="angle"/>
        </insert-template>
    </inject-code>

    <modify-function signature="scale(double,double)">
        <access modifier="private"/>
        <rename to="scale_private"/>
    </modify-function>
    <inject-code>
    /**
     * Scales the transformation using x and y.
     *
     * @return The scaled transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="scale"/>
            <replace from="%ARGUMENTS" to="double x, double y"/>
            <replace from="%ARGUMENT_NAMES" to="x, y"/>
        </insert-template>
    </inject-code>

    <modify-function signature="shear(double,double)">
        <access modifier="private"/>
        <rename to="shear_private"/>
    </modify-function>
    <inject-code>
    /**
      * Shears the transformation using x and y.
      *
      * @return The sheared transformation.
      */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="shear"/>
            <replace from="%ARGUMENTS" to="double x, double y"/>
            <replace from="%ARGUMENT_NAMES" to="x, y"/>
        </insert-template>
    </inject-code>

    <modify-function signature="translate(double,double)">
        <access modifier="private"/>
        <rename to="translate_private"/>
    </modify-function>
    <inject-code>
    /**
     * Translates the transformation using x and y.
     *
     * @return The translated transformation.
     */
        <insert-template name="core.private_function_return_self">
            <replace from="%RETURN_TYPE" to="QTransform"/>
            <replace from="%FUNCTION_NAME" to="translate"/>
            <replace from="%ARGUMENTS" to="double x, double y"/>
            <replace from="%ARGUMENT_NAMES" to="x, y"/>
        </insert-template>
    </inject-code>

    <modify-function signature="quadToQuad(QPolygonF,QPolygonF,QTransform&amp;)">
        <access modifier="private"/>
        <rename to="quadToQuadPrivate"/>
    </modify-function>
    <inject-code>
    /**
     * Creates a transformation mapping one arbitrary quad into another.
     *
     * @return The transformation.
     * @throws IllegalArgumentException If this transformation is not possible.
     */
    public static final QTransform quadToQuad(QPolygonF from, QPolygonF to) {
        QTransform res = new QTransform();
        QNativePointer resPointer = res.nativePointer();
        if (quadToQuadPrivate(from, to, resPointer)) {
            return res;
        } else
            throw new IllegalArgumentException("Transformation is not possible");
    }
    </inject-code>

    <modify-function signature="quadToSquare(QPolygonF,QTransform&amp;)">
        <access modifier="private"/>
        <rename to="quadToSquarePrivate"/>
    </modify-function>
    <inject-code>
    /**
     * Creates a transformation that maps a quad to a unit square.
     *
     * @return The transformation.
     * @throws IllegalArgumentException If this transformation is not possible.
     */
    public static final QTransform quadToSquare(QPolygonF quad) {
        QTransform res = new QTransform();
        QNativePointer resPointer = res.nativePointer();
        if (quadToSquarePrivate(quad, resPointer)) {
            return res;
        } else
            throw new IllegalArgumentException("Transformation is not possible");
    }
    </inject-code>

    <modify-function signature="squareToQuad(QPolygonF,QTransform&amp;)">
        <access modifier="private"/>
        <rename to="squareToQuadPrivate"/>
    </modify-function>
    <inject-code>
    /**
     * Creates a transformation that maps a unit square to a the given quad.
     *
     * @return The transformation.
     * @throws IllegalArgumentException If this transformation is not possible.
     */
    public static final QTransform squareToQuad(QPolygonF quad) {
        QTransform res = new QTransform();
        QNativePointer resPointer = res.nativePointer();
        if (squareToQuadPrivate(quad, resPointer)) {
            return res;
        } else
            throw new IllegalArgumentException("Transformation is not possible");
    }
    </inject-code>
  </value-type>

  <value-type name="QStyleOption" polymorphic-base="yes" polymorphic-id-expression="%1-&gt;type == QStyleOption::SO_Default" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOption)" remove="all"/>

      <modify-function signature="init(const QWidget*)" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>
  <value-type name="QStyleOptionGraphicsItem" polymorphic-id-expression="%1-&gt;type == QStyleOptionGraphicsItem::Type &amp;&amp; %1-&gt;version == QStyleOptionGraphicsItem::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionSizeGrip" polymorphic-id-expression="%1-&gt;type == QStyleOptionSizeGrip::Type &amp;&amp; %1-&gt;version == QStyleOptionSizeGrip::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionButton" polymorphic-id-expression="%1-&gt;type == QStyleOptionButton::Type &amp;&amp; %1-&gt;version == QStyleOptionButton::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionComboBox" polymorphic-id-expression="%1-&gt;type == QStyleOptionComboBox::Type &amp;&amp; %1-&gt;version == QStyleOptionComboBox::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionComplex" polymorphic-id-expression="%1-&gt;type == QStyleOptionComplex::Type &amp;&amp; %1-&gt;version == QStyleOptionComplex::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionDockWidget" polymorphic-id-expression="%1-&gt;type == QStyleOptionDockWidget::Type &amp;&amp; %1-&gt;version == QStyleOptionDockWidget::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionDockWidgetV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionDockWidgetV2::Type &amp;&amp; %1-&gt;version == QStyleOptionDockWidgetV2::Version" delete-in-main-thread="yes">
      <modify-function signature="operator=(QStyleOptionDockWidget)" remove="all"/>
  </value-type>
  <value-type name="QStyleOptionFocusRect" polymorphic-id-expression="%1-&gt;type == QStyleOptionFocusRect::Type &amp;&amp; %1-&gt;version == QStyleOptionFocusRect::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionFrame" polymorphic-id-expression="%1-&gt;type == QStyleOptionFrame::Type &amp;&amp; %1-&gt;version == QStyleOptionFrame::Version" delete-in-main-thread="yes"/>

  <value-type name="QStyleOptionFrameV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionFrameV2::Type &amp;&amp; %1-&gt;version == QStyleOptionFrameV2::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOptionFrame)" remove="all"/>
  </value-type>

  <value-type name="QStyleOptionGroupBox" polymorphic-id-expression="%1-&gt;type == QStyleOptionGroupBox::Type &amp;&amp; %1-&gt;version == QStyleOptionGroupBox::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionHeader" polymorphic-id-expression="%1-&gt;type == QStyleOptionHeader::Type &amp;&amp; %1-&gt;version == QStyleOptionHeader::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionMenuItem" polymorphic-id-expression="%1-&gt;type == QStyleOptionMenuItem::Type &amp;&amp; %1-&gt;version == QStyleOptionMenuItem::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionProgressBar" polymorphic-id-expression="%1-&gt;type == QStyleOptionProgressBar::Type &amp;&amp; %1-&gt;version == QStyleOptionProgressBar::Version" delete-in-main-thread="yes"/>

  <value-type name="QStyleOptionProgressBarV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionProgressBarV2::Type &amp;&amp; %1-&gt;version == QStyleOptionProgressBarV2::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOptionProgressBar)" remove="all"/>
  </value-type>

  <value-type name="QStyleOptionRubberBand" polymorphic-id-expression="%1-&gt;type == QStyleOptionRubberBand::Type &amp;&amp; %1-&gt;version == QStyleOptionRubberBand::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionSlider" polymorphic-id-expression="%1-&gt;type == QStyleOptionSlider::Type &amp;&amp; %1-&gt;version == QStyleOptionSlider::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionSpinBox" polymorphic-id-expression="%1-&gt;type == QStyleOptionSpinBox::Type &amp;&amp; %1-&gt;version == QStyleOptionSpinBox::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionTab" polymorphic-id-expression="%1-&gt;type == QStyleOptionTab::Type &amp;&amp; %1-&gt;version == QStyleOptionTab::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionTabV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionTabV2::Type &amp;&amp; %1-&gt;version == QStyleOptionTabV2::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(const QStyleOptionTab &amp;)" remove="all"/>
  </value-type>
  <value-type name="QStyleOptionTabBarBase" polymorphic-id-expression="%1-&gt;type == QStyleOptionTabBarBase::Type &amp;&amp; %1-&gt;version == QStyleOptionTabBarBase::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionTabWidgetFrame" polymorphic-id-expression="%1-&gt;type == QStyleOptionTabWidgetFrame::Type &amp;&amp; %1-&gt;version == QStyleOptionTabWidgetFrame::Version"/>
  <value-type name="QStyleOptionTitleBar" polymorphic-id-expression="%1-&gt;type == QStyleOptionTitleBar::Type &amp;&amp; %1-&gt;version == QStyleOptionTitleBar::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionToolBar" polymorphic-id-expression="%1-&gt;type == QStyleOptionToolBar::Type &amp;&amp; %1-&gt;version == QStyleOptionToolBar::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionToolBox" polymorphic-id-expression="%1-&gt;type == QStyleOptionToolBox::Type &amp;&amp; %1-&gt;version == QStyleOptionToolBox::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionToolBoxV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionToolBoxV2::Type &amp;&amp; %1-&gt;version == QStyleOptionToolBoxV2::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOptionToolBox)" remove="all"/>
  </value-type>
  <value-type name="QStyleOptionToolButton" polymorphic-id-expression="%1-&gt;type == QStyleOptionToolButton::Type &amp;&amp; %1-&gt;version == QStyleOptionToolButton::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionViewItem" polymorphic-id-expression="%1-&gt;type == QStyleOptionViewItem::Type &amp;&amp; %1-&gt;version == QStyleOptionViewItem::Version" delete-in-main-thread="yes"/>
  <value-type name="QStyleOptionViewItemV2" polymorphic-id-expression="%1-&gt;type == QStyleOptionViewItemV2::Type &amp;&amp; %1-&gt;version == QStyleOptionViewItemV2::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOptionViewItem)" remove="all"/>
  </value-type>
  <value-type name="QStyleOptionViewItemV3" polymorphic-id-expression="%1-&gt;type == QStyleOptionViewItemV3::Type &amp;&amp; %1-&gt;version == QStyleOptionViewItemV3::Version" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStyleOptionViewItem)" remove="all"/>
  </value-type>
  <value-type name="QTextFragment" delete-in-main-thread="yes">
    <modify-function signature="operator=(QTextFragment)" remove="all"/>
  </value-type>
  <value-type name="QBitmap" delete-in-main-thread="yes">
    <modify-function signature="operator=(const QPixmap &amp;)" remove="all"/>
    <modify-function signature="QBitmap(QString,const char*)" access="private">
        <modify-argument index="2"> <remove-default-expression/> </modify-argument>
    </modify-function>
    <inject-code>
        public QBitmap(String fileName, String format) {
            this(fileName, format == null ? null : com.trolltech.qt.QNativePointer.createCharPointer(format));
        }
        public QBitmap(String fileName) {
            this(fileName, (String) null);
        }
    </inject-code>

    <modify-function signature="fromData(QSize,const unsigned char*,QImage::Format)">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static QBitmap fromData(com.trolltech.qt.core.QSize size, byte bits[], QImage.Format monoFormat) {
            return fromData(size, QtJambiInternal.byteArrayToNativePointer(bits), monoFormat);
        }

        public static QBitmap fromData(com.trolltech.qt.core.QSize size, byte bits[]) {
            return fromData(size, bits, QImage.Format.Format_MonoLSB);
        }
    </inject-code>
  </value-type>
  <value-type name="QTextInlineObject" delete-in-main-thread="yes"/>
  <value-type name="QSizePolicy"/>
  <value-type name="QTableWidgetSelectionRange"/>
  <value-type name="QTextDocumentFragment" delete-in-main-thread="yes">
    <modify-function signature="operator=(QTextDocumentFragment)" remove="all"/>
  </value-type>
  <value-type name="QTextOption" delete-in-main-thread="yes">
    <modify-function signature="operator=(const QTextOption &amp;)" remove="all"/>
  </value-type>
  <value-type name="QTextLine" delete-in-main-thread="yes">
    <modify-function signature="cursorToX(int*,QTextLine::Edge)const">
        <remove/>
    </modify-function>

    <modify-function signature="draw(QPainter*,QPointF,const QTextLayout_FormatRange*)const">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public final void draw(QPainter painter, com.trolltech.qt.core.QPointF position) {
            draw(painter, position, null);
        }
    </inject-code>
  </value-type>
  <value-type name="QTextTableFormat" delete-in-main-thread="yes"/>
  <value-type name="QTextImageFormat" delete-in-main-thread="yes"/>
  <value-type name="QTextFrameFormat" delete-in-main-thread="yes">
    <modify-function signature="isValid()const" access="non-final"/>
  </value-type>
  <value-type name="QTextLength" delete-in-main-thread="yes"/>
  <value-type name="QItemSelectionRange" delete-in-main-thread="yes">
      <modify-function signature="intersect(QItemSelectionRange)const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>
  <value-type name="QLine"/>
  <value-type name="QLineF">
    <modify-function signature="intersect(QLineF,QPointF*)const  ">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final QLineF.IntersectType intersect(QLineF line, com.trolltech.qt.core.QPointF intersectionPoint) {
            return intersect(line, intersectionPoint != null ? intersectionPoint.nativePointer() : null);
        }
    </inject-code>
  </value-type>
  <value-type name="QPainterPath">
    <modify-function signature="operator=(QPainterPath)" remove="all"/>
  </value-type>
  <value-type name="QPalette">
    <modify-function signature="operator=(const QPalette&amp;)" remove="all"/>

      <modify-function signature="QPalette(QColor, QColor, QColor, QColor, QColor, QColor, QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="background()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="foreground()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="serialNumber()const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>
  <value-type name="QKeySequence">
    <modify-function signature="operator=(QKeySequence)" remove="all"/>
    <modify-function signature="operator int()const" access="private"/>
    <modify-function signature="operator[](uint)const" access="private"/>
    <inject-code>
    @QtBlockedSlot public final int toInt() { return operator_cast_int(); }
    @QtBlockedSlot public final int at(int i) { return operator_subscript(i); }
    </inject-code>
  </value-type>

  <value-type name="QPicture" delete-in-main-thread="yes">
    <extra-includes>
        <include file-name="com.trolltech.qt.core.QIODevice" location="java"/>
    </extra-includes>
    <modify-function signature="load(QIODevice*,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public final boolean load(QIODevice dev) {
            return load(dev, (QNativePointer) null);
        }
    </inject-code>

    <modify-function signature="load(QString,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public final boolean load(String fileName) {
            return load(fileName, (com.trolltech.qt.QNativePointer) null);
        }
    </inject-code>

    <modify-function signature="operator=(QPicture)" remove="all"/>

    <modify-function signature="save(QIODevice*,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public final boolean save(QIODevice dev) {
            return save(dev, (com.trolltech.qt.QNativePointer) null);
        }
    </inject-code>

    <modify-function signature="save(QString,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public final boolean save(String fileName) {
            return save(fileName, (com.trolltech.qt.QNativePointer) null);
        }
    </inject-code>

    <modify-function signature="setData(const char*,uint)">
        <modify-argument index="1">
            <replace-type modified-type="byte[]"/>
            <conversion-rule class="shell">
                jbyteArray %out = __jni_env-&gt;NewByteArray(%2);
                __jni_env-&gt;SetByteArrayRegion(%out, 0, %2, (jbyte *) %in);
            </conversion-rule>
            <conversion-rule class="native">
                char *%out = (char *) __jni_env-&gt;GetByteArrayElements((jbyteArray) %in, 0);
                char *__ptr = %out;
                Q_UNUSED(__ptr)
            </conversion-rule>
        </modify-argument>

        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="pictureFormat(QString)">
        <remove/>
    </modify-function>

    <modify-function signature="data()const">
        <access modifier="private"/>
        <rename to="data_private"/>
    </modify-function>
    <inject-code>
        public final byte[] data() {
            QNativePointer npData = data_private();
            if (npData == null) return null;
            byte returned[] = new byte[size()];
            for (int i=0; i&lt;returned.length; ++i) returned[i] = npData.byteAt(i);
            return returned;
        }
    </inject-code>

      <modify-function signature="inputFormatList()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="inputFormats()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="outputFormatList()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="outputFormats()" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>

  <value-type name="QRegion" expense-limit="4096">
    <modify-function signature="operator=(QRegion)" remove="all"/>
    <modify-function signature="operator&amp;=(QRegion)" remove="all"/>
    <modify-function signature="operator+=(QRegion)" remove="all"/>
    <modify-function signature="operator-=(QRegion)" remove="all"/>
    <modify-function signature="operator^=(QRegion)" remove="all"/>
    <modify-function signature="operator|=(QRegion)" remove="all"/>
    <modify-function signature="operator&amp;(QRegion)const" remove="all"/>
    <modify-function signature="operator+(QRegion)const" remove="all"/>
    <modify-function signature="operator-(QRegion)const" remove="all"/>
    <modify-function signature="operator^(QRegion)const" remove="all"/>
    <modify-function signature="operator|(QRegion)const" remove="all"/>
    <modify-function signature="setRects(const QRect*,int)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public void setRects(com.trolltech.qt.core.QRect[] rects) {
            setRects(com.trolltech.qt.core.QRect.nativePointerArray(rects), rects.length);
        }
    </inject-code>

      <modify-function signature="eor(QRegion)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="intersect(QRegion)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="subtract(QRegion)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="unite(QRegion)const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>
  <value-type name="QTextBlock" delete-in-main-thread="yes">
    <modify-function signature="operator=(QTextBlock)" remove="all"/>
    <modify-function signature="setUserData(QTextBlockUserData *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
     </modify-function>
  </value-type>
  <value-type name="QTextBlockFormat" delete-in-main-thread="yes"/>
  <value-type name="QTextCharFormat" delete-in-main-thread="yes">
    <modify-function signature="isValid()const" access="non-final"/>

      <modify-function signature="anchorName()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setAnchorName(QString)" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>
  <value-type name="QTextFormat" delete-in-main-thread="yes">
    <modify-function signature="operator=(QTextFormat)" remove="all"/>
    <modify-function signature="isValid()const" access="non-final"/>

  </value-type>

  <value-type name="QTextListFormat" delete-in-main-thread="yes"/>
  <value-type name="QPolygon">
    <extra-includes>
        <include file-name="com.trolltech.qt.core.QPoint" location="java"/>
    </extra-includes>
    <modify-function signature="QPolygon(int, const int *)" remove="all"/>

    <modify-function signature="operator+(QVector&lt;QPoint&gt;)const" remove="all"/>
    <modify-function signature="operator&lt;&lt;(QPoint)" remove="all"/>
    <modify-function signature="operator&lt;&lt;(QVector&lt;QPoint&gt;)" remove="all"/>


    <inject-code>
      private native void add_private(long nid, int x, int y);

      @QtBlockedSlot public final QPolygon add(int x, int y) {
          add_private(nativeId(), x, y);
          return this;
      }

      @QtBlockedSlot public final QPolygon add(QPoint pt) {
          add_private(nativeId(), pt.x(), pt.y());
          return this;
      }

      @QtBlockedSlot public final QPolygon add(QPolygon p) {
          int size = p.size();
          long nid = nativeId();
          for (int i=0; i&lt;size; ++i) {
              QPoint pt = p.at(i);
              add_private(nid, pt.x(), pt.y());
          }
          return this;
      }
    </inject-code>

    <inject-code class="native">
      extern "C" JNIEXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_com_trolltech_qt_gui_QPolygon_add_1private)
      (JNIEnv *__jni_env, jobject, jlong nativeId, jint x, jint y)
      {
          Q_UNUSED(__jni_env);
          QPolygon *polygon = (QPolygon *) qtjambi_from_jlong(nativeId);
          if (!polygon)
              return;
          *polygon &lt;&lt; QPoint(x, y);
      }
    </inject-code>
  </value-type>

  <value-type name="QPolygonF">
    <extra-includes>
        <include file-name="com.trolltech.qt.core.QPointF" location="java"/>
    </extra-includes>

    <modify-function signature="operator+(QVector&lt;QPointF&gt;)const" remove="all"/>
    <modify-function signature="operator&lt;&lt;(QPointF)" remove="all"/>
    <modify-function signature="operator&lt;&lt;(QVector&lt;QPointF&gt;)" remove="all"/>

    <inject-code>
      private native void add_private(long nid, double x, double y);

      @QtBlockedSlot public final QPolygonF add(double x, double y) {
          add_private(nativeId(), x, y);
          return this;
      }

      @QtBlockedSlot public final QPolygonF add(QPointF pt) {
          add_private(nativeId(), pt.x(), pt.y());
          return this;
      }

      @QtBlockedSlot public final QPolygonF add(QPolygonF p) {
          int size = p.size();
          long nid = nativeId();
          for (int i=0; i&lt;size; ++i) {
              QPointF pt = p.at(i);
              add_private(nid, pt.x(), pt.y());
          }
          return this;
      }
    </inject-code>

    <inject-code class="native">
      extern "C" JNIEXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_com_trolltech_qt_gui_QPolygonF_add_1private)
      (JNIEnv *__jni_env, jobject, jlong nativeId, jdouble x, jdouble y)
      {
          Q_UNUSED(__jni_env);
          QPolygonF *polygon = (QPolygonF *) qtjambi_from_jlong(nativeId);
          if (!polygon)
              return;
          *polygon &lt;&lt; QPointF(x, y);
      }
    </inject-code>
  </value-type>


  <value-type name="QIcon" delete-in-main-thread="yes">
    <modify-function signature="operator=(QIcon)" remove="all"/>

      <modify-function signature="serialNumber()const" remove="all"/> <!--### Obsolete in 4.3-->

      <modify-function signature="QIcon(QIconEngineV2 *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++" />
        </modify-argument>
      </modify-function>

      <modify-function signature="QIcon(QIconEngine *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++" />
        </modify-argument>
      </modify-function>
  </value-type>

  <value-type name="QTextFrame::iterator" delete-in-main-thread="yes">
    <include file-name="QTextFrame" location="global"/>
    <modify-function signature="operator++(int)" remove="all"/>
    <modify-function signature="operator--(int)" remove="all"/>
    <modify-function signature="operator=(QTextFrame_iterator)" remove="all"/>

    <modify-function signature="operator++()" access="private"/>
    <modify-function signature="operator--()" access="private"/>

    <inject-code>
        @QtBlockedSlot public final void next() { operator_increment(); }
        @QtBlockedSlot public final void previous() { operator_decrement(); }
    </inject-code>
  </value-type>

  <value-type name="QTreeWidgetItemIterator" delete-in-main-thread="yes">
    <custom-constructor>
    return new QTreeWidgetItemIterator(*copy);
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
    <modify-function signature="operator=(QTreeWidgetItemIterator)" remove="all"/>
    <modify-function signature="operator++(int)" remove="all"/>
    <modify-function signature="operator--(int)" remove="all"/>

    <modify-function signature="operator+=(int)" access="private"/>
    <modify-function signature="operator-=(int)" access="private"/>
    <modify-function signature="operator++()" access="private"/>
    <modify-function signature="operator--()" access="private"/>
    <modify-function signature="operator*()const" access="private"/>

    <inject-code>
        @QtBlockedSlot public final void next(int i) { operator_add_assign(i); }
        @QtBlockedSlot public final void previous(int i) { operator_subtract_assign(i); }
        @QtBlockedSlot public final void next() { operator_increment(); }
        @QtBlockedSlot public final void previous() { operator_decrement(); }
        @QtBlockedSlot public final QTreeWidgetItem current() { return operator_multiply(); }
    </inject-code>
   </value-type>

  <value-type name="QTextBlock::iterator" delete-in-main-thread="yes">
    <include file-name="QTextBlock" location="global"/>

    <modify-function signature="operator++()" access="private"/>
    <modify-function signature="operator--()" access="private"/>
    <modify-function signature="operator++(int)" remove="all"/>
    <modify-function signature="operator--(int)" remove="all"/>

    <inject-code>
        @QtBlockedSlot public final void next() { operator_increment(); }
        @QtBlockedSlot public final void previous() { operator_decrement(); }
    </inject-code>
  </value-type>

  <value-type name="QAbstractTextDocumentLayout::PaintContext" delete-in-main-thread="yes">
    <include file-name="QAbstractTextDocumentLayout" location="global"/>
  </value-type>
  <value-type name="QAbstractTextDocumentLayout::Selection" delete-in-main-thread="yes"/>

  <value-type name="QPixmap" delete-in-main-thread="yes">
    <modify-function signature="operator=(QPixmap)" remove="all"/>
    <modify-function signature="operator!()const" remove="all"/>

    <modify-function signature="QPixmap(const char **)" access="private"/>

    <modify-function signature="fill(const QColor &amp;)">
      <modify-argument index="1">
        <replace-default-expression with="QColor.white"/>
      </modify-argument>
    </modify-function>
    <inject-code>
        public QPixmap(String xpm[])
        {
            this(com.trolltech.qt.QNativePointer.createCharPointerPointer(xpm));
        }
    </inject-code>

    <template name="gui.pixmap_save">
        public final boolean save(%INPUT_TYPE %INPUT_NAME, String format, int quality) {
            return private_save(%INPUT_NAME, com.trolltech.qt.QNativePointer.createCharPointer(format), quality);
        }
        public final boolean save(%INPUT_TYPE %INPUT_NAME, String format) {
            return save(%INPUT_NAME, format, -1);
        }
        public final boolean save(%INPUT_TYPE %INPUT_NAME) {
            return save(%INPUT_NAME, null);
        }
    </template>

    <template name="gui.pixmap_loadconstructor">
        public %RETURN_TYPE %FUNCTION_NAME(%INPUT_TYPE %INPUT_NAME, String format, Qt.ImageConversionFlags flags) {
            %FUNCTION_CALL(%OUTPUT_NAME, format == null ? null : QNativePointer.createCharPointer(format), flags);
        }

        public %RETURN_TYPE %FUNCTION_NAME(%INPUT_TYPE %INPUT_NAME, String format, Qt.ImageConversionFlag ... flags) {
            %FUNCTION_CALL(%INPUT_NAME, format, new Qt.ImageConversionFlags(flags));
        }

        public %RETURN_TYPE %FUNCTION_NAME(%INPUT_TYPE %INPUT_NAME, String format) {
            %FUNCTION_CALL(%INPUT_NAME, format, Qt.ImageConversionFlag.AutoColor);
        }

        public %RETURN_TYPE %FUNCTION_NAME(%INPUT_TYPE %INPUT_NAME) {
            %FUNCTION_CALL(%INPUT_NAME, null);
        }
    </template>

    <template name="gui.pixmap_load">
        <insert-template name="gui.pixmap_loadconstructor">
            <replace from="%RETURN_TYPE" to="final boolean"/>
            <replace from="%FUNCTION_CALL" to="return %FUNCTION_NAME"/>
        </insert-template>
    </template>

    <template name="gui.pixmap_constructor">
        <insert-template name="gui.pixmap_loadconstructor">
            <replace from="%RETURN_TYPE" to=""/>
            <replace from="%FUNCTION_NAME" to="QPixmap"/>
            <replace from="%FUNCTION_CALL" to="this"/>
            <replace from="%INPUT_TYPE" to="String"/>
            <replace from="%INPUT_NAME" to="fileName"/>
            <replace from="%OUTPUT_NAME" to="fileName"/>
        </insert-template>
    </template>

    <extra-includes>
        <include file-name="QBitmap" location="global"/>
        <include file-name="QMatrix" location="global"/>
        <include file-name="com.trolltech.qt.core.Qt" location="java"/>
    </extra-includes>
    <modify-function signature="save(QIODevice *, const char *, int) const">
        <access modifier="private"/>
        <rename to="private_save"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_save">
            <replace from="%INPUT_TYPE" to="com.trolltech.qt.core.QIODevice"/>
            <replace from="%INPUT_NAME" to="dev"/>
        </insert-template>
    </inject-code>

    <modify-function signature="save(const QString &amp;, const char *, int) const">
        <access modifier="private"/>
        <rename to="private_save"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_save">
            <replace from="%INPUT_TYPE" to="String"/>
            <replace from="%INPUT_NAME" to="fileName"/>
        </insert-template>
    </inject-code>

    <modify-function signature="QPixmap(QString,const char*,QFlags&lt;Qt::ImageConversionFlag&gt;)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_constructor"/>
    </inject-code>

    <modify-function signature="load(QString,const char*,QFlags&lt;Qt::ImageConversionFlag&gt;)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_load">
            <replace from="%FUNCTION_NAME" to="load"/>
            <replace from="%INPUT_TYPE" to="String"/>
            <replace from="%INPUT_NAME" to="fileName"/>
            <replace from="%OUTPUT_NAME" to="fileName"/>
        </insert-template>
    </inject-code>

    <modify-function signature="loadFromData(const unsigned char*,uint,const char*,QFlags&lt;Qt::ImageConversionFlag&gt;)">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_load">
            <replace from="%FUNCTION_NAME" to="loadFromData"/>
            <replace from="%INPUT_TYPE" to="byte[]"/>
            <replace from="%INPUT_NAME" to="data"/>
            <replace from="%OUTPUT_NAME" to="com.trolltech.qt.QtJambiInternal.byteArrayToNativePointer(data), data.length"/>
        </insert-template>
    </inject-code>

    <modify-function signature="loadFromData(QByteArray,const char*,QFlags&lt;Qt::ImageConversionFlag&gt;)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_load">
            <replace from="%FUNCTION_NAME" to="loadFromData"/>
            <replace from="%INPUT_TYPE" to="com.trolltech.qt.core.QByteArray"/>
            <replace from="%INPUT_NAME" to="data"/>
            <replace from="%OUTPUT_NAME" to="data"/>
        </insert-template>
    </inject-code>

      <modify-function signature="serialNumber()const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>

  <value-type name="QTextCursor" delete-in-main-thread="yes">
    <extra-includes>
        <include file-name="QTextBlock" location="global"/>
        <include file-name="QTextDocumentFragment" location="global"/>
    </extra-includes>
    <modify-function signature="operator=(QTextCursor)" remove="all"/>
    <modify-function signature="selectedTableCells(int*,int*,int*,int*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final QTableArea selectedTableCells() {
            QNativePointer firstRow = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer numRows = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer firstColumn = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer numColumns = new QNativePointer(QNativePointer.Type.Int);

            selectedTableCells(firstRow, numRows, firstColumn, numColumns);

            return new QTableArea(firstRow.intValue(), firstColumn.intValue(), numRows.intValue(), numColumns.intValue());
        }
    </inject-code>
  </value-type>

  <value-type name="QTextLayout::FormatRange" delete-in-main-thread="yes">
    <include file-name="QTextLayout" location="global"/>
  </value-type>

  <value-type name="QInputMethodEvent::Attribute">
    <include file-name="QInputMethodEvent" location="global"/>
    <custom-constructor>
    return new QInputMethodEvent::Attribute(copy-&gt;type, copy-&gt;start, copy-&gt;length, copy-&gt;value);
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
  </value-type>

  <value-type name="QItemSelection" delete-in-main-thread="yes">
    <modify-function signature="operator+(const QList&lt;QItemSelectionRange&gt;&amp;)const" remove="all"/>
    <modify-function signature="operator+=(const QList&lt;QItemSelectionRange&gt;&amp;)" remove="all"/>
    <modify-function signature="operator+=(const QItemSelectionRange&amp;)" remove="all"/>
    <modify-function signature="operator&lt;&lt;(const QList&lt;QItemSelectionRange&gt;&amp;)" remove="all"/>
    <modify-function signature="operator&lt;&lt;(QItemSelectionRange)" remove="all"/>
    <modify-function signature="split(QItemSelectionRange,QItemSelectionRange,QItemSelection*)">
        <access modifier="private"/>
    </modify-function>

    <inject-code>
        public static void split(QItemSelectionRange range, QItemSelectionRange other, QItemSelection result) {
            com.trolltech.qt.QNativePointer np = result.nativePointer();
            split(range, other, np);
        }
    </inject-code>

  </value-type>

  <value-type name="QMatrix">
      <extra-includes>
        <include file-name="QPainterPath" location="global"/>
      </extra-includes>

      <modify-function signature="map(int,int,int*,int*)const" remove="all"/>
      <modify-function signature="map(double,double,double*,double*)const" remove="all"/>
      <modify-function signature="operator=(QMatrix)" remove="all"/>

      <modify-function signature="operator*(QMatrix)const" access="private"/>
      <modify-function signature="operator*=(QMatrix)" access="private"/>
      <modify-function signature="rotate(double)" access="private" rename="rotate_private"/>
      <modify-function signature="scale(double,double)" access="private" rename="scale_private"/>
      <modify-function signature="shear(double,double)" access="private" rename="shear_private"/>
      <modify-function signature="translate(double,double)" access="private" rename="translate_private"/>

      <modify-function signature="inverted(bool*)const">
        <access modifier="private"/>
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
      </modify-function>

      <inject-code>
      /**
       * Returns an inverted copy of this matrix.
       *
       * @return The inverse of the matrix.
       * @throws IllegalArgumentException If this matrix is not invertible.
       */
       public final QMatrix inverted() {
           QNativePointer ok = new QNativePointer(QNativePointer.Type.Boolean);
           QMatrix returned = inverted(ok);
           if (!ok.booleanValue())
               throw new IllegalArgumentException("Matrix is not invertible");
           return returned;
       }
    </inject-code>

    <inject-code>
      <insert-template name="core.unary_other_type">
        <replace from="%FUNCTION_NAME" to="rotate"/>
        <replace from="%OUT_TYPE" to="QMatrix"/>
        <replace from="%IN_TYPE" to="double"/>
      </insert-template>

      <insert-template name="core.private_function_return_self">
        <replace from="%RETURN_TYPE" to="QMatrix"/>
        <replace from="%FUNCTION_NAME" to="scale"/>
        <replace from="%ARGUMENTS" to="double sx, double sy"/>
        <replace from="%ARGUMENT_NAMES" to="sx, sy"/>
      </insert-template>

      <insert-template name="core.private_function_return_self">
        <replace from="%RETURN_TYPE" to="QMatrix"/>
        <replace from="%FUNCTION_NAME" to="shear"/>
        <replace from="%ARGUMENTS" to="double sh, double sv"/>
        <replace from="%ARGUMENT_NAMES" to="sh, sv"/>
      </insert-template>

      <insert-template name="core.private_function_return_self">
        <replace from="%RETURN_TYPE" to="QMatrix"/>
        <replace from="%FUNCTION_NAME" to="translate"/>
        <replace from="%ARGUMENTS" to="double dx, double dy"/>
        <replace from="%ARGUMENT_NAMES" to="dx, dy"/>
      </insert-template>

      @QtBlockedSlot public final QMatrix multiply(QMatrix other) {
          operator_multiply_assign(other);
          return this;
      }
      @QtBlockedSlot public final QMatrix multiplied(QMatrix other) {
          return operator_multiply(other);
      }

    </inject-code>
  </value-type>

  <value-type name="QConicalGradient" polymorphic-id-expression="%1-&gt;type() == QGradient::ConicalGradient">
    <custom-constructor>
    return new QConicalGradient(copy-&gt;center(), copy-&gt;angle());
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
  </value-type>

  <value-type name="QFontInfo" delete-in-main-thread="yes" expense-limit="1000" expense-cost="1">
    <custom-constructor>
    return new QFontInfo(*copy);
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
    <modify-function signature="operator=(QFontInfo)" remove="all"/>

  </value-type>

  <value-type name="QRadialGradient" polymorphic-id-expression="%1-&gt;type() == QGradient::RadialGradient">
    <custom-constructor>
    return new QRadialGradient(copy-&gt;center(), copy-&gt;radius(), copy-&gt;focalPoint());
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
  </value-type>

  <value-type name="QPainterPath::Element">
    <modify-field name="x" write="false"/>
    <modify-field name="y" write="false"/>
    <modify-field name="type" write="false"/>
    <include file-name="QPainterPath" location="global"/>
    <modify-function signature="operator QPointF()const" access="private"/>
    <inject-code>
    @QtBlockedSlot public final com.trolltech.qt.core.QPointF toPoint() { return operator_cast_QPointF(); }
    </inject-code>
  </value-type>

  <value-type name="QTextEdit::ExtraSelection" delete-in-main-thread="yes">
    <include file-name="QTextEdit" location="global"/>
  </value-type>

  <value-type name="QFont" delete-in-main-thread="yes" expense-limit="1000" expense-cost="1">
    <extra-includes>
        <include file-name="QStringList" location="global"/>
    </extra-includes>
    <modify-function signature="operator=(QFont)" remove="all"/>
  </value-type>

  <value-type name="QTextTableCell" delete-in-main-thread="yes">
    <extra-includes>
        <include file-name="QTextCursor" location="global"/>
    </extra-includes>
    <modify-function signature="operator=(QTextTableCell)" remove="all"/>
  </value-type>

  <value-type name="QImage" expense-limit="67108864" expense-cost="height()*bytesPerLine()">
    <modify-function signature="QImage(const char *, const char *)">
        <remove/>
    </modify-function>
    <modify-function signature="QImage(const char **)">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="QImage(const unsigned char*,int,int,int,QImage::Format)">
        <remove/>
    </modify-function>
    <modify-function signature="bits()const">
        <remove/>
    </modify-function>
    <modify-function signature="scanLine(int)const">
        <remove/>
    </modify-function>
    <modify-function signature="QImage(const unsigned char *, int, int, QImage::Format)">
        <remove/>
    </modify-function>
    <inject-code>
        public QImage(String xpm[])
        {
            this(com.trolltech.qt.QNativePointer.createCharPointerPointer(xpm));
        }
    </inject-code>
    <extra-includes>
        <include file-name="QStringList" location="global"/>
        <include file-name="QMatrix" location="global"/>
    </extra-includes>
    <modify-function signature="save(const QString &amp;, const char *, int) const">
        <access modifier="private"/>
        <rename to="private_save"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_save">
            <replace from="%INPUT_TYPE" to="String"/>
            <replace from="%INPUT_NAME" to="fileName"/>
        </insert-template>
    </inject-code>

    <inject-code>
        public final byte[] copyOfBytes() {
            QNativePointer bits = bits();
            byte bytes[] = new byte[numBytes()];
            for (int i=0;i&lt;bytes.length;++i) bytes[i] = bits.byteAt(i);
            return bytes;
        }
    </inject-code>


    <modify-function signature="save(QIODevice *, const char *, int) const">
        <access modifier="private"/>
        <rename to="private_save"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.pixmap_save">
            <replace from="%INPUT_TYPE" to="com.trolltech.qt.core.QIODevice"/>
            <replace from="%INPUT_NAME" to="dev"/>
        </insert-template>
    </inject-code>

    <modify-function signature="QImage(unsigned char*,int,int,QImage::Format)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public QImage(byte data[], int width, int height, Format format) {
            this(com.trolltech.qt.QtJambiInternal.byteArrayToNativePointer(data), width, height, format);
        }
    </inject-code>

    <modify-function signature="QImage(QString,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public QImage(String fileName, String format) {
            this(fileName, format == null ? null : QNativePointer.createCharPointer(format));
        }

        public QImage(String fileName) {
            this(fileName, (String) null);
        }
    </inject-code>

    <template name="gui.image_load">
        public final boolean %FUNCTION_NAME(%ARGUMENT_TYPE %ARGUMENT_NAME, String format) {
            return %FUNCTION_NAME(%OUT_ARGUMENT_NAME, format != null ? QNativePointer.createCharPointer(format) : null);
        }

        public final boolean %FUNCTION_NAME(%ARGUMENT_TYPE %ARGUMENT_NAME) {
            return %FUNCTION_NAME(%ARGUMENT_NAME, (String) null);
        }
    </template>
    <modify-function signature="load(QString,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.image_load">
            <replace from="%FUNCTION_NAME" to="load"/>
            <replace from="%ARGUMENT_TYPE" to="String"/>
            <replace from="%ARGUMENT_NAME" to="fileName"/>
            <replace from="%OUT_ARGUMENT_NAME" to="fileName"/>
        </insert-template>
    </inject-code>

    <modify-function signature="load(QIODevice*,const char*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.image_load">
            <replace from="%FUNCTION_NAME" to="load"/>
            <replace from="%ARGUMENT_TYPE" to="com.trolltech.qt.core.QIODevice"/>
            <replace from="%ARGUMENT_NAME" to="device"/>
            <replace from="%OUT_ARGUMENT_NAME" to="device"/>
        </insert-template>
    </inject-code>

    <modify-function signature="loadFromData(const unsigned char*,int,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.image_load">
            <replace from="%FUNCTION_NAME" to="loadFromData"/>
            <replace from="%ARGUMENT_TYPE" to="byte[]"/>
            <replace from="%ARGUMENT_NAME" to="data"/>
            <replace from="%OUT_ARGUMENT_NAME" to="com.trolltech.qt.QtJambiInternal.byteArrayToNativePointer(data), data.length"/>
        </insert-template>
    </inject-code>

    <modify-function signature="loadFromData(QByteArray,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.image_load">
            <replace from="%FUNCTION_NAME" to="loadFromData"/>
            <replace from="%ARGUMENT_TYPE" to="com.trolltech.qt.core.QByteArray"/>
            <replace from="%ARGUMENT_NAME" to="data"/>
            <replace from="%OUT_ARGUMENT_NAME" to="data"/>
        </insert-template>
    </inject-code>

    <modify-function signature="operator=(QImage)" remove="all"/>

    <modify-function signature="setText(const char*,const char*,QString)">
        <remove/>
    </modify-function>

    <modify-function signature="text(const char*,const char*)const">
        <remove/>
    </modify-function>

    <modify-function signature="fromData(QByteArray,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.image_load">
            <replace from="%FUNCTION_NAME" to="fromData"/>
            <replace from="%ARGUMENT_TYPE" to="com.trolltech.qt.core.QByteArray"/>
            <replace from="%ARGUMENT_NAME" to="data"/>
            <replace from="%OUT_ARGUMENT_NAME" to="data"/>
            <replace from="boolean" to="QImage"/>
            <replace from="final" to="static"/>
        </insert-template>
    </inject-code>

    <modify-function signature="fromData(const unsigned char*,int,const char*)">
        <remove/>
    </modify-function>

      <modify-function signature="serialNumber()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="textLanguages()const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>

  <value-type name="QColormap" delete-in-main-thread="yes">
    <modify-function signature="operator=(QColormap)" remove="all"/>
    <extra-includes>
        <include file-name="QColor" location="global"/>
    </extra-includes>
    <custom-constructor>
    return new QColormap(*copy);
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
  </value-type>

  <value-type name="QCursor" delete-in-main-thread="yes">
    <template name="gui.cursor_bitmap_getter">
        <insert-template name="gui.getter_returning_nativepointer">
            <replace from="%RETURN_TYPE" to="QBitmap"/>
        </insert-template>
    </template>

    <extra-includes>
        <include file-name="QPixmap" location="global"/>
    </extra-includes>
    <modify-function signature="bitmap()const">
        <access modifier="private"/>
        <rename to="bitmap_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.cursor_bitmap_getter">
            <replace from="%FUNCTION_NAME" to="bitmap"/>
        </insert-template>
    </inject-code>

    <modify-function signature="mask()const">
        <access modifier="private"/>
        <rename to="mask_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.cursor_bitmap_getter">
            <replace from="%FUNCTION_NAME" to="mask"/>
        </insert-template>
    </inject-code>

    <modify-function signature="operator=(QCursor)" remove="all"/>

  </value-type>

  <value-type name="QFontDatabase" delete-in-main-thread="yes">
      <extra-includes>
        <include file-name="QStringList" location="global"/>
    </extra-includes>
  </value-type>

  <value-type name="QPen">
      <extra-includes>
        <include file-name="QBrush" location="global"/>
    </extra-includes>
    <inject-code>
    public QPen(QColor color, double width, com.trolltech.qt.core.Qt.PenStyle s, com.trolltech.qt.core.Qt.PenCapStyle c, com.trolltech.qt.core.Qt.PenJoinStyle j) {
        this(new QBrush(color), width, s, c, j);
    }
    public QPen(QColor color, double width, com.trolltech.qt.core.Qt.PenStyle s, com.trolltech.qt.core.Qt.PenCapStyle c) {
        this(new QBrush(color), width, s, c);
    }
    public QPen(QColor color, double width, com.trolltech.qt.core.Qt.PenStyle s) {
        this(new QBrush(color), width, s);
    }
    public QPen(QColor color, double width) {
        this(new QBrush(color), width);
    }
    public static final QPen NoPen = new QPen(com.trolltech.qt.core.Qt.PenStyle.NoPen);
    </inject-code>
    <modify-function signature="operator=(QPen)" remove="all"/>
  </value-type>

  <value-type name="QBrush">
    <modify-function signature="QBrush(Qt::GlobalColor, Qt::BrushStyle)" remove="all"/>
    <modify-function signature="operator=(const QBrush &amp;)" remove="all"/>

    <extra-includes>
        <include file-name="QPixmap" location="global"/>
    </extra-includes>

    <inject-code class="java">
    public static final QBrush NoBrush = new QBrush(com.trolltech.qt.core.Qt.BrushStyle.NoBrush);
    </inject-code>

    <modify-function signature="gradient()const">
        <!-- Use custom constructors already defined for gradient -->
        <modify-argument index="0">
            <replace-type modified-type="com.trolltech.qt.gui.QGradient"/>
            <conversion-rule class="native">
                jobject %out = qtjambi_from_object(__jni_env, %in, "QGradient", "com/trolltech/qt/gui/", "Lcom_trolltech_qt_gui_QGradient_2", true);
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </value-type>

  <value-type name="QColor">
    <modify-function signature="QColor(QColor::Spec)" remove="all"/>
    <modify-function signature="operator=(QColor)" remove="all"/>
    <modify-function signature="operator=(Qt::GlobalColor)" remove="all"/>

    <inject-code class="java">
    public static final QColor white = new QColor(com.trolltech.qt.core.Qt.GlobalColor.white);
    public static final QColor black = new QColor(com.trolltech.qt.core.Qt.GlobalColor.black);
    public static final QColor red = new QColor(com.trolltech.qt.core.Qt.GlobalColor.red);
    public static final QColor darkRed = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkRed);
    public static final QColor green = new QColor(com.trolltech.qt.core.Qt.GlobalColor.green);
    public static final QColor darkGreen = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkGreen);
    public static final QColor blue = new QColor(com.trolltech.qt.core.Qt.GlobalColor.blue);
    public static final QColor darkBlue = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkBlue);
    public static final QColor cyan = new QColor(com.trolltech.qt.core.Qt.GlobalColor.cyan);
    public static final QColor darkCyan = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkCyan);
    public static final QColor magenta = new QColor(com.trolltech.qt.core.Qt.GlobalColor.magenta);
    public static final QColor darkMagenta = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkMagenta);
    public static final QColor yellow = new QColor(com.trolltech.qt.core.Qt.GlobalColor.yellow);
    public static final QColor darkYellow = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkYellow);
    public static final QColor gray = new QColor(com.trolltech.qt.core.Qt.GlobalColor.gray);
    public static final QColor darkGray = new QColor(com.trolltech.qt.core.Qt.GlobalColor.darkGray);
    public static final QColor lightGray = new QColor(com.trolltech.qt.core.Qt.GlobalColor.lightGray);
    public static final QColor transparent = new QColor(com.trolltech.qt.core.Qt.GlobalColor.transparent);
    public static final QColor color0 = new QColor(com.trolltech.qt.core.Qt.GlobalColor.color0);
    public static final QColor color1 = new QColor(com.trolltech.qt.core.Qt.GlobalColor.color1);
    </inject-code>
    <modify-function signature="QColor(const char*)">
        <remove/>
    </modify-function>

    <modify-function signature="getCmyk(int*,int*,int*,int*,int*)">
        <remove/>
    </modify-function>

    <modify-function signature="getCmykF(double*,double*,double*,double*,double*)">
        <remove/>
    </modify-function>

    <modify-function signature="getHsv(int*,int*,int*,int*)const">
        <remove/>
    </modify-function>

    <modify-function signature="getHsvF(double*,double*,double*,double*)const">
        <remove/>
    </modify-function>

    <modify-function signature="getRgb(int*,int*,int*,int*)const">
        <remove/>
    </modify-function>

    <modify-function signature="getRgbF(double*,double*,double*,double*)const">
        <remove/>
    </modify-function>


      <modify-function signature="dark(int)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="light(int)const" remove="all"/> <!--### Obsolete in 4.3-->
  </value-type>

  <value-type name="QFontMetricsF" delete-in-main-thread="yes" expense-limit="1000" expense-cost="1">
    <custom-constructor>
        return new QFontMetricsF(*copy);
    </custom-constructor>
    <custom-destructor>
        delete copy;
    </custom-destructor>
    <modify-function signature="operator!=(const QFontMetricsF &amp;)">
        <remove/>
    </modify-function>
    <modify-function signature="operator==(const QFontMetricsF &amp;)">
        <remove/>
    </modify-function>

    <template name="gui.fontmetricsf_boundingrect">
        <insert-template name="gui.fontmetrics_tabarray_function">
            <replace from="%RETURN_TYPE" to="com.trolltech.qt.core.QRectF"/>
            <replace from="%FUNCTION_NAME" to="boundingRect"/>
            <replace from="%RECT_ARGUMENTS" to="%RECT_ARGUMENTS, "/>
            <replace from="%RECT_CALL_ARGUMENTS" to="%RECT_CALL_ARGUMENTS, "/>
        </insert-template>
    </template>


    <modify-function signature="boundingRect(QRectF,int,QString,int,int*)const">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontmetricsf_boundingrect">
            <replace from="%RECT_ARGUMENTS" to="com.trolltech.qt.core.QRectF rect"/>
            <replace from="%RECT_CALL_ARGUMENTS" to="rect"/>
        </insert-template>
    </inject-code>

    <modify-function signature="operator=(QFontMetrics)" remove="all"/>
    <modify-function signature="operator=(QFontMetricsF)" remove="all"/>

    <modify-function signature="size(int,QString,int,int*)const">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontmetrics_tabarray_function">
            <replace from="%RETURN_TYPE" to="com.trolltech.qt.core.QSizeF"/>
            <replace from="%FUNCTION_NAME" to="size"/>
            <replace from="%RECT_ARGUMENTS" to=""/>
            <replace from="%RECT_CALL_ARGUMENTS" to=""/>
        </insert-template>
    </inject-code>


  </value-type>

  <value-type name="QFontMetrics" delete-in-main-thread="yes" expense-limit="1000" expense-cost="1">
    <custom-constructor>
        return new QFontMetrics(*copy);
    </custom-constructor>
    <custom-destructor>
        delete copy;
    </custom-destructor>
    <modify-function signature="operator!=(const QFontMetrics &amp;)">
        <remove/>
    </modify-function>
    <modify-function signature="operator==(const QFontMetrics &amp;)">
        <remove/>
    </modify-function>

    <template name="gui.fontmetrics_tabarray_function">
        public final %RETURN_TYPE %FUNCTION_NAME(%RECT_ARGUMENTSint flags, String text, int tabStops, int tabArray[]) {
            QNativePointer np = tabArray == null ? null : new QNativePointer(QNativePointer.Type.Int, tabArray.length + 1);
            if (np != null) {
                for (int i=0; i&lt;tabArray.length; ++i) np.setIntAt(i, tabArray[i]);
                np.setIntAt(tabArray.length, 0);
            }
            return %FUNCTION_NAME(%RECT_CALL_ARGUMENTSflags, text, tabStops, np);
        }

        public final %RETURN_TYPE %FUNCTION_NAME(%RECT_ARGUMENTSint flags, String text, int tabStops) {
            return %FUNCTION_NAME(%RECT_CALL_ARGUMENTSflags, text, tabStops, (int []) null);
        }

        public final %RETURN_TYPE %FUNCTION_NAME(%RECT_ARGUMENTSint flags, String text) {
            return %FUNCTION_NAME(%RECT_CALL_ARGUMENTSflags, text, 0);
        }
    </template>

    <template name="gui.fontmetrics_boundingrect">
        <insert-template name="gui.fontmetrics_tabarray_function">
            <replace from="%RETURN_TYPE" to="com.trolltech.qt.core.QRect"/>
            <replace from="%FUNCTION_NAME" to="boundingRect"/>
            <replace from="%RECT_ARGUMENTS" to="%RECT_ARGUMENTS, "/>
            <replace from="%RECT_CALL_ARGUMENTS" to="%RECT_CALL_ARGUMENTS, "/>
        </insert-template>
    </template>

    <modify-function signature="boundingRect(int,int,int,int,int,QString,int,int*)const">
        <access modifier="private"/>
        <modify-argument index="7">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="8">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontmetrics_boundingrect">
            <replace from="%RECT_ARGUMENTS" to="int x, int y, int width, int height"/>
            <replace from="%RECT_CALL_ARGUMENTS" to="x, y, width, height"/>
        </insert-template>
    </inject-code>

    <modify-function signature="boundingRect(QRect,int,QString,int,int*)const">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontmetrics_boundingrect">
            <replace from="%RECT_ARGUMENTS" to="com.trolltech.qt.core.QRect rect"/>
            <replace from="%RECT_CALL_ARGUMENTS" to="rect"/>
        </insert-template>
    </inject-code>

    <modify-function signature="operator=(QFontMetrics)" remove="all"/>

    <modify-function signature="size(int,QString,int,int*)const">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontmetrics_tabarray_function">
            <replace from="%RETURN_TYPE" to="com.trolltech.qt.core.QSize"/>
            <replace from="%FUNCTION_NAME" to="size"/>
            <replace from="%RECT_ARGUMENTS" to=""/>
            <replace from="%RECT_CALL_ARGUMENTS" to=""/>
        </insert-template>
    </inject-code>
  </value-type>

  <value-type name="QGradient" force-abstract="yes" polymorphic-base="yes" polymorphic-id-expression="%1-&gt;type() == QGradient::NoGradient">
    <custom-constructor>
    Q_UNUSED(copy)
    qWarning("Copying empty QGradient object");
    return new QGradient();
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
    <modify-function signature="operator==(const QGradient &amp;)">
        <remove/>
    </modify-function>
  </value-type>

  <value-type name="QLinearGradient" polymorphic-id-expression="%1-&gt;type() == QGradient::LinearGradient">
    <custom-constructor>
    QLinearGradient *lg = new QLinearGradient(copy-&gt;start(), copy-&gt;finalStop());
    lg-&gt;setSpread(copy-&gt;spread());
    lg-&gt;setStops(copy-&gt;stops());
    return (void *) lg;
    </custom-constructor>
    <custom-destructor>
    delete copy;
    </custom-destructor>
  </value-type>

  <interface-type name="QLayoutItem"/>
  <interface-type name="QPaintDevice"/>

  <interface-type name="QGraphicsItem" delete-in-main-thread="yes">
    <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/>
    <modify-function signature="QGraphicsItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null)
                disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="children()const">
      <rename to="childItems"/>
    </modify-function>
    <modify-function signature="paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)">
       <modify-argument index="2">
           <conversion-rule class="shell">
                jobject %out = qtjambi_from_object(__jni_env, %in, "QStyleOptionGraphicsItem", "com/trolltech/qt/gui/", "Lcom_trolltech_qt_gui_QStyleOption_2", true);
           </conversion-rule>
           <conversion-rule class="native">
                const QStyleOptionGraphicsItem *%out = (QStyleOptionGraphicsItem *) qtjambi_to_object(__jni_env, %in);
           </conversion-rule>
           <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionGraphicsItem"/>
       </modify-argument>
    </modify-function>
    <modify-function signature="installSceneEventFilter(QGraphicsItem *)">
        <modify-argument index="1">
            <!-- Safe to ignore because items in a scene are memory managed by the scene -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeSceneEventFilter(QGraphicsItem *)">
        <modify-argument index="1">
            <!-- Safe to ignore because items in a scene are memory managed by the scene -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setGroup(QGraphicsItemGroup*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="beginning">
            com.trolltech.qt.gui.QGraphicsItemGroup oldGroup = group();
        </inject-code>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 == null &amp;&amp; oldGroup != null &amp;&amp; oldGroup.parentItem() == null)
                reenableGarbageCollection();
            else
                disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="setParentItem(QGraphicsItem*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 == null)
                reenableGarbageCollection();
            else
                disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
    <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
    <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
    <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </interface-type>

  <object-type name="QAbstractGraphicsShapeItem" delete-in-main-thread="yes">
    <modify-function signature="QAbstractGraphicsShapeItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QAbstractItemView">
    <modify-function signature="update()" remove="all"/>
    <inject-code>
        private java.util.Hashtable&lt;Integer, QAbstractItemDelegate&gt; __rcDelegatesForColumns = new java.util.Hashtable&lt;Integer, QAbstractItemDelegate&gt;();
        private java.util.Hashtable&lt;Integer, QAbstractItemDelegate&gt; __rcDelegatesForRows = new java.util.Hashtable&lt;Integer, QAbstractItemDelegate&gt;();
    </inject-code>
    <modify-function signature="setIndexWidget(const QModelIndex &amp;,QWidget *)">
        <modify-argument index="2">
            <!-- Safe to ignore because view reparents widget -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemDelegate(QAbstractItemDelegate *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItemDelegate"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItemModel"/>
        </modify-argument>
        <inject-code class="java" position="end">
            // setModel() creates a new selection model for the object
            com.trolltech.qt.QtJambiInternal.setField(this, com.trolltech.qt.gui.QAbstractItemView.class, "__rcItemSelectionModel", null);
        </inject-code>
    </modify-function>
    <modify-function signature="setSelectionModel(QItemSelectionModel *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count action="set" variable-name="__rcItemSelectionModel"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemDelegateForColumn(int,QAbstractItemDelegate*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            <argument-map index="2" meta-name="%2"/>
            if (%2 == null)
                __rcDelegatesForColumns.remove(%1);
            else
                __rcDelegatesForColumns.put(%1,%2);
        </inject-code>
    </modify-function>
    <modify-function signature="setItemDelegateForRow(int,QAbstractItemDelegate*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            <argument-map index="2" meta-name="%2"/>
            if (%2 == null)
                __rcDelegatesForRows.remove(%1);
            else
                __rcDelegatesForRows.put(%1,%2);
        </inject-code>
    </modify-function>


      <modify-function signature="horizontalStepsPerItem()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setHorizontalStepsPerItem(int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setVerticalStepsPerItem(int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="verticalStepsPerItem()const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QAbstractPageSetupDialog"/>
  <object-type name="QAbstractPrintDialog"/>
  <object-type name="QAbstractSlider"/>
  <object-type name="QAbstractTextDocumentLayout">
    <modify-function signature="setPaintDevice(QPaintDevice*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcPaintDevice"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QAccessible">
    <modify-function signature="initialize()" remove="all"/>
    <modify-function signature="cleanup()" remove="all"/>
    <modify-function signature="setRootObject(QObject *)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QAccessibleBridge">
    <modify-function signature="setRootObject(QAccessibleInterface *)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QAccessibleBridgeFactoryInterface"/>
  <object-type name="QAccessibleBridgePlugin"/>
  <object-type name="QAccessibleFactoryInterface"/>
  <object-type name="QAccessible2Interface"/>
  <object-type name="QAccessibleTableInterface">
    <modify-function signature="qAccessibleTableCastHelper()" remove="all"/>

    <inject-code>
        public static class CellAtIndex extends QTableArea
        {
            public CellAtIndex(int row, int column, int rowSpan, int columnSpan, boolean isSelected)
            {
                super(row, column, rowSpan, columnSpan);
                this.isSelected = isSelected;
            }

            public boolean isSelected;
        }
    </inject-code>
    <modify-function signature="cellAtIndex(int,int*,int*,int*,int*,bool*)">
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="native">
                int rowHolder;
                int *%out = &amp;rowHolder;
            </conversion-rule>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
        </modify-argument>
        <modify-argument index="3">
            <remove-argument/>
            <conversion-rule class="native">
                int columnHolder;
                int *%out = &amp;columnHolder;
            </conversion-rule>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
        </modify-argument>
        <modify-argument index="4">
            <remove-argument/>
            <conversion-rule class="native">
                int rowSpanHolder;
                int *%out = &amp;rowSpanHolder;
            </conversion-rule>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
        </modify-argument>
        <modify-argument index="5">
            <remove-argument/>
            <conversion-rule class="native">
                int columnSpanHolder;
                int *%out = &amp;columnSpanHolder;
            </conversion-rule>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
        </modify-argument>
        <modify-argument index="6">
            <remove-argument/>
            <conversion-rule class="native">
                bool isSelectedHolder = false;
                bool *%out = &amp;isSelectedHolder;
            </conversion-rule>
            <conversion-rule class="shell">
                // no conversion
            </conversion-rule>
        </modify-argument>
        <modify-argument index="return">
            <replace-type modified-type="com.trolltech.qt.gui.QAccessibleTableInterface$CellAtIndex"/>
            <conversion-rule class="native">
                jobject %out = qtjambi_to_cellatindex(__jni_env, rowHolder, columnHolder, rowSpanHolder, columnSpanHolder, isSelectedHolder);
            </conversion-rule>
            <conversion-rule class="shell">
                qtjambi_from_cellatindex(__jni_env, %in, %2, %3, %4, %5, %6);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="selectedColumns(int,QList&lt;int&gt;*)">
        <modify-argument index="2">
            <replace-type modified-type="java.util.List&lt;Integer&gt;"/>
            <conversion-rule class="shell">
                StaticCache *sc = StaticCache::instance(__jni_env);
                sc-&gt;resolveArrayList();
                sc-&gt;resolveCollection();
                sc-&gt;resolveInteger();

                jobject columnsHolder = 0;
                if (%in != 0) {
                    columnsHolder = __jni_env-&gt;NewObject(sc-&gt;ArrayList.class_ref, sc-&gt;ArrayList.constructor, %in-&gt;size());
                    qtjambi_exception_check(__jni_env);
                    if (columnsHolder != 0) for (int i=0; i&lt;%in-&gt;size(); i++) {
                        __jni_env-&gt;CallVoidMethod(columnsHolder, sc-&gt;Collection.add, qtjambi_from_int(__jni_env, %in-&gt;at(i)));
                    }
                    qtjambi_exception_check(__jni_env);
                }
                jobject %out = columnsHolder;
            </conversion-rule>
            <conversion-rule class="native">
                StaticCache *sc = StaticCache::instance(__jni_env);
                sc-&gt;resolveCollection();

                QList&lt;int&gt; columnHolder;
                if (%in != 0) {
                    jobjectArray columnsAsArray = (jobjectArray) __jni_env-&gt;CallObjectMethod(%in, sc-&gt;Collection.toArray);
                    if (columnsAsArray != 0) {
                        int len = __jni_env-&gt;GetArrayLength(columnsAsArray);
                        for (int i=0; i&lt;len; ++i) {
                            columnHolder.append(qtjambi_to_int(__jni_env, __jni_env-&gt;GetObjectArrayElement(columnsAsArray, i)));
                        }
                    }
                    qtjambi_exception_check(__jni_env);
                }
                QList&lt;int&gt; *%out = &amp;columnHolder;
            </conversion-rule>
        </modify-argument>
        <modify-argument index="return">
            <conversion-rule class="shell">
                // Copy back
                if (columnsHolder != 0) {
                    jobjectArray columnsAsArray = (jobjectArray) __jni_env-&gt;CallObjectMethod(columnsHolder, sc-&gt;Collection.toArray);
                    if (columnsAsArray != 0) {
                        int len = __jni_env-&gt;GetArrayLength(columnsAsArray);
                        %2-&gt;clear();
                        for (int i=0; i&lt;len; ++i) {
                            %2-&gt;append(qtjambi_to_int(__jni_env, __jni_env-&gt;GetObjectArrayElement(columnsAsArray, i)));
                        }
                    }
                }

                int %out = %in;
            </conversion-rule>
            <conversion-rule class="native">
                // Copy back
                if (%2 != 0) {
                    __jni_env-&gt;CallVoidMethod(%2, sc-&gt;Collection.clear);
                    for (int i=0; i&lt;columnHolder.size(); ++i) {
                        __jni_env-&gt;CallVoidMethod(%2, sc-&gt;Collection.add, qtjambi_from_int(__jni_env, columnHolder.at(i)));
                    }
                    qtjambi_exception_check(__jni_env);
                }

                jint %out = %in;
            </conversion-rule>
        </modify-argument>
    </modify-function>
    <modify-function signature="selectedRows(int,QList&lt;int&gt;*)">
        <modify-argument index="2">
            <replace-type modified-type="java.util.List&lt;Integer&gt;"/>
            <conversion-rule class="shell">
                StaticCache *sc = StaticCache::instance(__jni_env);
                sc-&gt;resolveArrayList();
                sc-&gt;resolveCollection();
                sc-&gt;resolveInteger();

                jobject rowsHolder = 0;
                if (%in != 0) {
                    rowsHolder = __jni_env-&gt;NewObject(sc-&gt;ArrayList.class_ref, sc-&gt;ArrayList.constructor, %in-&gt;size());
                    qtjambi_exception_check(__jni_env);
                    if (rowsHolder != 0) for (int i=0; i&lt;%in-&gt;size(); i++) {
                        __jni_env-&gt;CallVoidMethod(rowsHolder, sc-&gt;Collection.add, qtjambi_from_int(__jni_env, %in-&gt;at(i)));
                    }
                    qtjambi_exception_check(__jni_env);
                }
                jobject %out = rowsHolder;
            </conversion-rule>
            <conversion-rule class="native">
                StaticCache *sc = StaticCache::instance(__jni_env);
                sc-&gt;resolveCollection();

                QList&lt;int&gt; rowsHolder;
                if (%in != 0) {
                    jobjectArray rowsAsArray = (jobjectArray) __jni_env-&gt;CallObjectMethod(%in, sc-&gt;Collection.toArray);
                    if (rowsAsArray != 0) {
                        int len = __jni_env-&gt;GetArrayLength(rowsAsArray);
                        for (int i=0; i&lt;len; ++i) {
                            rowsHolder.append(qtjambi_to_int(__jni_env, __jni_env-&gt;GetObjectArrayElement(rowsAsArray, i)));
                        }
                    }
                    qtjambi_exception_check(__jni_env);
                }
                QList&lt;int&gt; *%out = &amp;rowsHolder;
            </conversion-rule>
        </modify-argument>
        <modify-argument index="return">
            <conversion-rule class="shell">
                // Copy back
                if (rowsHolder != 0) {
                    jobjectArray rowsAsArray = (jobjectArray) __jni_env-&gt;CallObjectMethod(rowsHolder, sc-&gt;Collection.toArray);
                    if (rowsAsArray != 0) {
                        int len = __jni_env-&gt;GetArrayLength(rowsAsArray);
                        %2-&gt;clear();
                        for (int i=0; i&lt;len; ++i) {
                            %2-&gt;append(qtjambi_to_int(__jni_env, __jni_env-&gt;GetObjectArrayElement(rowsAsArray, i)));
                        }
                    }
                }

                int %out = %in;
            </conversion-rule>
            <conversion-rule class="native">
                // Copy back
                if (%2 != 0) {
                    __jni_env-&gt;CallVoidMethod(%2, sc-&gt;Collection.clear);
                    for (int i=0; i&lt;rowsHolder.size(); ++i) {
                        __jni_env-&gt;CallVoidMethod(%2, sc-&gt;Collection.add, qtjambi_from_int(__jni_env, rowsHolder.at(i)));
                    }
                    qtjambi_exception_check(__jni_env);
                }

                jint %out = %in;
            </conversion-rule>
        </modify-argument>
    </modify-function>


  </object-type>

  <object-type name="QAccessibleInterface">
    <inject-code>
        public static class Target {
            public Target(int childIndex, QAccessibleInterface target) {
                this.childIndex = childIndex;
                this.target = target;
            }

            public QAccessibleInterface target;
            public int childIndex;
        }
    </inject-code>

    <template name="gui.accessible_interface_to_target">
        jclass __target_class = resolveClass(__jni_env, "QAccessibleInterface$Target", "com/trolltech/qt/gui/");
        QTJAMBI_EXCEPTION_CHECK(__jni_env);
        Q_ASSERT(__target_class);

        jmethodID __target_constructor = resolveMethod(__jni_env, "&lt;init&gt;", "(ILcom/trolltech/qt/gui/QAccessibleInterface;)V", "QAccessibleInterface$Target", "com/trolltech/qt/gui/");
        QTJAMBI_EXCEPTION_CHECK(__jni_env);
        Q_ASSERT(__target_constructor);

        jobject __java_interface = %TARGET != 0 ? qtjambi_from_object(__jni_env, %TARGET, "QAccessibleInterface$ConcreteWrapper", "com/trolltech/qt/gui/", true) : 0;

        jobject %OUTPUT = __jni_env-&gt;NewObject(__target_class, __target_constructor, %CHILD_INDEX, __java_interface);
    </template>

    <modify-function signature="navigate(QAccessible::RelationFlag,int,QAccessibleInterface**)const">
        <modify-argument index="3">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
            <conversion-rule class="native">
                QAccessibleInterface *__qt_interface = 0;
                QAccessibleInterface **%out = &amp;__qt_interface;
            </conversion-rule>
        </modify-argument>

        <modify-argument index="0">
            <replace-type modified-type="com.trolltech.qt.gui.QAccessibleInterface$Target"/>
            <conversion-rule class="native">
                <insert-template name="gui.accessible_interface_to_target">
                    <replace from="%TARGET" to="__qt_interface"/>
                    <replace from="%CHILD_INDEX" to="%in"/>
                    <replace from="%OUTPUT" to="%out"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="shell">
                jfieldID __childIndex_id = resolveField(__jni_env, "childIndex", "I", "QAccessibleInterface$Target", "com/trolltech/qt/gui/");
                Q_ASSERT(__childIndex_id);

                jfieldID __target_id = resolveField(__jni_env, "target", "Lcom/trolltech/qt/gui/QAccessibleInterface;", "QAccessibleInterface$Target", "com/trolltech/qt/gui/");
                Q_ASSERT(__target_id);

                jint %out = __jni_env-&gt;GetIntField(%in, __childIndex_id);

                jobject __java_interface = __jni_env-&gt;GetObjectField(%in, __target_id);
                QtJambiLink *__qt_link = __java_interface != 0 ? QtJambiLink::findLink(__jni_env, __java_interface) : 0;
                if (__qt_link != 0) __qt_link-&gt;disableGarbageCollection(__jni_env, __java_interface);
                QAccessibleInterface *__qt_interface = __qt_link != 0 ? (QAccessibleInterface *) __qt_link-&gt;pointer() : 0;

                if (%3 != 0) *%3 = __qt_interface;
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QAccessibleInterfaceEx"/>
  <object-type name="QAccessibleObject"/>
  <object-type name="QAccessibleObjectEx"/>
  <object-type name="QAccessiblePlugin"/>
  <object-type name="QAccessibleWidget"/>
  <object-type name="QAccessibleWidgetEx"/>
  <object-type name="QActionGroup">
    <modify-function signature="addAction(QAction*)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcActions"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            com.trolltech.qt.QtJambiInternal.setField(%1, QAction.class, "__rcActionGroup", this);
        </inject-code>
    </modify-function>
    <modify-function signature="removeAction(QAction*)">
        <modify-argument index="1">
            <reference-count action="remove" variable-name="__rcActions"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            com.trolltech.qt.QtJambiInternal.setField(%1, QAction.class, "__rcActionGroup", null);
        </inject-code>
    </modify-function>
  </object-type>
  <object-type name="QCDEStyle">
      <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>
  </object-type>
  <object-type name="QCheckBox">
    <modify-function signature="initStyleOption(QStyleOptionButton*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionButton"/>
        </insert-template>
    </inject-code>
  </object-type>
  <object-type name="QCleanlooksStyle">
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap,const QStyleOption*,const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QCommonStyle">
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*,const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QDataWidgetMapper">
    <modify-function signature="addMapping(QWidget*,int)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcMappings"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addMapping(QWidget*,int,QByteArray)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcMappings"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeMapping(QWidget*)">
        <modify-argument index="1">
            <reference-count action="remove" variable-name="__rcMappings"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItemDelegate"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcModel"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QDateEdit"/>
  <object-type name="QDesktopServices">
    <modify-function signature="setUrlHandler(QString,QObject*,const char*)">
        <remove/>
    </modify-function>
  </object-type>
  <object-type name="QDialog">
    <modify-function signature="setExtension(QWidget*)" remove="all"/>
    <modify-function signature="exec()" access="non-final"/>

      <modify-function signature="extension()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="orientation()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setOrientation(Qt::Orientation)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="showExtension(bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QDialogButtonBox">
    <modify-function signature="addButton(QAbstractButton*,QDialogButtonBox::ButtonRole)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeButton(QAbstractButton*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QDirModel">
     <modify-function signature="parent()const" remove="all"/>
    <modify-function signature="setIconProvider(QFileIconProvider*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcIconProvider"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QDoubleValidator"/>
  <object-type name="QFileIconProvider" delete-in-main-thread="yes"/>
  <object-type name="QWizard">
    <!-- ### Requires correct class name in meta object -->
    <modify-function signature="setDefaultProperty(const char *, const char *, const char *)" remove="all"/>
    <modify-function signature="addPage(QWizardPage*)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setButton(QWizard::WizardButton,QAbstractButton*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setPage(int,QWizardPage*)">
        <modify-argument index="2">
            <no-null-pointer/>
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>
  <object-type name="QWizardPage">
    <!-- ### Reduced functionality due to meta object having missing information -->
    <modify-function signature="registerField(const QString &amp;, QWidget *, const char *, const char *)">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
       /**
        * Creates a field called &lt;code&gt;name&lt;/code&gt; associated with the given property of the given widget. From then on, that property becomes accessible using &lt;code&gt;field()&lt;/code&gt;
        * and &lt;code&gt;setField()&lt;/code&gt;. Fields are global to the entire wizard and make it easy for any single page to access information stored by another page, without
        * having to put all the logic in &lt;code&gt;QWizard&lt;/code&gt; or having the pages know explicitly about each other.
        * If name ends with an asterisk (*), the field is a mandatory field. When a page has mandatory fields, the Next and/or Finish buttons are enabled
        * only when all mandatory fields are filled. It is required that the widget is of a subclass of one of the following Qt Jambi types:
        * &lt;code&gt;QAbstractButton&lt;/code&gt; (for which the relevant property is the &lt;code&gt;checked&lt;/code&gt; property), &lt;code&gt;QAbstractSlider&lt;/code&gt; (the &lt;code&gt;value&lt;/code&gt; property),
        * &lt;code&gt;QComboBox&lt;/code&gt; (&lt;code&gt;currentIndex&lt;/code&gt; property),
        * &lt;code&gt;QDateTimeEdit&lt;/code&gt;(&lt;code&gt;dateTime&lt;/code&gt; property), &lt;code&gt;QLineEdit&lt;/code&gt;(&lt;code&gt;text&lt;/code&gt; property), &lt;code&gt;QListWidget&lt;/code&gt;(&lt;code&gt;currentRow&lt;/code&gt; property),
        * or &lt;code&gt;QSpinBox&lt;/code&gt;(&lt;code&gt;value&lt;/code&gt; property).
        *
        * @param name The name which will be used to access the field. Names ending with an asterisk signify mandatory fields.
        * @param widget The widget whose property will be accessed using this field.
        *
        * @see com.trolltech.qt.gui.QWizardPage#field
        * @see com.trolltech.qt.gui.QWizardPage#setField
        */
        protected final void registerField(String name, QWidget widget) {
            registerField(name, widget, null, null);
        }
    </inject-code>
  </object-type>
  <object-type name="QFocusFrame">
    <modify-function signature="initStyleOption(QStyleOption*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="setWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcWidget"/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOption"/>
        </insert-template>
    </inject-code>
  </object-type>
  <object-type name="QFontComboBox"/>

  <object-type name="QFontDialog">
    <inject-code>
        public static final class Result {
            public Result(QFont font, boolean ok) {
                this.font = font;
                this.ok = ok;
            }
            public QFont font;
            public boolean ok;
        }
    </inject-code>
    <template name="gui.fontdialog_get_font_general">
        public static Result getFont(%FONT_ARGUMENT %COMMA QWidget parent %STRING_ARGUMENT) {
            QNativePointer np = new QNativePointer(QNativePointer.Type.Boolean);
            QFont returned = getFont(np, %FONT_CALL_ARGUMENT %COMMA parent %STRING_CALL_ARGUMENT);
            return new Result(returned, np.booleanValue());
        }
    </template>

    <template name="gui.fontdialog_get_font_nocaption">
        <insert-template name="gui.fontdialog_get_font_general">
            <replace from="%STRING_ARGUMENT" to=""/>
            <replace from="%STRING_CALL_ARGUMENT" to=""/>
        </insert-template>

        public static Result getFont(%FONT_ARGUMENT) {
            return getFont(%FONT_CALL_ARGUMENT %COMMA (QWidget) null);
        }
    </template>

    <modify-function signature="getFont(bool*,QFont,QWidget*,QString)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontdialog_get_font_general">
            <replace from="%FONT_ARGUMENT %COMMA" to="QFont initial,"/>
            <replace from="%STRING_ARGUMENT" to=", String caption"/>
            <replace from="%FONT_CALL_ARGUMENT %COMMA" to="initial,"/>
            <replace from="%STRING_CALL_ARGUMENT" to=", caption"/>
        </insert-template>
    </inject-code>

    <modify-function signature="getFont(bool*,QWidget*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontdialog_get_font_nocaption">
            <replace from="%FONT_ARGUMENT" to=""/>
            <replace from="%COMMA" to=""/>
            <replace from="%FONT_CALL_ARGUMENT" to=""/>
        </insert-template>
    </inject-code>

    <modify-function signature="getFont(bool*,QFont,QWidget*)">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.fontdialog_get_font_nocaption">
            <replace from="%FONT_ARGUMENT" to="QFont initial"/>
            <replace from="%COMMA" to=", "/>
            <replace from="%FONT_CALL_ARGUMENT" to="initial"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QGraphicsEllipseItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsEllipseItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsEllipseItem(const QRectF &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsEllipseItem(double,double,double,double,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="5" meta-name="%5"/>
            if (%5 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>

  </object-type>
  <object-type name="QGraphicsItemAnimation">
    <modify-function signature="setItem(QGraphicsItem*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItem"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setTimeLine(QTimeLine*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcTimeLine"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QGraphicsItemGroup" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsItemGroup(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="addToGroup(QGraphicsItem*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeFromGroup(QGraphicsItem*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (parentItem() == null)
                %1.reenableGarbageCollection();
        </inject-code>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QGraphicsLineItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsLineItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsLineItem(const QLineF &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsLineItem(double,double,double,double,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="5" meta-name="%5"/>
            if (%5 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QGraphicsPathItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsPathItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsPathItem(const QPainterPath &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
  </object-type>

  <object-type name="QGraphicsPixmapItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsPixmapItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsPixmapItem(const QPixmap &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QGraphicsPolygonItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsPolygonItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsPolygonItem(const QPolygonF &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
  </object-type>

  <object-type name="QGraphicsRectItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsRectItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsRectItem(double,double,double,double,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="5" meta-name="%5"/>
            if (%5 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsRectItem(const QRectF &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
  </object-type>

  <object-type name="QGraphicsSimpleTextItem" delete-in-main-thread="yes">
    <modify-function signature="QGraphicsSimpleTextItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsSimpleTextItem(const QString &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
  </object-type>
  <object-type name="QHBoxLayout"/>
  <object-type name="QHeaderView">
    <modify-function signature="initStyleOption(QStyleOptionHeader*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionHeader"/>
        </insert-template>
    </inject-code>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcModel"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QIconEngine"/>
  <object-type name="QIconEngineV2">
    <modify-function signature="virtual_hook(int,void*)" remove="all"/>
    <modify-function signature="clone()const">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QImageIOHandlerFactoryInterface"/>
  <object-type name="QImageIOPlugin"/>
  <object-type name="QImageWriter">
  <modify-function signature="setDevice(QIODevice*)">
    <modify-argument index="1">
        <reference-count action="set" variable-name="__rcDevice"/>
    </modify-argument>
  </modify-function>


      <modify-function signature="description()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setDescription(QString)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QInputContextFactory"/>
  <object-type name="QInputContextFactoryInterface"/>
  <object-type name="QInputContextPlugin"/>
  <object-type name="QIntValidator"/>
  <object-type name="QItemDelegate">
    <modify-function signature="doLayout(QStyleOptionViewItem,QRect*,QRect*,QRect*,bool)const">
        <remove/>
    </modify-function>

    <modify-function signature="selected(QPixmap,QPalette,bool)const">
        <remove/>
    </modify-function>
    <modify-function signature="setItemEditorFactory(QItemEditorFactory*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItemEditorFactory"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setEditorData(QWidget*,QModelIndex)const">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModelData(QWidget*,QAbstractItemModel*,QModelIndex)const">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>
  <object-type name="QItemEditorCreatorBase"/>
  <object-type name="QItemEditorFactory">
    <modify-function signature="setDefaultFactory(QItemEditorFactory*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QItemSelectionModel"/>
  <object-type name="QTreeModel"/>
  <object-type name="QListView"/>
  <object-type name="QColumnView">
    <modify-function signature="setPreviewWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemModel"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setSelectionModel(QItemSelectionModel*)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemSelectionModel"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QMainWindow">
    <modify-function signature="addDockWidget(Qt::DockWidgetArea,QDockWidget*,Qt::Orientation)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addDockWidget(Qt::DockWidgetArea,QDockWidget*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addToolBar(QToolBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addToolBar(Qt::ToolBarArea,QToolBar*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertToolBar(QToolBar*,QToolBar*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertToolBarBreak(QToolBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeDockWidget(QDockWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeToolBar(QToolBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeToolBarBreak(QToolBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCentralWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setMenuBar(QMenuBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setMenuWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStatusBar(QStatusBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>
  <object-type name="QMdiArea">
    <modify-function signature="addSubWindow(QWidget*,QFlags&lt;Qt::WindowType&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="removeSubWindow(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setActiveSubWindow(QMdiSubWindow*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setupViewport(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>
  <object-type name="QMdiSubWindow">
    <modify-function signature="setSystemMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QMenu">
    <modify-function signature="addAction(QAction *)" remove="all"/>
    <modify-function signature="addMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcMenus"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertMenu(QAction*,QMenu*)">
        <modify-argument index="2">
            <reference-count action="add" variable-name="__rcMenus"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertSeparator(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActiveAction(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setDefaultAction(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setNoReplayFor(QWidget*)">
        <remove/>
    </modify-function>
    <modify-function signature="initStyleOption(QStyleOptionMenuItem*,const QAction*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        protected final void initStyleOption(com.trolltech.qt.gui.QStyleOptionMenuItem option, QAction action) {
            initStyleOption(option.nativePointer(), action);
        }
    </inject-code>

    <template name="gui.addAction">
        public final QAction addAction(%EXTRA String text, Object receiver, String method %END_EXTRA) {
            QAction returned = addAction(%CALL_EXTRA text %END_CALL_EXTRA);
            %POST_CALL
            returned.triggered.connect(receiver, method);

            return returned;
        }

        public final QAction addAction(%EXTRA String text, com.trolltech.qt.core.QObject.AbstractSignal signal %END_EXTRA) {
            QAction returned = addAction(%CALL_EXTRA text %END_CALL_EXTRA);
            %POST_CALL
            returned.triggered.connect(signal);
            return returned;
        }
    </template>

    <template name="gui.addAction_with_shortcut">
        <insert-template name="gui.addAction">
            <replace from="%POST_CALL" to="returned.setShortcut(shortcut);"/>
            <replace from=" %END_EXTRA" to=", QKeySequence shortcut"/>
            <replace from=" %END_CALL_EXTRA" to=""/>
        </insert-template>

        public final QAction addAction(%EXTRA String text, Object receiver, String method) {
            return addAction(%CALL_EXTRA text, receiver, method, new QKeySequence(0));
        }

        public final QAction addAction(%EXTRA String text, com.trolltech.qt.core.QObject.AbstractSignal signal) {
            return addAction(%CALL_EXTRA text, signal, new QKeySequence(0));
        }
    </template>

    <modify-function signature="addAction(QString,const QObject*,const char*,QKeySequence)">
        <remove/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.addAction_with_shortcut">
            <replace from="%EXTRA " to=""/>
            <replace from="%CALL_EXTRA " to=""/>
        </insert-template>
    </inject-code>

    <modify-function signature="addAction(QIcon,QString,const QObject*,const char*,QKeySequence)">
        <remove/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.addAction_with_shortcut">
            <replace from="%EXTRA" to="QIcon icon,"/>
            <replace from="%CALL_EXTRA" to="icon,"/>
        </insert-template>
    </inject-code>

  </object-type>

  <object-type name="QMenuBar">
    <modify-function signature="addAction(QAction *)" remove="all"/>
    <modify-function signature="addAction(QString,const QObject*,const char*)">
        <remove/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.addAction">
            <replace from="%POST_CALL" to=""/>
            <replace from=" %END_EXTRA" to=""/>
            <replace from=" %END_CALL_EXTRA" to=""/>
            <replace from="%EXTRA " to=""/>
            <replace from="%CALL_EXTRA " to=""/>
        </insert-template>
    </inject-code>

    <modify-function signature="initStyleOption(QStyleOptionMenuItem*,const QAction*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        protected final void initStyleOption(com.trolltech.qt.gui.QStyleOptionMenuItem option, QAction action) {
            initStyleOption(option.nativePointer(), action);
        }
    </inject-code>

    <modify-function signature="addMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcMenus"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertMenu(QAction*,QMenu*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="add" variable-name="__rcMenus"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertSeparator(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActiveAction(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCornerWidget(QWidget*,Qt::Corner)    ">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QMotifStyle">
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QPainterPathStroker"/>
  <object-type name="QPictureFormatInterface"/>
  <object-type name="QPictureFormatPlugin"/>

  <object-type name="QPictureIO">
    <extra-includes>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <modify-function signature="QPictureIO(QIODevice*,const char*)">
        <access modifier="private"/>
         <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDevice"/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public QPictureIO(com.trolltech.qt.core.QIODevice ioDevice, String format) {
            this(ioDevice, QNativePointer.createCharPointer(format));
        }
    </inject-code>
    <modify-function signature="setIODevice(QIODevice*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDevice"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="QPictureIO(QString,const char*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public QPictureIO(String fileName, String format) {
            this(fileName, QNativePointer.createCharPointer(format));
        }
    </inject-code>

    <modify-function signature="format()const">
        <access modifier="private"/>
        <rename to="format_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="core.return_string_instead_of_char*">
            <replace from="%FUNCTION_NAME" to="format"/>
        </insert-template>
    </inject-code>

    <modify-function signature="parameters()const">
        <access modifier="private"/>
        <rename to="parameters_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="core.return_string_instead_of_char*">
            <replace from="%FUNCTION_NAME" to="parameters"/>
        </insert-template>
    </inject-code>

    <modify-function signature="setFormat(const char*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="core.call_with_string_instead_of_char*">
            <replace from="%FUNCTION_NAME" to="setFormat"/>
            <replace from="%ARG_NAME" to="format"/>
        </insert-template>
    </inject-code>

    <modify-function signature="setParameters(const char*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="core.call_with_string_instead_of_char*">
            <replace from="%FUNCTION_NAME" to="setParameters"/>
            <replace from="%ARG_NAME" to="parameters"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QPixmapCache">
    <modify-function signature="find(QString)">
        <remove/>
    </modify-function>

    <modify-function signature="find(QString,QPixmap&amp;)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public static boolean find(String key, QPixmap pm) {
            return find(key, pm.nativePointer());
        }
    </inject-code>

  </object-type>
  <object-type name="QPlastiqueStyle">
    <modify-function signature="layoutSpacingImplementation(QSizePolicy::ControlType,QSizePolicy::ControlType,Qt::Orientation,const QStyleOption*,const QWidget*)const" remove="all"/>
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QPrintDialog"/>
  <object-type name="QPrintEngine"/>
  <object-type name="QProgressBar">
    <modify-function signature="initStyleOption(QStyleOptionProgressBar*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionProgressBar"/>
        </insert-template>
    </inject-code>
  </object-type>
  <object-type name="QPushButton">
    <modify-function signature="initStyleOption(QStyleOptionButton*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionButton"/>
        </insert-template>
    </inject-code>
    <modify-function signature="setMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcMenu"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QReadWriteLock"/>
  <object-type name="QRegExpValidator"/>
  <object-type name="QScrollArea">
    <modify-function signature="setWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QSessionManager"/>
  <object-type name="QShortcut">
    <modify-function signature="QShortcut(QKeySequence,QWidget*,const char*,const char*,Qt::ShortcutContext)">
        <access modifier="private"/>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public QShortcut(QKeySequence key, QWidget parent) {
            this(key, parent, null, null, com.trolltech.qt.core.Qt.ShortcutContext.WindowShortcut);
        }

        public QShortcut(QKeySequence key, QWidget parent, com.trolltech.qt.core.Qt.ShortcutContext context) {
            this(key, parent, null, null, context);
        }
    </inject-code>

  </object-type>
  <object-type name="QSizeGrip"/>
  <object-type name="QSound"/>
  <object-type name="QSpacerItem"/>
  <object-type name="QStandardItem" delete-in-main-thread="yes">
    <modify-function signature="operator=(QStandardItem)" remove="all"/>
    <modify-function signature="appendColumn(const QList&lt;QStandardItem *&gt; &amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="appendRow(const QList&lt;QStandardItem *&gt; &amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="appendRow(QStandardItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertColumn(int, const QList&lt;QStandardItem *&gt; &amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertRow(int, const QList&lt;QStandardItem *&gt; &amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertRow(int, QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setChild(int,int,QStandardItem *)">
        <modify-argument index="3">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setChild(int,QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeChild(int,int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeColumn(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeRow(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="clone()const">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QStatusBar">
    <modify-function signature="addPermanentWidget(QWidget *, int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addWidget(QWidget *, int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeWidget(QWidget *)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertPermanentWidget(int, QWidget *, int)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(int, QWidget *, int)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QStringListModel"/>
  <object-type name="QStyleFactory"/>
  <object-type name="QStyleFactoryInterface"/>
  <object-type name="QStyleHintReturn"/>
  <object-type name="QStyleHintReturnVariant"/>
  <object-type name="QStyleHintReturnMask"/>
  <object-type name="QStylePainter"/>
  <object-type name="QStylePlugin"/>
  <object-type name="QSyntaxHighlighter">
    <modify-function signature="setCurrentBlockUserData(QTextBlockUserData*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setDocument(QTextDocument*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDocument"/>
        </modify-argument>
    </modify-function>

  </object-type>
  <object-type name="QSystemTrayIcon">
    <modify-function signature="setContextMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcContextMenu"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QTableView">
    <modify-function signature="setHorizontalHeader(QHeaderView*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setVerticalHeader(QHeaderView*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemModel"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setSelectionModel(QItemSelectionModel*)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemSelectionModel"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="sortByColumn(int)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QTextBlockGroup"  delete-in-main-thread="yes"/>
  <object-type name="QTextBlockUserData"  delete-in-main-thread="yes"/>
  <object-type name="QTextItem"  delete-in-main-thread="yes"/>
  <object-type name="QTextList"  delete-in-main-thread="yes">
    <modify-function signature="format()const" rename="textListFormat"/>

      <modify-function signature="isEmpty()const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QTextObject"  delete-in-main-thread="yes"/>
  <object-type name="QTextObjectInterface"  delete-in-main-thread="yes"/>
  <object-type name="QTimeEdit"/>
  <object-type name="QToolBox">
    <modify-function signature="addItem(QWidget*,QString)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addItem(QWidget*,QIcon,QString)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertItem(int,QWidget*,QIcon,QString)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertItem(int,QWidget*,QString)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentWidget(QWidget*)  ">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QToolButton">
    <modify-function signature="initStyleOption(QStyleOptionToolButton*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionToolButton"/>
        </insert-template>
    </inject-code>
    <modify-function signature="setDefaultAction(QAction *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDefaultAction"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setMenu(QMenu *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcMenu"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QToolTip"/>
  <object-type name="QTreeView">
    <modify-function signature="setHeader(QHeaderView*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
   </modify-function>
   <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemModel"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setSelectionModel(QItemSelectionModel*)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count declare-variable="QAbstractItemView" action="set" variable-name="__rcItemSelectionModel"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="sortByColumn(int)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QUndoCommand"/>
  <object-type name="QUndoGroup">
    <modify-function signature="addStack(QUndoStack*)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcStacks"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeStack(QUndoStack*)">
        <modify-argument index="1">
            <reference-count action="remove" variable-name="__rcStacks"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActiveStack(QUndoStack*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QUndoStack">
    <modify-function signature="push(QUndoCommand *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QUndoView">
    <modify-function signature="setGroup(QUndoGroup *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcGroupOrStack"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStack(QUndoStack *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcGroupOrStack"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QUndoView(QUndoGroup *,QWidget *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcGroupOrStack"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QUndoView(QUndoStack *,QWidget *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcGroupOrStack"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QVBoxLayout"/>
  <object-type name="QValidator">
    <inject-code>
        public static class QValidationData {
            public QValidationData(String input, int pos) {
                string = input;
                position = pos;
            }
            public String string;
            public int position;
        }
    </inject-code>

    <modify-function signature="fixup(QString&amp;)const">
        <modify-argument index="1">
            <replace-type modified-type="java.lang.String"/>
            <conversion-rule class="shell">
                jobject %out = (jobject) qtjambi_from_qstring(__jni_env, %in);
            </conversion-rule>
            <conversion-rule class="native">
                QString %out = qtjambi_to_qstring(__jni_env, (jstring) %in);
                QString *__qt_converted = &amp;%out;
            </conversion-rule>
        </modify-argument>

        <modify-argument index="0">
            <replace-type modified-type="java.lang.String"/>
            <conversion-rule class="native">
                jobject %out = (jobject) qtjambi_from_qstring(__jni_env, *__qt_converted);
            </conversion-rule>
            <conversion-rule class="shell">
                %1 = qtjambi_to_qstring(__jni_env, (jstring) %in);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="validate(QString&amp;,int&amp;)const">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QValidator$QValidationData"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_validationdata_to_java">
                    <replace from="%STRING" to="%1"/>
                    <replace from="%POS" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_validationdata_to_string"/>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing needed
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_validationdata_to_pos">
                    <replace from="%VALIDATIONDATA" to="%1"/>
                </insert-template>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="return">
            <conversion-rule class="native">
                <insert-template name="gui.cleanup_validationdata_from_java"/>
                jint %out = %in;
            </conversion-rule>
            <conversion-rule class="shell">
                <insert-template name="gui.cleanup_validationdata_to_java">
                    <replace from="%STRING" to="%1"/>
                    <replace from="%POS" to="%2"/>
                </insert-template>
                QValidator::State %out = (QValidator::State) qtjambi_to_enumerator(__jni_env, %in);
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QWhatsThis"/>
  <object-type name="QWidgetAction">
    <modify-function signature="createWidget(QWidget*)">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setDefaultWidget(QWidget*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QWidgetItem"/>
  <object-type name="QWindowsStyle">
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>
  <object-type name="QWorkspace">
    <modify-function signature="addWindow(QWidget*,QFlags&lt;Qt::WindowType&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActiveWindow(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QActionEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::ActionAdded || %1-&gt;type() == QEvent::ActionRemoved || %1-&gt;type() == QEvent::ActionChanged"/>
  <object-type name="QClipboardEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Clipboard"/>
  <object-type name="QCloseEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Close"/>
  <object-type name="QContextMenuEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::ContextMenu"/>
  <object-type name="QDragEnterEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DragEnter"/>
  <object-type name="QDragLeaveEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DragLeave"/>
  <object-type name="QDragMoveEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DragMove">
    <modify-function signature="accept()" remove="all"/>
    <modify-function signature="ignore()" remove="all"/>
  </object-type>
  <object-type name="QDropEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Drop">
    <modify-function signature="encodedData(const char*)const">
        <remove/>
    </modify-function>

    <modify-function signature="format(int)const">
        <remove/>
    </modify-function>

    <modify-function signature="provides(const char*)const">
        <remove/>
    </modify-function>


  </object-type>
  <object-type name="QFileOpenEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::FileOpen"/>
  <object-type name="QFocusEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::FocusIn || %1-&gt;type() == QEvent::FocusOut">
        <modify-function signature="reason()const">
            <remove/>
        </modify-function>
  </object-type>

  <object-type name="QGraphicsSceneContextMenuEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneContextMenu"/>
  <object-type name="QGraphicsSceneDragDropEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneDragEnter || %1-&gt;type() == QEvent::GraphicsSceneDragLeave || %1-&gt;type() == QEvent::GraphicsSceneDragMove || %1-&gt;type() == QEvent::GraphicsSceneDrop">
    <modify-function signature="setMimeData(const QMimeData *)">
        <remove/>
    </modify-function>
    <modify-function signature="setSource(QWidget *)">
        <remove/>
    </modify-function>
  </object-type>
  <object-type name="QGraphicsSceneEvent">
    <modify-function signature="setWidget(QWidget *)">
        <remove/>
    </modify-function>
  </object-type>
  <object-type name="QGraphicsSceneHelpEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneHelp"/>
  <object-type name="QGraphicsSceneHoverEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneHoverEnter || %1-&gt;type() == QEvent::GraphicsSceneHoverLeave || %1-&gt;type() == QEvent::GraphicsSceneHoverMove"/>
  <object-type name="QGraphicsSceneMouseEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneMouseDoubleClick || %1-&gt;type() == QEvent::GraphicsSceneMouseMove || %1-&gt;type() == QEvent::GraphicsSceneMousePress || %1-&gt;type() == QEvent::GraphicsSceneMouseRelease"/>
  <object-type name="QGraphicsSceneWheelEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::GraphicsSceneWheel"/>
  <object-type name="QHelpEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::ToolTip || %1-&gt;type() == QEvent::WhatsThis"/>
  <object-type name="QHideEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Hide"/>
  <object-type name="QHoverEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::HoverEnter || %1-&gt;type() == QEvent::HoverLeave || %1-&gt;type() == QEvent::HoverMove"/>
  <object-type name="QIconDragEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::IconDrag"/>
  <object-type name="QInputMethodEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::InputMethod"/>
  <object-type name="QMoveEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Move"/>
  <object-type name="QResizeEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Resize"/>
  <object-type name="QShortcutEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Shortcut">
        <!-- All these have const overloads that are used instead -->
        <modify-function signature="isAmbiguous()">
            <remove/>
        </modify-function>
        <modify-function signature="shortcutId()">
            <remove/>
        </modify-function>
        <modify-function signature="key()">
            <remove/>
        </modify-function>
  </object-type>
  <object-type name="QShowEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Show"/>
  <object-type name="QStatusTipEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::StatusTip"/>
  <object-type name="QTabletEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::TabletMove || %1-&gt;type() == QEvent::TabletPress || %1-&gt;type() == QEvent::TabletRelease"/>
  <object-type name="QToolBarChangeEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::ToolBarChange"/>
  <object-type name="QWhatsThisClickedEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::WhatsThisClicked"/>
  <object-type name="QWheelEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Wheel"/>
  <object-type name="QWindowStateChangeEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::WindowStateChange"/>
  <object-type name="QDragResponseEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::DragResponse"/>
  <object-type name="QInputEvent">
    <modify-function signature="modifiers()const" access="non-final"/>
  </object-type>
  <object-type name="QKeyEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::KeyPress || %1-&gt;type() == QEvent::KeyRelease"/>
  <object-type name="QMouseEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::MouseButtonDblClick || %1-&gt;type() == QEvent::MouseButtonPress || %1-&gt;type() == QEvent::MouseButtonRelease || %1-&gt;type() == QEvent::MouseMove"/>
  <object-type name="QPaintEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::Paint"/>
  <object-type name="QAccessibleEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::AccessibilityDescription || %1-&gt;type() == QEvent::AccessibilityHelp"/>

  <object-type name="QAbstractButton">
    <inject-code class="java">
        /**
         * Sets the shortcut to the key sequence for the given key string. For example "Ctrl+O" gives CTRL+'O'.
         * The strings "Ctrl", "Shift", "Alt" and "Meta" are recognized, as well as their translated equivalents in the
         * "QShortcut" context (using QObject::tr()). Up to four key codes may be entered by separating them with commas,
         * e.g. "Alt+X,Ctrl+S,Q".
         * @param key The description of the key sequence. Typically used with tr() so key sequences can be locale aware.
         */
        public void setShortcut(String key) { setShortcut(new QKeySequence(key)); }

        /**
         * Sets the shortcut to the key sequence for the given key. The result will depend on the currently running platform.
         * The key sequence will be based on the first element in the list of key bindings for the key.
         * @param key The key for which to select a key sequence
         */
        public void setShortcut(QKeySequence.StandardKey key) { setShortcut(new QKeySequence(key)); }
    </inject-code>
  </object-type>

  <template name="gui::qstyleoption_from_object">
    jobject %out = qtjambi_from_object(__jni_env, %in, "QStyleOption", "com/trolltech/qt/gui/", "Lcom_trolltech_qt_gui_QStyleOption_2", true);
  </template>

  <template name="gui::qstyleoptioncomplex_from_object">
    jobject %out = qtjambi_from_object(__jni_env, %in, "QStyleOptionComplex", "com/trolltech/qt/gui/", "Lcom_trolltech_qt_gui_QStyleOption_2", true);
  </template>

  <template name="gui::qstyleoption_to_object">
    QStyleOption *%out = (QStyleOption *) qtjambi_to_object(__jni_env, %in);
  </template>

  <object-type name="QStyle">
    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap, const QStyleOption *, const QWidget *)const" access="non-final"/>
    <modify-function signature="drawControl(QStyle::ControlElement, const QStyleOption *, QPainter *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawComplexControl(QStyle::ComplexControl, const QStyleOptionComplex *, QPainter *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionComplex"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoptioncomplex_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawPrimitive(QStyle::PrimitiveElement, const QStyleOption *, QPainter *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="hitTestComplexControl(QStyle::ComplexControl, const QStyleOptionComplex *, const QPoint &amp;, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionComplex"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoptioncomplex_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="pixelMetric(QStyle::PixelMetric, const QStyleOption *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="sizeFromContents(QStyle::ContentsType, const QStyleOption *, const QSize &amp;, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
       </modify-argument>
    </modify-function>

    <modify-function signature="standardIcon(QStyle::StandardPixmap, const QStyleOption *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="styleHint(QStyle::StyleHint, const QStyleOption *, const QWidget *, QStyleHintReturn *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="subControlRect(QStyle::ComplexControl, const QStyleOptionComplex *, QStyle::SubControl, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionComplex"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoptioncomplex_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                QStyleOptionComplex *%out = (QStyleOptionComplex *) qtjambi_to_object(__jni_env, %in);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="subElementRect(QStyle::SubElement, const QStyleOption *, const QWidget *) const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="generatedIconPixmap(QIcon::Mode,QPixmap,const QStyleOption*)const">
        <modify-argument index="3">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="polish(QPalette&amp;)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QPalette"/>
            <conversion-rule class="shell">
                jobject %out = qtjambi_from_object(__jni_env, &amp;%in, "QPalette", "com/trolltech/qt/gui/", false);
                jobject __invalidate_me = %out;
            </conversion-rule>
            <conversion-rule class="native">
                QtJambiLink *link = QtJambiLink::findLink(__jni_env, %in);
                Q_ASSERT(link != 0);

                QPalette dummy;
                QPalette &amp;%out = link != 0 ? * (QPalette *) link-&gt;pointer() : dummy;
            </conversion-rule>
        </modify-argument>
        <modify-argument index="0">
            <conversion-rule class="shell">
                if (__invalidate_me != 0)
                    qtjambi_invalidate_object(__jni_env, __invalidate_me);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="standardIconImplementation(QStyle::StandardPixmap,const QStyleOption*,const QWidget*)const">
        <modify-argument index="2">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOption"/>
            <conversion-rule class="shell">
                <insert-template name="gui::qstyleoption_from_object"/>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui::qstyleoption_to_object"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="combinedLayoutSpacing(QFlags&lt;QSizePolicy::ControlType&gt;,QFlags&lt;QSizePolicy::ControlType&gt;,Qt::Orientation,QStyleOption*,QWidget*)const">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        @QtBlockedSlot public final int combinedLayoutSpacing(QSizePolicy.ControlTypes controls1, QSizePolicy.ControlTypes controls2,
                                                              com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option, QWidget widget)
        {
            return combinedLayoutSpacing(controls1, controls2, orientation, option.nativePointer(), widget);
        }

        @QtBlockedSlot public final int combinedLayoutSpacing(QSizePolicy.ControlTypes controls1, QSizePolicy.ControlTypes controls2,
                                                              com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option)
        {
            return combinedLayoutSpacing(controls1, controls2, orientation, option, null);
        }

        @QtBlockedSlot public final int combinedLayoutSpacing(QSizePolicy.ControlTypes controls1, QSizePolicy.ControlTypes controls2,
                                                              com.trolltech.qt.core.Qt.Orientation orientation)
        {
            return combinedLayoutSpacing(controls1, controls2, orientation, null);
        }
    </inject-code>

    <modify-function signature="layoutSpacing(QSizePolicy::ControlType,QSizePolicy::ControlType,Qt::Orientation,const QStyleOption*,const QWidget*)const">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        @QtBlockedSlot public final int layoutSpacing(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                      com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option, QWidget widget)
        {
            return layoutSpacing(control1, control2, orientation, option.nativePointer(), widget);
        }

        @QtBlockedSlot public final int layoutSpacing(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                      com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option)
        {
            return layoutSpacing(control1, control2, orientation, option, null);
        }

        @QtBlockedSlot public final int layoutSpacing(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                      com.trolltech.qt.core.Qt.Orientation orientation)
        {
            return layoutSpacing(control1, control2, orientation, null);
        }
    </inject-code>

    <modify-function signature="layoutSpacingImplementation(QSizePolicy::ControlType,QSizePolicy::ControlType,Qt::Orientation,const QStyleOption*,const QWidget*)const">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        @QtBlockedSlot public final int layoutSpacingImplementation(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                                    com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option, QWidget widget)
        {
            return layoutSpacingImplementation(control1, control2, orientation, option.nativePointer(), widget);
        }

        @QtBlockedSlot public final int layoutSpacingImplementation(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                                    com.trolltech.qt.core.Qt.Orientation orientation, QStyleOption option)
        {
            return layoutSpacingImplementation(control1, control2, orientation, option, null);
        }

        @QtBlockedSlot public final int layoutSpacingImplementation(QSizePolicy.ControlType control1, QSizePolicy.ControlType control2,
                                                                    com.trolltech.qt.core.Qt.Orientation orientation)
        {
            return layoutSpacingImplementation(control1, control2, orientation, null);
        }
    </inject-code>


    <inject-code class="shell-declaration"> <!-- Remove in Qt 5 -->
QPixmap standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*) const { return 0; }
    </inject-code>

      <modify-function signature="standardPixmap(QStyle::StandardPixmap, const QStyleOption*, const QWidget*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>


  <object-type name="QColorDialog">
    <modify-function signature="getColor(const QColor &amp;, QWidget *)">
      <modify-argument index="1">
        <replace-default-expression with="QColor.white"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="getRgba(uint,bool*,QWidget*)">
        <remove/>
    </modify-function>
  </object-type>

  <object-type name="QLayout">
    <modify-function signature="setSpacing(int)" rename="setWidgetSpacing"/>
    <modify-function signature="spacing()const" rename="widgetSpacing"/>
    <modify-function signature="addWidget(QWidget *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count variable-name="__rcWidgets" action="add"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addChildWidget(QWidget *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count variable-name="__rcWidgets" action="add"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeWidget(QWidget *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count variable-name="__rcWidgets" action="remove"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addItem(QLayoutItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeItem(QLayoutItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addChildLayout(QLayout *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addChildLayout(QLayout *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="itemAt(int) const">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setAlignment(QWidget*,QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setAlignment(QLayout*,QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setMenuBar(QWidget*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcMenuBar"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="getContentsMargins(int*,int*,int*,int*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        @QtBlockedSlot public final QContentsMargins getContentsMargins() {
            QNativePointer left = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer top = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer right = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer bottom = new QNativePointer(QNativePointer.Type.Int);

            getContentsMargins(left, top, right, bottom);
            return new QContentsMargins(left.intValue(), top.intValue(), right.intValue(), bottom.intValue());
        }

        @QtBlockedSlot public final void setContentsMargins(QContentsMargins margins) {
            setContentsMargins(margins.left, margins.top, margins.right, margins.bottom);
        }
    </inject-code>

      <modify-function signature="margin()const" remove="all"/> <!--### Obsolete in 4.3-->
     <!-- <modify-function signature="setMargin(int)" remove="all"/> --> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QStackedLayout">
    <modify-function signature="addItem(QLayoutItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="itemAt(int) const">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addWidget(QWidget *)">
        <rename to="addStackedWidget"/>
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count action="add" declare-variable="QLayout" variable-name="__rcWidgets"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(int,QWidget*)">
        <modify-argument index="2">
            <no-null-pointer/>
            <reference-count action="add" declare-variable="QLayout" variable-name="__rcWidgets"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentWidget(QWidget*)">
        <modify-argument index="1">
            <!-- Safe to ignore because current widget must have been added to layout already -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QBoxLayout">
    <modify-function signature="addWidget(QWidget *, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addItem(QLayoutItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertLayout(int, QLayout *, int)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertItem(int, QLayoutItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addLayout(QLayout *, int)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addWidget(QWidget*,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <reference-count declare-variable="QLayout" action="add" variable-name="__rcWidgets"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(int,QWidget*,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="2">
            <reference-count declare-variable="QLayout" action="add" variable-name="__rcWidgets"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStretchFactor(QWidget*,int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStretchFactor(QLayout*,int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QGridLayout">
    <modify-function signature="addWidget(QWidget *)" remove="all"/>
    <modify-function signature="addItem(QLayoutItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addItem(QLayoutItem *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addLayout(QLayout *, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addLayout(QLayout *, int, int, int, int, QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
        <modify-function signature="addWidget(QWidget*,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
            <modify-argument index="1">
                <reference-count declare-variable="QLayout" action="add" variable-name="__rcWidgets"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="addWidget(QWidget*,int,int,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
            <modify-argument index="1">
                <reference-count declare-variable="QLayout" action="add" variable-name="__rcWidgets"/>
            </modify-argument>
        </modify-function>
        <modify-function signature="addWidget(QWidget*)">
            <modify-argument index="1">
                <reference-count declare-variable="QLayout" action="add" variable-name="__rcWidgets"/>
            </modify-argument>
        </modify-function>
    <extra-includes>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <modify-function signature="getItemPosition(int,int*,int*,int*,int*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final QTableArea getItemPosition(int index) {
            QNativePointer row = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer column = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer rowSpan = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer columnSpan = new QNativePointer(QNativePointer.Type.Int);

            getItemPosition(index, row, column, rowSpan, columnSpan);

            return new QTableArea(row.intValue(), column.intValue(), rowSpan.intValue(), columnSpan.intValue());
        }
    </inject-code>
  </object-type>

  <object-type name="QGraphicsView">
    <extra-includes>
      <include file-name="QPainterPath" location="global"/>
      <include file-name="QVarLengthArray" location="global"/>
    </extra-includes>
    <modify-function signature="setupViewport(QWidget *)" access="non-final"/>
    <modify-function signature="setScene(QGraphicsScene*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcScene"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setupViewport(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawItems(QPainter*,int,QGraphicsItem**,const QStyleOptionGraphicsItem*)">
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="core.get_array_length">
                    <replace from="%ARRAY" to="%3"/>
                </insert-template>
                int __length = %out;
            </conversion-rule>
        </modify-argument>

        <modify-argument index="3">
            <replace-type modified-type="com.trolltech.qt.gui.QGraphicsItemInterface[]"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_graphicsitem_array_to_java">
                    <replace from="%LENGTH" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_graphicsitem_array_from_java"/>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="4">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionGraphicsItem[]"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_styleoptiongraphicsitem_array_to_java">
                    <replace from="%LENGTH" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_styleoptiongraphicsitem_array_from_java"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>

  <template name="gui.inputDialog_get_input">
    public static %RETURN_TYPE %FUNCTION_NAME(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, %EXTRA, com.trolltech.qt.core.Qt.WindowFlags f) {
        com.trolltech.qt.QNativePointer ok = new com.trolltech.qt.QNativePointer(com.trolltech.qt.QNativePointer.Type.Boolean);
        %RETURN_TYPE result = %FUNCTION_NAME_internal(parent, title, label, %CALL, ok, f);
        return ok.booleanValue() ? result : null;
    }

    public static %RETURN_TYPE %FUNCTION_NAME(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, %EXTRA, com.trolltech.qt.core.Qt.WindowType ... f) {
        return %FUNCTION_NAME(parent, title, label, %CALL, new com.trolltech.qt.core.Qt.WindowFlags(f));
    }

    public static %RETURN_TYPE %FUNCTION_NAME(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, %EXTRA) {
        return %FUNCTION_NAME(parent, title, label, %CALL, com.trolltech.qt.core.Qt.WindowType.Widget);
    }

  </template>

  <object-type name="QInputDialog">
    <modify-function signature="getDouble(QWidget *, const QString &amp;, const QString &amp;, double, double, double, int, bool *, QFlags&lt;Qt::WindowType&gt;)">
        <rename to="getDouble_internal"/>
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.inputDialog_get_input">
            <replace from="%RETURN_TYPE" to="Double"/>
            <replace from="%EXTRA" to="double value, double minValue, double maxValue, int decimals"/>
            <replace from="%FUNCTION_NAME" to="getDouble"/>
            <replace from="%CALL" to="value, minValue, maxValue, decimals"/>
        </insert-template>

        public static Double getDouble(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value, double minValue, double maxValue) {
            return getDouble(parent, title, label, value, minValue, maxValue, 1);
        }

        public static Double getDouble(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value, double minValue) {
            return getDouble(parent, title, label, value, minValue, (double)2147483647);
        }


        public static Double getDouble(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, double value) {
            return getDouble(parent, title, label, value, (double)-2147483647);
        }

        public static Double getDouble(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
            return getDouble(parent, title, label, 0.0);
        }
    </inject-code>

    <modify-function signature="getInteger(QWidget *, const QString &amp;, const QString &amp;, int, int, int, int, bool *, QFlags&lt;Qt::WindowType&gt;)">
        <rename to="getInteger_internal"/>
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.inputDialog_get_input">
            <replace from="%RETURN_TYPE" to="Integer"/>
            <replace from="%EXTRA" to="int value, int minValue, int maxValue, int step"/>
            <replace from="%FUNCTION_NAME" to="getInteger"/>
            <replace from="%CALL" to="value, minValue, maxValue, step"/>
        </insert-template>

        public static Integer getInteger(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value, int minValue, int maxValue) {
            return getInteger(parent, title, label, value, minValue, maxValue, 1);
        }

        public static Integer getInteger(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value, int minValue) {
            return getInteger(parent, title, label, value, minValue, (int)2147483647);
        }

        public static Integer getInteger(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, int value) {
            return getInteger(parent, title, label, value, (int)-2147483647);
        }

        public static Integer getInteger(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
            return getInteger(parent, title, label, 0);
        }
    </inject-code>

    <modify-function signature="getItem(QWidget *, const QString &amp;, const QString &amp;, const QStringList&lt;QString&gt; &amp;, int, bool, bool *, QFlags&lt;Qt::WindowType&gt;)">
        <rename to="getItem_internal"/>
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.inputDialog_get_input">
            <replace from="%RETURN_TYPE" to="String"/>
            <replace from="%EXTRA" to="java.util.List&lt;java.lang.String&gt; list, int current, boolean editable"/>
            <replace from="%FUNCTION_NAME" to="getItem"/>
            <replace from="%CALL" to="list, current, editable"/>
        </insert-template>

        public static java.lang.String getItem(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, java.util.List&lt;java.lang.String&gt; list, int current) {
            return getItem(parent, title, label, list, current, true);
        }

        public static java.lang.String getItem(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, java.util.List&lt;java.lang.String&gt; list) {
            return getItem(parent, title, label, list, 0);
        }
    </inject-code>

    <modify-function signature="getText(QWidget *, const QString &amp;, const QString &amp;, QLineEdit::EchoMode, const QString &amp;, bool *, QFlags&lt;Qt::WindowType&gt;)">
        <rename to="getText_internal"/>
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.inputDialog_get_input">
            <replace from="%RETURN_TYPE" to="String"/>
            <replace from="%EXTRA" to="com.trolltech.qt.gui.QLineEdit.EchoMode echo, java.lang.String text"/>
            <replace from="%FUNCTION_NAME" to="getText"/>
            <replace from="%CALL" to="echo, text"/>
        </insert-template>


        public static java.lang.String getText(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label, com.trolltech.qt.gui.QLineEdit.EchoMode echo) {
            return getText(parent, title, label, echo, "");
        }

        public static java.lang.String getText(com.trolltech.qt.gui.QWidget parent, java.lang.String title, java.lang.String label) {
            return getText(parent, title, label, com.trolltech.qt.gui.QLineEdit.EchoMode.Normal);
        }
    </inject-code>
  </object-type>


  <object-type name="QGraphicsScene">
    <extra-includes>
        <include file-name="QVarLengthArray" location="global"/>
    </extra-includes>
    <modify-function signature="addItem(QGraphicsItem *)">
      <modify-argument index="1">
        <define-ownership class="java" owner="c++"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addEllipse(const QRectF &amp;, const QPen &amp;, const QBrush &amp;)">
      <modify-argument index="return">
        <define-ownership class="java" owner="c++"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addLine(const QLineF &amp;, const QPen &amp;)">
      <modify-argument index="return">
        <define-ownership class="java" owner="c++"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addPath(const QPainterPath &amp;, const QPen &amp;, const QBrush &amp;)">
      <modify-argument index="return">
        <define-ownership class="java" owner="c++"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addPixmap(const QPixmap &amp;)">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addPolygon(const QPolygonF &amp;, const QPen &amp;, const QBrush &amp;)">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addRect(const QRectF &amp;, const QPen &amp;, const QBrush &amp;)">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addText(const QString &amp;, const QFont &amp;)">
        <modify-argument index="return">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeItem(QGraphicsItem*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setFocusItem(QGraphicsItem*,Qt::FocusReason)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcFocusItem"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawItems(QPainter*,int,QGraphicsItem**,const QStyleOptionGraphicsItem*,QWidget*)">
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="core.get_array_length">
                    <replace from="%ARRAY" to="%3"/>
                </insert-template>
                int __length = %out;
            </conversion-rule>

        </modify-argument>

        <modify-argument index="3">
            <replace-type modified-type="com.trolltech.qt.gui.QGraphicsItemInterface[]"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_graphicsitem_array_to_java">
                    <replace from="%LENGTH" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_graphicsitem_array_from_java"/>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="4">
            <replace-type modified-type="com.trolltech.qt.gui.QStyleOptionGraphicsItem[]"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_styleoptiongraphicsitem_array_to_java">
                    <replace from="%LENGTH" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_styleoptiongraphicsitem_array_from_java"/>
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>


  <object-type name="QCalendarWidget">
    <extra-includes>
      <include file-name="QTextCharFormat" location="global"/>
    </extra-includes>

      <modify-function signature="isHeaderVisible()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setHeaderVisible(bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QTreeWidget">
    <modify-function signature="isSortingEnabled()const" remove="all"/>
    <modify-function signature="setSortingEnabled(bool)" remove="all"/>
    <modify-function signature="indexOfTopLevelItem(QTreeWidgetItem *)">
        <remove/>
    </modify-function>
    <modify-function signature="addTopLevelItem(QTreeWidgetItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeTopLevelItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addTopLevelItems(const QList&lt;QTreeWidgetItem*&gt; &amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertTopLevelItem(int, QTreeWidgetItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertTopLevelItems(int, const QList&lt;QTreeWidgetItem*&gt; &amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setHeaderItem(QTreeWidgetItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeTopLevelItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeItemWidget(QTreeWidgetItem*,int)">
        <modify-argument index="1">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentItem(QTreeWidgetItem*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentItem(QTreeWidgetItem*,int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemExpanded(const QTreeWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="isItemExpanded(const QTreeWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="setItemHidden(const QTreeWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="isItemHidden(const QTreeWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="isItemSelected(const QTreeWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="setItemSelected(const QTreeWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="setItemWidget(QTreeWidgetItem*,int,QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="3">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="items(const QMimeData*)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QAbstractItemDelegate">
    <modify-function signature="setEditorData(QWidget*,QModelIndex)const">
        <modify-argument index="1">
            <!-- Safe to ignore because this implementation is documented to do nothing -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModelData(QWidget*,QAbstractItemModel*,QModelIndex)const">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="elidedText(QFontMetrics, int, Qt::TextElideMode, QString)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QTableWidgetItem">
    <modify-function signature="operator=(const QTableWidgetItem&amp;)" remove="all"/>
    <modify-function signature="clone() const">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="backgroundColor()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setBackgroundColor(QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setTextColor(QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="textColor()const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QListWidgetItem">
    <modify-function signature="operator=(const QListWidgetItem&amp;)" remove="all"/>
    <modify-function signature="QListWidgetItem(QListWidget *, int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QListWidgetItem(const QString &amp;, QListWidget *, int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QListWidgetItem(const QIcon &amp;, const QString &amp;, QListWidget *, int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="clone() const">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="backgroundColor()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setBackgroundColor(QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setTextColor(QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="textColor()const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QGraphicsTextItem">
    <extra-includes>
      <include file-name="QTextCursor" location="global"/>
    </extra-includes>
    <modify-function signature="QGraphicsTextItem(QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            if (%1 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="QGraphicsTextItem(const QString &amp;,QGraphicsItem*,QGraphicsScene*)">
        <inject-code position="end">
            <argument-map index="2" meta-name="%2"/>
            if (%2 != null) disableGarbageCollection();
        </inject-code>
    </modify-function>
    <modify-function signature="setDocument(QTextDocument*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDocument"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="resetMatrix()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="sceneMatrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QCompleter">
    <modify-function signature="activated(const QModelIndex &amp;)">
        <rename to="activatedIndex"/>
    </modify-function>
    <modify-function signature="highlighted(const QModelIndex &amp;)">
        <rename to="highlightedIndex"/>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcModel"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setPopup(QAbstractItemView *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setWidget(QWidget *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcWidget"/>
        </modify-argument>
    </modify-function>
  </object-type>


  <object-type name="QTreeWidgetItem"  delete-in-main-thread="yes">

    <modify-function signature="QTreeWidgetItem(const QTreeWidgetItem &amp;)" remove="all"/>
    <modify-function signature="operator=(const QTreeWidgetItem&amp;)" remove="all"/>

    <modify-function signature="QTreeWidgetItem(QTreeWidget *,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QTreeWidgetItem(QTreeWidget *,const QStringList&lt;QString&gt; &amp;,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QTreeWidgetItem(QTreeWidget *,QTreeWidgetItem *,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QTreeWidgetItem(QTreeWidgetItem *,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QTreeWidgetItem(QTreeWidgetItem *,const QStringList&lt;QString&gt; &amp;,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="QTreeWidgetItem(QTreeWidgetItem *,QTreeWidgetItem *,int)">
        <modify-argument index="this">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="clone() const">
        <modify-argument index="return">
            <define-ownership class="shell" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addChild(QTreeWidgetItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addChildren(const QList&lt;QTreeWidgetItem*&gt; &amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertChild(int, QTreeWidgetItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertChildren(int, const QList&lt;QTreeWidgetItem*&gt; &amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeChild(QTreeWidgetItem*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeChild(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeChildren()">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="backgroundColor(int)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setBackgroundColor(int, QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setTextColor(int, QColor)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="textColor(int)const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QListWidget">
    <modify-function signature="addItem(QListWidgetItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertItem(int, QListWidgetItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeItemWidget(QListWidgetItem*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentItem(QListWidgetItem*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemHidden(const QListWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="isItemHidden(const QListWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="setItemSelected(const QListWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="isItemSelected(const QListWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="takeItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemWidget(QListWidgetItem*,QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <object-type name="QWidget">
    <extra-includes>
        <include file-name="QIcon" location="global"/>
        <include file-name="QMessageBox" location="global"/>
    </extra-includes>

    <modify-function signature="setWindowTitle(const QString &amp;)">
        <inject-code class="java">
            <argument-map index="1" meta-name="%1"/>
            if (this instanceof QMessageBox) {
                com.trolltech.qt.QtJambiInternal.threadCheck(this);
                if (nativeId() == 0)
                    throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
                __qt_QMessageBox_setWindowTitle(nativeId(), %1);
                return ;
            }
        </inject-code>
    </modify-function>
    <inject-code class="java">
        private native static void __qt_QMessageBox_setWindowTitle(long native_id, String windowTitle);
    </inject-code>
    <inject-code class="native">
        extern "C" JNIEXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_com_trolltech_qt_gui_QWidget__1_1qt_1QMessageBox_1setWindowTitle)
        (JNIEnv *__jni_env,
            jclass,
            jlong __this_nativeId,
            jobject title0)
        {
            QTJAMBI_DEBUG_TRACE("(native) entering: QMessageBox::setWindowTitle(const QString &amp; title)");
            QString __qt_title0 =  qtjambi_to_qstring(__jni_env, (jstring) title0);
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            QMessageBox *__qt_this = (QMessageBox *) qtjambi_from_jlong(__this_nativeId);
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            Q_ASSERT(__qt_this);
            __qt_this-&gt;setWindowTitle((const QString&amp; )__qt_title0);
            QTJAMBI_DEBUG_TRACE("(native) -&gt; leaving: QMessageBox::setWindowTitle(const QString &amp; title)");
        }
    </inject-code>

    <modify-function signature="setWindowModality(Qt::WindowModality)">
        <inject-code class="java">
            <argument-map index="1" meta-name="%1"/>
            if (this instanceof QMessageBox) {
                com.trolltech.qt.QtJambiInternal.threadCheck(this);
                if (nativeId() == 0)
                    throw new QNoNativeResourcesException("Function call on incomplete object of type: " +getClass().getName());
                __qt_QMessageBox_setWindowModality(nativeId(), %1.value());
                return ;
            }
        </inject-code>
    </modify-function>
    <inject-code class="java">
        private native static void __qt_QMessageBox_setWindowModality(long native_id, int modality);
    </inject-code>
    <inject-code class="native">
        extern "C" JNIEXPORT void JNICALL QTJAMBI_FUNCTION_PREFIX(Java_com_trolltech_qt_gui_QWidget__1_1qt_1QMessageBox_1setWindowModality)
        (JNIEnv *__jni_env,
            jclass,
            jlong __this_nativeId,
            jint windowModality0)
        {
            Q_UNUSED(__jni_env);
            QTJAMBI_DEBUG_TRACE("(native) entering: QMessageBox::setWindowModality(Qt::WindowModality modality)");
            Qt::WindowModality __qt_windowModality0 = (Qt::WindowModality) windowModality0;
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            QMessageBox *__qt_this = (QMessageBox *) qtjambi_from_jlong(__this_nativeId);
            QTJAMBI_EXCEPTION_CHECK(__jni_env);
            Q_ASSERT(__qt_this);
            __qt_this-&gt;setWindowModality((Qt::WindowModality )__qt_windowModality0);
            QTJAMBI_DEBUG_TRACE("(native) -&gt; leaving: QMessageBox::setWindowModality(Qt::WindowModality modality)");
        }
    </inject-code>

    <modify-function signature="render(QPaintDevice *, const QPoint &amp;, const QRegion &amp;, QFlags&lt;QWidget::RenderFlag&gt;)">
        <modify-argument index="4">
            <replace-default-expression with="RenderFlag.DrawWindowBackground, RenderFlag.DrawChildren"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setFocusProxy(QWidget*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcFocusProxy"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setInputContext(QInputContext*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setLayout(QLayout*)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setParent(QWidget*,QFlags&lt;Qt::WindowType&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setParent(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStyle(QStyle*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcStyle"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setTabOrder(QWidget*,QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="getContentsMargins(int*,int*,int*,int*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        @QtBlockedSlot public final QContentsMargins getContentsMargins() {
            QNativePointer left = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer top = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer right = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer bottom = new QNativePointer(QNativePointer.Type.Int);

            getContentsMargins(left, top, right, bottom);
            return new QContentsMargins(left.intValue(), top.intValue(), right.intValue(), bottom.intValue());
        }

        @QtBlockedSlot public final void setContentsMargins(QContentsMargins margins) {
            setContentsMargins(margins.left, margins.top, margins.right, margins.bottom);
        }
    </inject-code>

    <modify-function signature="addAction(QAction *)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcActions"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="insertAction(QAction *, QAction *)">
        <modify-argument index="2">
            <reference-count action="add" variable-name="__rcActions"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="addActions(const QList&lt;QAction *&gt; &amp;)">
        <modify-argument index="1">
            <reference-count action="add-all" variable-name="__rcActions"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="insertActions(QAction *, const QList&lt;QAction *&gt; &amp;)">
        <modify-argument index="2">
            <reference-count action="add-all" variable-name="__rcActions"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="removeAction(QAction *)">
        <modify-argument index="1">
            <reference-count action="remove" variable-name="__rcActions"/>
        </modify-argument>
    </modify-function>


      <modify-function signature="enabledChange(bool)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="fontChange(QFont)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="isEnabledToTLW()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="isTopLevel()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="paletteChange(QPalette)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setShown(bool)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="topLevelWidget()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="windowActivationChange(bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>


  <object-type name="QMessageBox">
    <modify-function signature="setWindowTitle(const QString &amp;)" remove="all"/>
    <modify-function signature="setWindowModality(Qt::WindowModality)" remove="all"/>
    <extra-includes>
        <include file-name="QPixmap" location="global"/>
    </extra-includes>
    <modify-function signature="addButton(QAbstractButton*,QMessageBox::ButtonRole)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeButton(QAbstractButton*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setDefaultButton(QPushButton*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setEscapeButton(QAbstractButton*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

      <modify-function signature="QMessageBox(QString,QString,QMessageBox::Icon,int,int,int,QWidget*,QFlags&lt;Qt::WindowType&gt;)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="buttonText(int)const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setButtonText(int, QString)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="standardIcon(QMessageBox::Icon)" remove="all"/> <!--### Obsolete in 4.3-->

      <modify-function signature="critical(QWidget*,QString,QString,int,int,int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="critical(QWidget*,QString,QString,QString,QString,QString,int,int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="information(QWidget*,QString,QString,int,int,int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="information(QWidget*,QString,QString,QString,QString,QString,int,int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="question(QWidget*, QString, QString, int, int, int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="question(QWidget*, QString, QString, QString, QString, QString, int, int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="warning(QWidget*, QString, QString, int, int, int)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="warning(QWidget*, QString, QString, QString, QString, QString, int, int)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QAbstractSpinBox">
    <modify-function signature="initStyleOption(QStyleOptionSpinBox*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="setLineEdit(QLineEdit*)">
        <modify-argument index="1">
            <!-- Safe to ignore because the spinbox reparents the line edit -->
            <reference-count action="ignore"/>
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionSpinBox"/>
            <replace from="final" to=""/>
        </insert-template>
    </inject-code>

    <modify-function signature="fixup(QString&amp;)const">
        <modify-argument index="1">
            <replace-type modified-type="java.lang.String"/>
            <conversion-rule class="shell">
                jobject %out = (jobject) qtjambi_from_qstring(__jni_env, %in);
            </conversion-rule>
            <conversion-rule class="native">
                QString %out = qtjambi_to_qstring(__jni_env, (jstring) %in);
                QString *__qt_converted = &amp;%out;
            </conversion-rule>
        </modify-argument>

        <modify-argument index="0">
            <replace-type modified-type="java.lang.String"/>
            <conversion-rule class="native">
                jobject %out = (jobject) qtjambi_from_qstring(__jni_env, *__qt_converted);
            </conversion-rule>
            <conversion-rule class="shell">
                %1 = qtjambi_to_qstring(__jni_env, (jstring) %in);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="validate(QString&amp;,int&amp;)const">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QValidator$QValidationData"/>
            <conversion-rule class="shell">
                <insert-template name="gui.convert_validationdata_to_java">
                    <replace from="%STRING" to="%1"/>
                    <replace from="%POS" to="%2"/>
                </insert-template>
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_validationdata_to_string"/>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                // nothing needed
            </conversion-rule>
            <conversion-rule class="native">
                <insert-template name="gui.convert_validationdata_to_pos">
                    <replace from="%VALIDATIONDATA" to="%1"/>
                </insert-template>
            </conversion-rule>
        </modify-argument>

        <modify-argument index="0">
            <conversion-rule class="native">
                <insert-template name="gui.cleanup_validationdata_from_java"/>
                jint %out = %in;
            </conversion-rule>
            <conversion-rule class="shell">
                <insert-template name="gui.cleanup_validationdata_to_java">
                    <replace from="%STRING" to="%1"/>
                    <replace from="%POS" to="%2"/>
                </insert-template>
                QValidator::State %out = (QValidator::State) qtjambi_to_enumerator(__jni_env, %in);
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QTextFrame" delete-in-main-thread="yes">
    <extra-includes>
        <include file-name="QTextCursor" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QImageIOHandler">
    <extra-includes>
        <include file-name="QRect" location="global"/>
    </extra-includes>
    <modify-function signature="setFormat(const QByteArray &amp;)const">
        <remove/>
    </modify-function>
    <modify-function signature="setDevice(QIODevice*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDevice"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="read(QImage*)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QImage"/>
            <conversion-rule class="shell">
                jobject %out = qtjambi_from_object(__jni_env, %in, "QImage", "com/trolltech/qt/gui/", false);

                QtJambiLink *__link = %out != 0 ? QtJambiLink::findLink(__jni_env, %out) : 0;
            </conversion-rule>
            <conversion-rule class="native">
                QImage *%out = (QImage *) qtjambi_to_object(__jni_env, %in);
            </conversion-rule>
        </modify-argument>
        <modify-argument index="0">
            <conversion-rule class="shell">
                // Invalidate object
                if (__link != 0) __link-&gt;resetObject(__jni_env);
                bool %out = (bool) %in;
            </conversion-rule>
        </modify-argument>
    </modify-function>

      <modify-function signature="name()const" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QProxyModel">
    <modify-function signature="parent()const" remove="all"/>
    <extra-includes>
        <include file-name="QPixmap" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcModel"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QImageReader">
    <extra-includes>
        <include file-name="QColor" location="global"/>
        <include file-name="QRect" location="global"/>
        <include file-name="QSize" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QImage" location="global"/>
    </extra-includes>
    <modify-function signature="read(QImage*) ">
        <remove/>
    </modify-function>
    <modify-function signature="setDevice(QIODevice*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDevice"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QMovie">
    <extra-includes>
        <include file-name="QColor" location="global"/>
        <include file-name="QImage" location="global"/>
        <include file-name="QPixmap" location="global"/>
        <include file-name="QRect" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
    <modify-function signature="cacheMode()">
        <remove/>
    </modify-function>
    <modify-function signature="setDevice(QIODevice*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDevice"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QPageSetupDialog">
  </object-type>

  <object-type name="QTabWidget">
    <modify-function signature="initStyleOption(QStyleOptionTabWidgetFrame*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionTabWidgetFrame"/>
        </insert-template>
    </inject-code>
    <modify-function signature="addTab(QWidget*,QIcon,QString)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addTab(QWidget*,QString)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertTab(int,QWidget*,QString)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertTab(int,QWidget*,QIcon,QString)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCornerWidget(QWidget*,Qt::Corner)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setTabBar(QTabBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QDrag">
    <extra-includes>
        <include file-name="QPoint" location="global"/>
        <include file-name="QPixmap" location="global"/>
    </extra-includes>
    <modify-function signature="setMimeData(QMimeData*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="start(QFlags&lt;Qt::DropAction&gt;)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QDateTimeEdit">
    <modify-function signature="initStyleOption(QStyleOptionSpinBox*)const" access="private" rename="initDateTimeEditStyleOption"/>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionSpinBox"/>
            <replace from="initStyleOption" to="initDateTimeEditStyleOption"/>
        </insert-template>
    </inject-code>

  </object-type>

  <object-type name="QSortFilterProxyModel">
     <modify-function signature="parent()const" remove="all"/>
    <extra-includes>
        <include file-name="QItemSelection" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
    <modify-function signature="match(QModelIndex, int, QVariant, int, QFlags&lt;Qt::MatchFlag&gt;) const">
        <modify-argument index="5">
            <replace-default-expression with="Qt.MatchFlag.MatchStartsWith, Qt.MatchFlag.MatchWrap"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setSourceModel(QAbstractItemModel *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcSourceModel"/>
        </modify-argument>
    </modify-function>


      <modify-function signature="clear()" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="filterChanged()" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QSlider">
    <modify-function signature="initStyleOption(QStyleOptionSlider*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionSlider"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QInputContext">
    <extra-includes>
        <include file-name="QTextFormat" location="global"/>
    </extra-includes>
    <modify-function signature="setFocusWidget(QWidget*)">
        <remove/>
    </modify-function>
  </object-type>


  <object-type name="QProgressDialog">
    <modify-function signature="setBar(QProgressBar*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCancelButton(QPushButton*)">
        <modify-argument index="1">
            <!-- Safe to ignore because button is reparented -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setLabel(QLabel*)">
        <modify-argument index="1">
            <!-- Safe to ignore because label is reparented -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <object-type name="QLabel">
    <extra-includes>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <modify-function signature="picture()const">
        <access modifier="private"/>
        <rename to="picture_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.getter_returning_nativepointer">
            <replace from="%RETURN_TYPE" to="QPicture"/>
            <replace from="%FUNCTION_NAME" to="picture"/>
        </insert-template>

    </inject-code>
    <modify-function signature="setBuddy(QWidget *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcBuddy"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setMovie(QMovie *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcMovie"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="pixmap()const">
        <access modifier="private"/>
        <rename to="pixmap_private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.getter_returning_nativepointer">
            <replace from="%RETURN_TYPE" to="QPixmap"/>
            <replace from="%FUNCTION_NAME" to="pixmap"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QFileDialog">
    <extra-includes>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <inject-code>
        public static class Filter {
            public Filter(String filter) {
                this.filter = filter;
            }
            public String filter;
            public String selectedFilter = "";
        };
    </inject-code>
    <template name="gui.filedialog_get_xxx_filename">
        public static %TYPE %FUNCTION_NAME(QWidget parent, String caption, String dir, Filter filter, Options options) {
            QNativePointer np = filter != null ? new QNativePointer(QNativePointer.Type.String) : null;
            %TYPE returned = %FUNCTION_NAME(parent, caption, dir, filter != null ? filter.filter : "", np, options);
            if (filter != null)
                filter.selectedFilter = np.stringValue();
            return returned;
        }

        public static %TYPE %FUNCTION_NAME(QWidget parent, String caption, String dir, Filter filter, Option ... options) {
            return %FUNCTION_NAME(parent, caption, dir, filter, new Options(options));
        }

        public static %TYPE %FUNCTION_NAME(QWidget parent, String caption, String dir, Filter filter) {
            return %FUNCTION_NAME(parent, caption, dir, filter, new Options(0));
        }

        public static %TYPE %FUNCTION_NAME(QWidget parent, String caption, String dir) {
            return %FUNCTION_NAME(parent, caption, dir, null);
        }

        public static %TYPE %FUNCTION_NAME(QWidget parent, String caption) {
            return %FUNCTION_NAME(parent, caption, "");
        }

        public static %TYPE %FUNCTION_NAME(QWidget parent) {
            return %FUNCTION_NAME(parent, "");
        }

        public static %TYPE %FUNCTION_NAME() {
            return %FUNCTION_NAME(null);
        }

    </template>

    <extra-includes>
        <include file-name="QUrl" location="global"/>
    </extra-includes>
    <modify-function signature="getOpenFileName(QWidget*,QString,QString,QString,QString*,QFlags&lt;QFileDialog::Option&gt;)">
        <access modifier="private"/>
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="6">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.filedialog_get_xxx_filename">
            <replace from="%FUNCTION_NAME" to="getOpenFileName"/>
            <replace from="%TYPE" to="String"/>
        </insert-template>
    </inject-code>

    <modify-function signature="getOpenFileNames(QWidget*,QString,QString,QString,QString*,QFlags&lt;QFileDialog::Option&gt;)">
        <access modifier="private"/>
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="6">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.filedialog_get_xxx_filename">
            <replace from="%FUNCTION_NAME" to="getOpenFileNames"/>
            <replace from="%TYPE" to="java.util.List&lt;String&gt;"/>
        </insert-template>
    </inject-code>

    <modify-function signature="getSaveFileName(QWidget*,QString,QString,QString,QString*,QFlags&lt;QFileDialog::Option&gt;)">
        <access modifier="private"/>
        <modify-argument index="1">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="3">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="5">
            <remove-default-expression/>
        </modify-argument>
        <modify-argument index="6">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.filedialog_get_xxx_filename">
            <replace from="%FUNCTION_NAME" to="getSaveFileName"/>
            <replace from="%TYPE" to="String"/>
        </insert-template>
    </inject-code>

    <modify-function signature="setIconProvider(QFileIconProvider*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcIconProvider"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcItemDelegate"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setProxyModel(QAbstractProxyModel*)">
        <modify-argument index="1">
            <!-- Reparented -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <object-type name="QErrorMessage">
  </object-type>

  <object-type name="QTabBar">
    <extra-includes>
        <include file-name="QIcon" location="global"/>
    </extra-includes>
    <modify-function signature="initStyleOption(QStyleOptionTab*,int)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final void initStyleOption(QStyleOptionTab option, int tabIndex) {
            initStyleOption(option.nativePointer(), tabIndex);
        }
    </inject-code>
  </object-type>

  <object-type name="QStandardItemModel">
    <modify-function signature="insertColumn(int,const QModelIndex &amp;)" remove="all"/>
    <modify-function signature="insertRow(int,const QModelIndex &amp;)" remove="all"/>
    <modify-function signature="parent()const" remove="all"/>
    <extra-includes>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>

    <modify-function signature="appendColumn(const QList&lt;QStandardItem *&gt;&amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeColumn(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeRow(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeHorizontalHeaderItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeVerticalHeaderItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeItem(int,int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="appendRow(const QList&lt;QStandardItem *&gt;&amp;)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="appendRow(QStandardItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertColumn(int, const QList&lt;QStandardItem *&gt;&amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertRow(int, const QList&lt;QStandardItem *&gt;&amp;)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertRow(int, QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setHorizontalHeaderItem(int, QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItem(int, int, QStandardItem *)">
        <modify-argument index="3">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItem(int, QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemPrototype(const QStandardItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setVerticalHeaderItem(int, QStandardItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QRadioButton">
    <modify-function signature="initStyleOption(QStyleOptionButton*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionButton"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QScrollBar">
    <modify-function signature="initStyleOption(QStyleOptionSlider*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionSlider"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QClipboard">
    <extra-includes>
        <include file-name="QImage" location="global"/>
        <include file-name="QPixmap" location="global"/>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <modify-function signature="setMimeData(QMimeData *, QClipboard::Mode)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="text(QString&amp;,QClipboard::Mode)const">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static class Text {
            public String text;
            public String subtype;
        }
        public final Text text(String subtype, Mode mode) {
            QNativePointer np = new QNativePointer(QNativePointer.Type.String);
            np.setStringValue(subtype != null ? subtype : "");

            Text returned = new Text();
            returned.text = text(np, mode);
            returned.subtype = np.stringValue();
            return returned;
        }

        public final Text text(String subtype) {
            return text(subtype, Mode.Clipboard);
        }
    </inject-code>
  </object-type>


  <object-type name="QAbstractScrollArea">
    <modify-function signature="setupViewport(QWidget *)" access="non-final"/>
    <modify-function signature="addScrollBarWidget(QWidget*,QFlags&lt;Qt::AlignmentFlag&gt;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCornerWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setHorizontalScrollBar(QScrollBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setVerticalScrollBar(QScrollBar*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setViewport(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="setupViewport(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

    <inject-code>
    public QPaintEngine paintEngine() {
        throw new RuntimeException("Cannot open a painter directly on a QAbstractScrollArea, open QPainter on its viewport instead...");
    }
    </inject-code>
  </object-type>

  <object-type name="QPaintEngineState">
    <extra-includes>
        <include file-name="QPainterPath" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QRubberBand">
    <modify-function signature="initStyleOption(QStyleOptionRubberBand*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="move(int,int)" rename="moveRubberBand"/>
    <modify-function signature="move(const QPoint &amp;)" rename="moveRubberBand"/>
    <modify-function signature="resize(int,int)" rename="resizeRubberBand"/>
    <modify-function signature="resize(const QSize &amp;)" rename="resizeRubberBand"/>
    <modify-function signature="setGeometry(int,int,int,int)" rename="setRubberBandGeometry"/>
    <modify-function signature="setGeometry(const QRect &amp;)" rename="setRubberBandGeometry"/>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionRubberBand"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QTextLayout">
    <extra-includes>
        <include file-name="QTextOption" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QTableWidget">
    <modify-function signature="isSortingEnabled()const" remove="all"/>
    <modify-function signature="setSortingEnabled(bool)" remove="all"/>
    <modify-function signature="setHorizontalHeaderItem(int, QTableWidgetItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItem(int, int, QTableWidgetItem *)">
        <modify-argument index="3">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeHorizontalHeaderItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeVerticalHeaderItem(int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="takeItem(int,int)">
        <modify-argument index="return">
            <define-ownership class="java" owner="default"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemPrototype(const QTableWidgetItem *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setVerticalHeaderItem(int, QTableWidgetItem *)">
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCellWidget(int,int,QWidget*)">
        <modify-argument index="3">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentItem(QTableWidgetItem*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemSelected(const QTableWidgetItem*,bool)">
        <remove/>
    </modify-function>
    <modify-function signature="isItemSelected(const QTableWidgetItem*)const">
        <remove/>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>
  <object-type name="QTextDocument">
    <extra-includes>
        <include file-name="QTextBlock" location="global"/>
        <include file-name="QTextFormat" location="global"/>
        <include file-name="QTextCursor" location="global"/>
    </extra-includes>
    <modify-function signature="redo(QTextCursor*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final void redo(QTextCursor cursor) {
            redo(cursor.nativePointer());
        }
    </inject-code>

    <modify-function signature="setDocumentLayout(QAbstractTextDocumentLayout*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>

    <modify-function signature="undo(QTextCursor*)">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        public final void undo(QTextCursor cursor) {
            undo(cursor.nativePointer());
        }
    </inject-code>


  </object-type>

  <object-type name="QSplitter">
    <extra-includes>
        <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <modify-function signature="getRange(int,int*,int*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="addWidget(QWidget *)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(int, QWidget *)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static class Range {
            public Range(int min, int max) {
                minimum = min;
                maximum = max;
            }
            public int minimum;
            public int maximum;
        }
        public Range getRange(int index) {
            QNativePointer min = new QNativePointer(QNativePointer.Type.Int);
            QNativePointer max = new QNativePointer(QNativePointer.Type.Int);

            getRange(index, min, max);

            return new Range(min.intValue(), max.intValue());
        }
    </inject-code>
  </object-type>

  <object-type name="QGroupBox">
    <modify-function signature="initStyleOption(QStyleOptionGroupBox*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionGroupBox"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QStackedWidget">
    <modify-function signature="addWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(int,QWidget*)">
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setCurrentWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <object-type name="QSplitterHandle">
  </object-type>

  <object-type name="QDial">
    <modify-function signature="initStyleOption(QStyleOptionSlider*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionSlider"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QLineEdit">
    <modify-function signature="initStyleOption(QStyleOptionFrame*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="setCompleter(QCompleter *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcCompleter"/>
        </modify-argument>
    </modify-function>
     <modify-function signature="setValidator(const QValidator *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcValidator"/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionFrame"/>
        </insert-template>
    </inject-code>
  </object-type>

  <object-type name="QLCDNumber">
  </object-type>

  <object-type name="QSplashScreen">
    <modify-function signature="showMessage(const QString &amp;, int, const QColor &amp;)">
      <modify-argument index="3">
        <replace-default-expression with="QColor.black"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="repaint()" remove="all"/>
  </object-type>


  <object-type name="QDockWidget">
    <modify-function signature="initStyleOption(QStyleOptionDockWidget*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionDockWidget"/>
        </insert-template>
    </inject-code>
    <modify-function signature="setTitleBarWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setWidget(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QAbstractProxyModel">
    <extra-includes>
        <include file-name="QItemSelection" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>

    <modify-function signature="setSourceModel(QAbstractItemModel *)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcSourceModel"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <object-type name="QDesktopWidget">
  </object-type>

  <object-type name="QFrame">
  </object-type>

  <object-type name="QTextTable">
    <modify-function signature="format() const">
        <rename to="tableFormat"/>
    </modify-function>
    <extra-includes>
        <include file-name="QTextCursor" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QSpinBox">
    <modify-function signature="valueChanged(const QString &amp;)">
        <rename to="valueStringChanged"/>
    </modify-function>
  </object-type>

  <object-type name="QTextBrowser">
    <modify-function signature="highlighted(const QString &amp;)">
        <rename to="highlightedString"/>
    </modify-function>
  </object-type>

  <object-type name="QDoubleSpinBox">
    <modify-function signature="valueChanged(const QString &amp;)">
        <rename to="valueStringChanged"/>
    </modify-function>
  </object-type>

  <object-type name="QButtonGroup">
    <modify-function signature="buttonClicked(int)">
        <rename to="buttonIdClicked"/>
    </modify-function>
    <modify-function signature="buttonPressed(int)">
        <rename to="buttonIdPressed"/>
    </modify-function>
    <modify-function signature="buttonReleased(int)">
        <rename to="buttonIdReleased"/>
    </modify-function>
    <modify-function signature="addButton(QAbstractButton *)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcButtons"/>
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="addButton(QAbstractButton *, int)">
        <modify-argument index="1">
            <reference-count action="add" variable-name="__rcButtons"/>
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="removeButton(QAbstractButton *)">
        <modify-argument index="1">
            <reference-count action="remove" variable-name="__rcButtons"/>
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setId(QAbstractButton *,int)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QToolBar">
    <modify-function signature="addAction(QAction *)" remove="all"/>
    <modify-function signature="initStyleOption(QStyleOptionToolBar*)const">
        <access modifier="private"/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionToolBar"/>
        </insert-template>
    </inject-code>

    <modify-function signature="addAction(QIcon,QString,const QObject*,const char*)">
        <remove/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.addAction">
            <replace from="%POST_CALL" to=""/>
            <replace from=" %END_EXTRA" to=""/>
            <replace from=" %END_CALL_EXTRA" to=""/>
            <replace from="%EXTRA" to="QIcon icon,"/>
            <replace from="%CALL_EXTRA" to="icon,"/>
        </insert-template>
    </inject-code>

    <modify-function signature="addAction(QString,const QObject*,const char*)">
        <remove/>
    </modify-function>
    <inject-code>
        <insert-template name="gui.addAction">
            <replace from="%POST_CALL" to=""/>
            <replace from=" %END_EXTRA" to=""/>
            <replace from=" %END_CALL_EXTRA" to=""/>
            <replace from="%EXTRA " to=""/>
            <replace from="%CALL_EXTRA " to=""/>
        </insert-template>
    </inject-code>

    <modify-function signature="addWidget(QWidget*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertWidget(QAction*,QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertSeparator(QAction*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QPaintEngine">
    <extra-includes>
        <include file-name="QVarLengthArray" location="global"/>
    </extra-includes>
    <modify-function signature="setPaintDevice(QPaintDevice*)">
        <remove/>
    </modify-function>
    <modify-field name="state" read="false" write="false"/>

    <modify-function signature="drawLines(const QLine *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QLine[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QLine", "com/trolltech/qt/gui/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QLine, 32&gt; __lines;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __lines.append(*(QLine *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QLine *%out = %1 == 0 ? 0 : __lines.constData();
            </conversion-rule>

        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawLines(const QLineF *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.gui.QLineF[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QLineF", "com/trolltech/qt/gui/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QLineF, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QLineF *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QLineF *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawRects(const QRectF *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QRectF[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QRectF", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QRectF, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QRectF *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QRectF *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawRects(const QRect *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QRect[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QRect", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QRect, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QRect *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QRect *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawPoints(const QPoint *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QPoint[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QPoint", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QPoint, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QPoint *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QPoint *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>

        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawPoints(const QPointF *, int)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QPointF[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QPointF", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QPointF, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QPointF *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QPointF *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawPolygon(const QPoint *, int, QPaintEngine::PolygonDrawMode)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QPoint[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QPoint", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QPoint, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QPoint *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QPoint *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>

    <modify-function signature="drawPolygon(const QPointF *, int, QPaintEngine::PolygonDrawMode)">
        <modify-argument index="1">
            <replace-type modified-type="com.trolltech.qt.core.QPointF[]"/>
            <conversion-rule class="shell">
                jobjectArray %out = qtjambi_from_array(__jni_env, %in, %2,
                                                       "QPointF", "com/trolltech/qt/core/");
            </conversion-rule>
            <conversion-rule class="native">
                QVarLengthArray&lt;QPointF, 32&gt; __data;
                int __size = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
                for (int i=0; i&lt;__size; ++i)
                    __data.append(*(QPointF *)qtjambi_to_object(__jni_env, __jni_env-&gt;GetObjectArrayElement((jobjectArray) %in, i)));
                const QPointF *%out = %1 == 0 ? 0 : __data.constData();
            </conversion-rule>
        </modify-argument>
        <modify-argument index="2">
            <remove-argument/>
            <conversion-rule class="shell">
                /* nothing */
            </conversion-rule>
            <conversion-rule class="native">
                int %out = %1 == 0 ? 0 : __jni_env-&gt;GetArrayLength((jarray) %1);
            </conversion-rule>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QAbstractTableModel">
    <extra-includes>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QMimeData">
    <extra-includes>
        <include file-name="QStringList" location="global"/>
        <include file-name="QUrl" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QComboBox">
    <modify-function signature="initStyleOption(QStyleOptionComboBox*)const">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="setCompleter(QCompleter*)">
        <modify-argument index="1">
            <reference-count variable-name="__rcCompleter" action="set"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setValidator(const QValidator*)">
        <modify-argument index="1">
            <reference-count variable-name="__rcValidator" action="set"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setItemDelegate(QAbstractItemDelegate *)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setView(QAbstractItemView *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <!-- Safe to ignore because combo box reparents view -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setLineEdit(QLineEdit *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <!-- Safe to ignore because combo box reparents line edit -->
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setModel(QAbstractItemModel *)">
        <modify-argument index="1">
            <no-null-pointer/>
            <reference-count action="set" variable-name="__rcModel"/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.init_style_option">
            <replace from="%TYPE" to="QStyleOptionComboBox"/>
        </insert-template>
    </inject-code>
    <modify-function signature="activated(int)">&gt;
        <rename to="activatedIndex"/>
    </modify-function>
    <modify-function signature="currentIndexChanged(const QString &amp;)">
        <rename to="currentStringChanged"/>
    </modify-function>
    <modify-function signature="highlighted(int)">
        <rename to="highlightedIndex"/>
    </modify-function>

      <modify-function signature="autoCompletion()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="autoCompletionCaseSensitivity()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setAutoCompletion(bool)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setAutoCompletionCaseSensitivity(Qt::CaseSensitivity)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QTextEdit">
    <extra-includes>
        <include file-name="QTextCursor" location="global"/>
    </extra-includes>
    <modify-function signature="setDocument(QTextDocument*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcDocument"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="insertFromMimeData(const QMimeData*)    ">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QPrinter" delete-in-main-thread="yes">
    <modify-function signature="setEngines(QPrintEngine*,QPaintEngine*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcPrintEngine"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="set" variable-name="__rcPaintEngine"/>
        </modify-argument>
    </modify-function>
  </object-type>

  <object-type name="QAction">
    <inject-code class="java">
        private QActionGroup __rcActionGroup = null;

        /**
         * Sets the shortcut to the key sequence for the given key string. For example "Ctrl+O" gives CTRL+'O'.
         * The strings "Ctrl", "Shift", "Alt" and "Meta" are recognized, as well as their translated equivalents in the
         * "QShortcut" context (using QObject::tr()). Up to four key codes may be entered by separating them with commas,
         * e.g. "Alt+X,Ctrl+S,Q".
         * @param key The description of the key sequence. Typically used with tr() so key sequences can be locale aware.
         */
        public void setShortcut(String key) { setShortcut(new QKeySequence(key)); }

        /**
         * Sets the shortcut to the key sequence for the given key. The result will depend on the currently running platform.
         * The key sequence will be based on the first element in the list of key bindings for the key.
         * @param key The key for which to select a key sequence
         */
        public void setShortcut(QKeySequence.StandardKey key) { setShortcut(new QKeySequence(key)); }

        public void setIcon(QPixmap pm) { setIcon(new QIcon(pm)); }
    </inject-code>
    <modify-function signature="setMenu(QMenu*)">
        <modify-argument index="1">
            <reference-count action="set" variable-name="__rcMenu"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActionGroup(QActionGroup*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            java.util.Collection&lt;Object&gt; __rcTmp = null;
            if (__rcActionGroup != null) {
                __rcTmp = (java.util.Collection&lt;Object&gt;)com.trolltech.qt.QtJambiInternal.fetchField(__rcActionGroup, QActionGroup.class, "__rcActions");
                while (__rcTmp.contains(this))
                    __rcTmp.remove(this);
            }
            __rcActionGroup = %1;
            if (__rcActionGroup != null) {
                __rcTmp = (java.util.Collection&lt;Object&gt;)com.trolltech.qt.QtJambiInternal.fetchField(__rcActionGroup, QActionGroup.class, "__rcActions");
                __rcTmp.add(this);
            }
        </inject-code>
    </modify-function>
  </object-type>

  <object-type name="QPainter">
    <extra-includes>
      <include file-name="QWidget" location="global"/>
      <include file-name="QPainterPath" location="global"/>
      <include file-name="QPixmap" location="global"/>
    </extra-includes>
    <inject-code class="java">
    public void setBrush(QColor color) { setBrush(new QBrush(color)); }
    public void setBrush(QGradient gradient) { setBrush(new QBrush(gradient)); }
    public void setBrush(QPixmap pm) { setBrush(new QBrush(pm)); }
    </inject-code>
    <modify-function signature="drawConvexPolygon(const QPoint *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawConvexPolygon(const QPointF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawLines(const QLine *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawLines(const QLineF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawLines(const QPoint *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawLines(const QPointF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPoints(const QPoint *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPoints(const QPointF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPolygon(const QPoint *, int, Qt::FillRule)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPolygon(const QPointF *, int, Qt::FillRule)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPolyline(const QPoint *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawPolyline(const QPointF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawRects(const QRect *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawRects(const QRectF *, int)">
        <remove/>
    </modify-function>
    <modify-function signature="drawLines(const QVector&lt;QPoint&gt; &amp;)">
        <rename to="drawLinesFromPoints"/>
    </modify-function>
    <modify-function signature="drawLines(const QVector&lt;QPointF&gt; &amp;)">
        <rename to="drawLinesFromPointsF"/>
    </modify-function>
    <modify-function signature="drawLines(const QVector&lt;QLineF&gt; &amp;)">
        <rename to="drawLinesF"/>
    </modify-function>
    <modify-function signature="drawRects(const QVector&lt;QRectF&gt; &amp;)">
        <rename to="drawRectsF"/>
    </modify-function>

    <modify-function signature="QPainter(QPaintDevice *)">
        <modify-argument index="1">
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="begin(QPaintDevice *)">
        <modify-argument index="1">
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="initFrom(const QWidget *)">
        <modify-argument index="1">
            <no-null-pointer/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setRedirected(const QPaintDevice *, QPaintDevice *, const QPoint &amp;)">
        <modify-argument index="1">
            <no-null-pointer />
        </modify-argument>
    </modify-function>
    <modify-function signature="restoreRedirected(const QPaintDevice *)">
        <modify-argument index="1">
            <no-null-pointer />
        </modify-argument>
    </modify-function>


    <template name="gui.painter_draw_text_general">
        public final void drawText(%RECT_ARGUMENTS, int flags, String text, %RECT_TYPE boundingRect) {
            drawText(%RECT_CALL_ARGUMENTS, flags, text, boundingRect == null ? null : boundingRect.nativePointer());
        }

        public final void drawText(%RECT_ARGUMENTS, int flags, String text) {
            drawText(%RECT_CALL_ARGUMENTS, flags, text, (%RECT_TYPE) null);
        }
    </template>

    <template name="gui.painter_draw_text_qrect">
        <insert-template name="gui.painter_draw_text_general">
            <replace from="%RECT_ARGUMENTS" to="%RECT_TYPE rectangle"/>
            <replace from="%RECT_CALL_ARGUMENTS" to="rectangle"/>
        </insert-template>
    </template>
    <modify-function signature="drawText(QRect,int,QString,QRect*)">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.painter_draw_text_qrect">
            <replace from="%RECT_TYPE" to="com.trolltech.qt.core.QRect"/>
        </insert-template>
    </inject-code>

    <modify-function signature="drawText(QRectF,int,QString,QRectF*)">
        <access modifier="private"/>
        <modify-argument index="4">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.painter_draw_text_qrect">
            <replace from="%RECT_TYPE" to="com.trolltech.qt.core.QRectF"/>
        </insert-template>
    </inject-code>

    <modify-function signature="drawText(int,int,int,int,int,QString,QRect*)">
        <access modifier="private"/>
        <modify-argument index="7">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        <insert-template name="gui.painter_draw_text_general">
            <replace from="%RECT_TYPE" to="com.trolltech.qt.core.QRect"/>
            <replace from="%RECT_ARGUMENTS" to="int x, int y, int width, int height"/>
            <replace from="%RECT_CALL_ARGUMENTS" to="x, y, width, height"/>
        </insert-template>
    </inject-code>

    <modify-function signature="redirected(const QPaintDevice*,QPoint*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static QPaintDeviceInterface redirected(QPaintDeviceInterface device, com.trolltech.qt.core.QPoint offset) {
            return redirected(device, offset == null ? null : offset.nativePointer());
        }
    </inject-code>

    <inject-code>
    public QPainter(QWidget widget) {
        this();
        begin(widget);
    }

    public boolean begin(QWidget widget) {
        return com.trolltech.qt.QtJambiGuiInternal.beginPaint(widget, this);
    }
    </inject-code>

    <inject-code class="destructor-function">
    if (((QPainter *) ptr)->isActive()) {
        qWarning("QPainter: trying to delete an active painter, "
                 "did you forget to call \"end()\"?\n");
        return;
    }
    </inject-code>


    <inject-code>
        private static java.util.Stack&lt;QPaintDeviceInterface&gt; __rcRedirections = new java.util.Stack&lt;QPaintDeviceInterface&gt;();
    </inject-code>
    <modify-function signature="setRedirected(const QPaintDevice*, QPaintDevice*, const QPoint &amp;)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
        <modify-argument index="2">
            <reference-count action="ignore"/>
        </modify-argument>
        <inject-code position="end">
            <argument-map index="1" meta-name="%1"/>
            <argument-map index="2" meta-name="%2"/>
            __rcRedirections.push(%1);
            __rcRedirections.push(%2);
        </inject-code>
    </modify-function>
    <modify-function signature="restoreRedirected(const QPaintDevice*)">
        <inject-code position="end">
            if (!__rcRedirections.empty()) __rcRedirections.pop();
            if (!__rcRedirections.empty()) __rcRedirections.pop();
        </inject-code>
    </modify-function>

      <modify-function signature="matrix()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="matrixEnabled()const" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrix(QMatrix, bool)" remove="all"/> <!--### Obsolete in 4.3-->
      <modify-function signature="setMatrixEnabled(bool)" remove="all"/> <!--### Obsolete in 4.3-->
  </object-type>

  <object-type name="QApplication">
    <extra-includes>
      <include file-name="QBasicTimer" location="global"/>
      <include file-name="qtjambi_cache.h" location="local"/>
      <include file-name="QFont" location="global"/>
      <include file-name="QFontMetrics" location="global"/>
      <include file-name="QPalette" location="global"/>
      <include file-name="QIcon" location="global"/>
      <include file-name="QLocale" location="global"/>
      <include file-name="com.trolltech.qt.QNativePointer" location="java"/>
    </extra-includes>
    <inject-code class="java">
    public static void initialize(String args[])
    {
        if (m_instance != null)
            throw new RuntimeException("QApplication can only be initialized once");

        m_instance = new QApplication(args);
        m_instance.aboutToQuit.connect(m_instance, "disposeOfMyself()");
        String path = Utilities.unpackPlugins();
        if (path != null)
            addLibraryPath(path);
    }

    public static void aboutQtJambi() {
        com.trolltech.qt.QtJambiGuiInternal.aboutQtJambi();
    }

    public static QApplication instance() {
        if (type() != Type.Tty)
            return (QApplication) com.trolltech.qt.core.QCoreApplication.instance();
        return null;
    }
    </inject-code>
    <inject-code class="java">
    public QApplication(String args[])
    {
        this(argc(args), argv(args));
    }
    </inject-code>
    <modify-function signature="QApplication(int &amp;, char  **, int)">
        <access modifier="private"/>
    </modify-function>
    <modify-function signature="QApplication(int &amp;, char **, QApplication::Type, int)">
        <remove/>
    </modify-function>
    <modify-function signature="QApplication(int &amp;, char **, bool, int)">
        <remove/>
    </modify-function>

    <template name="gui.application_char_pointer_function">
        public static %RETURN_TYPE %FUNCTION_NAME(%PRE_ARGUMENTS %COMMA QByteArray className) {
            return %FUNCTION_NAME(%PRE_CALL_ARGUMENTS %COMMA className == null ? null : className.data());
        }
    </template>

    <modify-function signature="font(const char*)">
        <remove/>
    </modify-function>
    <modify-function signature="setFont(QFont,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static void setFont(QFont font) {
            setFont(font, null);
        }
    </inject-code>
    <modify-function signature="palette(const char*)">
        <remove/>
    </modify-function>
    <modify-function signature="setPalette(QPalette,const char*)">
        <access modifier="private"/>
        <modify-argument index="2">
            <remove-default-expression/>
        </modify-argument>
    </modify-function>
    <inject-code>
        public static void setPalette(QPalette palette) {
            setPalette(palette, null);
        }
    </inject-code>

    <modify-function signature="overrideCursor()">
        <access modifier="private"/>
        <rename to="overrideCursor_private"/>
    </modify-function>
    <inject-code>
        public static QCursor overrideCursor() {
            QNativePointer np = overrideCursor_private();
            return np == null ? null : QCursor.fromNativePointer(np);
        }
    </inject-code>
    <modify-function signature="setInputContext(QInputContext*)">
        <modify-argument index="1">
            <define-ownership class="java" owner="c++"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setActiveWindow(QWidget*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>
    <modify-function signature="setStyle(QStyle*)">
        <modify-argument index="1">
            <reference-count action="ignore"/>
        </modify-argument>
    </modify-function>

  </object-type>

  <suppress-warning text="WARNING(MetaJavaBuilder) :: type '*' is specified in typesystem, but not declared"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type '*Private&amp;'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type '*Private\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type '*Private const\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QTextEngine\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QFontEngine\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QPixmap::Type'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QInputDialog::Type'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QTextFrameLayoutData\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type 'QAbstractUndoItem\*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping * unmatched *type '*QImageTextKeyLang*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: non-public function '*' in interface '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: visibility of function '*' modified in class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: hiding of function '*' in class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unsupported default value 'QVector&lt;FormatRange&gt;()' of argument in function '*', class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unsupported default value 'QVariantList()' of argument in function '*', class '*'"/>
  <suppress-warning text="WARNING(CppImplGenerator) :: protected function '*' in final class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping function 'QTextLayout::QTextLayout', unmatched parameter type 'QTextEngine*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unsupported default value of argument in function 'doAction', class 'QAccessibleInterface'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping function 'QFileDialog::QFileDialog', unmatched parameter type 'QFileDialogArgs const&amp;'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unsupported default value '0., 0., 1000000000., 1000000000.' of argument in function 'update', class 'QAbstractTextDocumentLayout'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping function 'QWidget::windowSurface', unmatched return type 'QWindowSurface*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: skipping function 'QWidget::setWindowSurface', unmatched parameter type 'QWindowSurface*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: enum 'QStyleOption::StyleOptionType' does not have a type entry or is not an enum"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unhandled enum value: ~FlagMask in QMessageBox::StandardButton"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: unmatched enum ~FlagMask"/>
  <suppress-warning text="WARNING(MetaInfoGenerator) :: class 'QGraphicsSceneEvent' inherits from polymorphic class 'QEvent', but has no polymorphic id set"/>
  <suppress-warning text="WARNING(MetaInfoGenerator) :: class 'QInputEvent' inherits from polymorphic class 'QEvent', but has no polymorphic id set"/>
  <suppress-warning text="WARNING(JavaGenerator) :: either add or remove specified for reference count variable '__rcMenus' in 'com.trolltech.qt.gui.QMenu' but not both"/>
  <suppress-warning text="WARNING(JavaGenerator) :: either add or remove specified for reference count variable '__rcMenus' in 'com.trolltech.qt.gui.QMenuBar' but not both"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QBrush' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextFrame_iterator' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QRegion' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPolygon' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextTableCell' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextLength' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPalette' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextBlock_iterator' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextBlock' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextCursor' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QFont' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QMatrix' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPen' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QColor' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTransform' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPainterPath_Element' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPainterPath' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QItemSelection' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QKeySequence' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QLine' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QPolygonF' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QSizePolicy' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextFragment' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QFontMetrics' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QGradient' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QFontMetricsF' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QTextFormat' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QLineF' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QImage' has equals operators but no qHash() function"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Rejected enum has no alternative...: QStyle::SH_Menu_Mask" />

</typesystem>
