    FOREIGN MODULE sun_awt_im;

    IMPORT
        java_awt_event,
        java_lang,
        java_awt_im,
        java_text,
        java_awt_font,
        java_awt,
        java_awt_image,
        java_io,
        java_awt_peer,
        sun_awt,
        java_util,
        java_awt_dnd,
        java_beans,
        java_security,
        sun_awt_im_resources;

    TYPE

      InputContext* = POINTER TO EXTENSIBLE RECORD (java_awt_im.InputContext)
                      STATIC
                        PROCEDURE Init!() : InputContext,CONSTRUCTOR;
                      END;

      InputMethod* = POINTER TO ABSTRACT RECORD (java_lang.Object)
                       inputContext! : InputMethodContext;
                     STATIC
                       PROCEDURE Init!() : InputMethod,CONSTRUCTOR;
                     END;

      InputMethodAdapter* = POINTER TO ABSTRACT RECORD (InputMethod)
                            STATIC
                              PROCEDURE Init*() : InputMethodAdapter,CONSTRUCTOR;
                            END;

      InputMethodContext* = POINTER TO EXTENSIBLE RECORD (InputContext + java_awt_im.InputMethodRequests)
                            STATIC
                              PROCEDURE Init*() : InputMethodContext,CONSTRUCTOR;
                            END;

      InputMethodHighlightMapping$InputMethodHighlightAttribute* = POINTER TO RECORD (java_text.AttributedCharacterIterator$Attribute)
                                                                   STATIC
                                                                     INPUT_METHOD_UNDERLINE* : InputMethodHighlightMapping$InputMethodHighlightAttribute;
                                                                     UNDERLINE_LOW_ONE_PIXEL* : java_lang.Integer;
                                                                     UNDERLINE_LOW_TWO_PIXEL* : java_lang.Integer;
                                                                     UNDERLINE_LOW_DOTTED* : java_lang.Integer;
                                                                     UNDERLINE_LOW_GRAY* : java_lang.Integer;
                                                                     UNDERLINE_LOW_DASHED* : java_lang.Integer;
                                                                     PROCEDURE Init!(p0 : java_lang.String) : InputMethodHighlightMapping$InputMethodHighlightAttribute,CONSTRUCTOR;
                                                                   END;

      InputMethodHighlightMapping* = POINTER TO INTERFACE RECORD (java_lang.Object)
                                     END;

      InputMethodManager* = POINTER TO ABSTRACT RECORD (java_lang.Object)
                            STATIC
                              PROCEDURE Init*() : InputMethodManager,CONSTRUCTOR;
                              PROCEDURE getInstance*() : InputMethodManager;
                            END;

    PROCEDURE (self:InputContext) changeInputMethod*(p0 : InputMethodDescriptor),NEW,EXTENSIBLE;

    PROCEDURE (self:InputContext) dispatchEvent*(p0 : java_awt.AWTEvent),EXTENSIBLE;

    PROCEDURE (self:InputContext) dispose*(),EXTENSIBLE;

    PROCEDURE (self:InputContext) endComposition*(),EXTENSIBLE;

    PROCEDURE (self:InputContext) getInputMethodControlObject*() : java_lang.Object,EXTENSIBLE;

    PROCEDURE (self:InputContext) removeNotify*(p0 : java_awt.Component),EXTENSIBLE;

    PROCEDURE (self:InputContext) selectInputMethod*(p0 : java_util.Locale) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:InputContext) setCharacterSubsets*(IN  p0 : ARRAY OF java_lang.Character$Subset),EXTENSIBLE;

    PROCEDURE (self:InputMethod) activate*(),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) deactivate*(p0 : BOOLEAN),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) dispatchEvent*(p0 : java_awt.AWTEvent),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) dispose*(),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) endComposition*(),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) getControlObject*() : java_lang.Object,NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) removeNotify*(),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) setCharacterSubsets*(IN  p0 : ARRAY OF java_lang.Character$Subset),NEW,ABSTRACT;

    PROCEDURE (self:InputMethod) setInputContext*(p0 : InputMethodContext),NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethod) setLocale*(p0 : java_util.Locale) : BOOLEAN,NEW,ABSTRACT;

    PROCEDURE (self:InputMethodAdapter) getClientComponent!() : java_awt.Component,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodAdapter) haveActiveClient!() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodAdapter) setCompositionArea!(p0 : java_awt.Component),NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) cancelLatestCommittedText*(IN  p0 : ARRAY OF java_text.AttributedCharacterIterator$Attribute) : java_text.AttributedCharacterIterator,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) dispatchEvent*(p0 : java_awt.AWTEvent),EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) dispatchInputMethodEvent*(p0 : INTEGER;
                                                                  p1 : java_text.AttributedCharacterIterator;
                                                                  p2 : INTEGER;
                                                                  p3 : java_awt_font.TextHitInfo;
                                                                  p4 : java_awt_font.TextHitInfo),NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getCommittedText*(    p0 : INTEGER;
                                                              p1 : INTEGER;
                                                          IN  p2 : ARRAY OF java_text.AttributedCharacterIterator$Attribute) : java_text.AttributedCharacterIterator,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getCommittedTextLength*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getInsertPositionOffset*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getLocationOffset*(p0 : INTEGER;
                                                           p1 : INTEGER) : java_awt_font.TextHitInfo,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getSelectedText*(IN  p0 : ARRAY OF java_text.AttributedCharacterIterator$Attribute) : java_text.AttributedCharacterIterator,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodContext) getTextLocation*(p0 : java_awt_font.TextHitInfo) : java_awt.Rectangle,NEW,EXTENSIBLE;

    PROCEDURE (self:InputMethodHighlightMapping$InputMethodHighlightAttribute) readResolve!() : java_lang.Object,EXTENSIBLE;

    PROCEDURE (self:InputMethodHighlightMapping) mapHighlight*(p0 : java_awt_im.InputMethodHighlight) : java_util.Map,NEW,ABSTRACT;

    PROCEDURE (self:InputMethodManager) getCurrentInputMethod*() : InputMethodDescriptor,NEW,ABSTRACT;

    PROCEDURE (self:InputMethodManager) getTriggerMenuString*() : java_lang.String,NEW,ABSTRACT;

    PROCEDURE (self:InputMethodManager) notifyChangeRequest*(p0 : java_awt.Component),NEW,ABSTRACT;

    END sun_awt_im.