FOREIGN MODULE java_util_concurrent_atomic;

IMPORT
    java_io := "java.io",
    sun_misc := "sun.misc",
    java_lang := "java.lang";

TYPE

  AtomicBoolean* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_io.Serializable)    (* Typebound Procedures *)
                   STATIC
                     PROCEDURE Init*() : AtomicBoolean,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : BOOLEAN) : AtomicBoolean,CONSTRUCTOR;
                   END;

  AtomicInteger* = POINTER TO EXTENSIBLE RECORD (java_lang.Number + java_io.Serializable)    (* Typebound Procedures *)
                   STATIC
                     PROCEDURE Init*() : AtomicInteger,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : INTEGER) : AtomicInteger,CONSTRUCTOR;
                   END;

  AtomicIntegerArray* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_io.Serializable)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE Init*(IN  p0 : ARRAY OF INTEGER) : AtomicIntegerArray,CONSTRUCTOR;
                          PROCEDURE Init*(p0 : INTEGER) : AtomicIntegerArray,CONSTRUCTOR;
                        END;

  AtomicIntegerFieldUpdater* = POINTER TO ABSTRACT RECORD (java_lang.Object)    (* Typebound Procedures *)
                               STATIC
                                 PROCEDURE Init!() : AtomicIntegerFieldUpdater,CONSTRUCTOR;
                                 PROCEDURE newUpdater*(p0 : java_lang.Class;
                                                       p1 : java_lang.String) : AtomicIntegerFieldUpdater;
                               END;

  AtomicLong* = POINTER TO EXTENSIBLE RECORD (java_lang.Number + java_io.Serializable)    (* Typebound Procedures *)
                STATIC
                  PROCEDURE Init*() : AtomicLong,CONSTRUCTOR;
                  PROCEDURE Init*(p0 : LONGINT) : AtomicLong,CONSTRUCTOR;
                END;

  AtomicLongArray* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_io.Serializable)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE Init*(IN  p0 : ARRAY OF LONGINT) : AtomicLongArray,CONSTRUCTOR;
                       PROCEDURE Init*(p0 : INTEGER) : AtomicLongArray,CONSTRUCTOR;
                     END;

  AtomicLongFieldUpdater* = POINTER TO ABSTRACT RECORD (java_lang.Object)    (* Typebound Procedures *)
                            STATIC
                              PROCEDURE Init!() : AtomicLongFieldUpdater,CONSTRUCTOR;
                              PROCEDURE newUpdater*(p0 : java_lang.Class;
                                                    p1 : java_lang.String) : AtomicLongFieldUpdater;
                            END;

  AtomicMarkableReference* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                             STATIC
                               PROCEDURE Init*(p0 : java_lang.Object;
                                               p1 : BOOLEAN) : AtomicMarkableReference,CONSTRUCTOR;
                             END;

  AtomicReference* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_io.Serializable)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE Init*() : AtomicReference,CONSTRUCTOR;
                       PROCEDURE Init*(p0 : java_lang.Object) : AtomicReference,CONSTRUCTOR;
                     END;

  AtomicReferenceArray* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_io.Serializable)    (* Typebound Procedures *)
                          STATIC
                            PROCEDURE Init*(IN  p0 : ARRAY OF java_lang.Object) : AtomicReferenceArray,CONSTRUCTOR;
                            PROCEDURE Init*(p0 : INTEGER) : AtomicReferenceArray,CONSTRUCTOR;
                          END;

  AtomicReferenceFieldUpdater* = POINTER TO ABSTRACT RECORD (java_lang.Object)    (* Typebound Procedures *)
                                 STATIC
                                   PROCEDURE Init!() : AtomicReferenceFieldUpdater,CONSTRUCTOR;
                                   PROCEDURE newUpdater*(p0 : java_lang.Class;
                                                         p1 : java_lang.Class;
                                                         p2 : java_lang.String) : AtomicReferenceFieldUpdater;
                                 END;

  AtomicStampedReference* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                            STATIC
                              PROCEDURE Init*(p0 : java_lang.Object;
                                              p1 : INTEGER) : AtomicStampedReference,CONSTRUCTOR;
                            END;




PROCEDURE (self:AtomicBoolean) compareAndSet*(p0 : BOOLEAN;
                                              p1 : BOOLEAN) : BOOLEAN,NEW;

PROCEDURE (self:AtomicBoolean) get*() : BOOLEAN,NEW;

PROCEDURE (self:AtomicBoolean) getAndSet*(p0 : BOOLEAN) : BOOLEAN,NEW;

PROCEDURE (self:AtomicBoolean) lazySet*(p0 : BOOLEAN),NEW;

PROCEDURE (self:AtomicBoolean) set*(p0 : BOOLEAN),NEW;

PROCEDURE (self:AtomicBoolean) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicBoolean) weakCompareAndSet*(p0 : BOOLEAN;
                                                  p1 : BOOLEAN) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) addAndGet*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) compareAndSet*(p0 : INTEGER;
                                              p1 : INTEGER) : BOOLEAN,NEW;

PROCEDURE (self:AtomicInteger) decrementAndGet*() : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) doubleValue*() : REAL,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) floatValue*() : SHORTREAL,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) get*() : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) getAndAdd*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) getAndDecrement*() : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) getAndIncrement*() : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) getAndSet*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) incrementAndGet*() : INTEGER,NEW;

PROCEDURE (self:AtomicInteger) intValue*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) lazySet*(p0 : INTEGER),NEW;

PROCEDURE (self:AtomicInteger) longValue*() : LONGINT,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) set*(p0 : INTEGER),NEW;

PROCEDURE (self:AtomicInteger) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicInteger) weakCompareAndSet*(p0 : INTEGER;
                                                  p1 : INTEGER) : BOOLEAN,NEW;

PROCEDURE (self:AtomicIntegerArray) addAndGet*(p0 : INTEGER;
                                               p1 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) compareAndSet*(p0 : INTEGER;
                                                   p1 : INTEGER;
                                                   p2 : INTEGER) : BOOLEAN,NEW;

PROCEDURE (self:AtomicIntegerArray) decrementAndGet*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) get*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) getAndAdd*(p0 : INTEGER;
                                               p1 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) getAndDecrement*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) getAndIncrement*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) getAndSet*(p0 : INTEGER;
                                               p1 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) incrementAndGet*(p0 : INTEGER) : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) lazySet*(p0 : INTEGER;
                                             p1 : INTEGER),NEW;

PROCEDURE (self:AtomicIntegerArray) length*() : INTEGER,NEW;

PROCEDURE (self:AtomicIntegerArray) set*(p0 : INTEGER;
                                         p1 : INTEGER),NEW;

PROCEDURE (self:AtomicIntegerArray) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerArray) weakCompareAndSet*(p0 : INTEGER;
                                                       p1 : INTEGER;
                                                       p2 : INTEGER) : BOOLEAN,NEW;

PROCEDURE (self:AtomicIntegerFieldUpdater) addAndGet*(p0 : java_lang.Object;
                                                      p1 : INTEGER) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) compareAndSet*(p0 : java_lang.Object;
                                                          p1 : INTEGER;
                                                          p2 : INTEGER) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicIntegerFieldUpdater) decrementAndGet*(p0 : java_lang.Object) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) get*(p0 : java_lang.Object) : INTEGER,NEW,ABSTRACT;

PROCEDURE (self:AtomicIntegerFieldUpdater) getAndAdd*(p0 : java_lang.Object;
                                                      p1 : INTEGER) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) getAndDecrement*(p0 : java_lang.Object) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) getAndIncrement*(p0 : java_lang.Object) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) getAndSet*(p0 : java_lang.Object;
                                                      p1 : INTEGER) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) incrementAndGet*(p0 : java_lang.Object) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicIntegerFieldUpdater) lazySet*(p0 : java_lang.Object;
                                                    p1 : INTEGER),NEW,ABSTRACT;

PROCEDURE (self:AtomicIntegerFieldUpdater) set*(p0 : java_lang.Object;
                                                p1 : INTEGER),NEW,ABSTRACT;

PROCEDURE (self:AtomicIntegerFieldUpdater) weakCompareAndSet*(p0 : java_lang.Object;
                                                              p1 : INTEGER;
                                                              p2 : INTEGER) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicLong) addAndGet*(p0 : LONGINT) : LONGINT,NEW;

PROCEDURE (self:AtomicLong) compareAndSet*(p0 : LONGINT;
                                           p1 : LONGINT) : BOOLEAN,NEW;

PROCEDURE (self:AtomicLong) decrementAndGet*() : LONGINT,NEW;

PROCEDURE (self:AtomicLong) doubleValue*() : REAL,EXTENSIBLE;

PROCEDURE (self:AtomicLong) floatValue*() : SHORTREAL,EXTENSIBLE;

PROCEDURE (self:AtomicLong) get*() : LONGINT,NEW;

PROCEDURE (self:AtomicLong) getAndAdd*(p0 : LONGINT) : LONGINT,NEW;

PROCEDURE (self:AtomicLong) getAndDecrement*() : LONGINT,NEW;

PROCEDURE (self:AtomicLong) getAndIncrement*() : LONGINT,NEW;

PROCEDURE (self:AtomicLong) getAndSet*(p0 : LONGINT) : LONGINT,NEW;

PROCEDURE (self:AtomicLong) incrementAndGet*() : LONGINT,NEW;

PROCEDURE (self:AtomicLong) intValue*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:AtomicLong) lazySet*(p0 : LONGINT),NEW;

PROCEDURE (self:AtomicLong) longValue*() : LONGINT,EXTENSIBLE;

PROCEDURE (self:AtomicLong) set*(p0 : LONGINT),NEW;

PROCEDURE (self:AtomicLong) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicLong) weakCompareAndSet*(p0 : LONGINT;
                                               p1 : LONGINT) : BOOLEAN,NEW;

PROCEDURE (self:AtomicLongArray) addAndGet*(p0 : INTEGER;
                                            p1 : LONGINT) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongArray) compareAndSet*(p0 : INTEGER;
                                                p1 : LONGINT;
                                                p2 : LONGINT) : BOOLEAN,NEW;

PROCEDURE (self:AtomicLongArray) decrementAndGet*(p0 : INTEGER) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) get*(p0 : INTEGER) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) getAndAdd*(p0 : INTEGER;
                                            p1 : LONGINT) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) getAndDecrement*(p0 : INTEGER) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) getAndIncrement*(p0 : INTEGER) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) getAndSet*(p0 : INTEGER;
                                            p1 : LONGINT) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) incrementAndGet*(p0 : INTEGER) : LONGINT,NEW;

PROCEDURE (self:AtomicLongArray) lazySet*(p0 : INTEGER;
                                          p1 : LONGINT),NEW;

PROCEDURE (self:AtomicLongArray) length*() : INTEGER,NEW;

PROCEDURE (self:AtomicLongArray) set*(p0 : INTEGER;
                                      p1 : LONGINT),NEW;

PROCEDURE (self:AtomicLongArray) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicLongArray) weakCompareAndSet*(p0 : INTEGER;
                                                    p1 : LONGINT;
                                                    p2 : LONGINT) : BOOLEAN,NEW;

PROCEDURE (self:AtomicLongFieldUpdater) addAndGet*(p0 : java_lang.Object;
                                                   p1 : LONGINT) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) compareAndSet*(p0 : java_lang.Object;
                                                       p1 : LONGINT;
                                                       p2 : LONGINT) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicLongFieldUpdater) decrementAndGet*(p0 : java_lang.Object) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) get*(p0 : java_lang.Object) : LONGINT,NEW,ABSTRACT;

PROCEDURE (self:AtomicLongFieldUpdater) getAndAdd*(p0 : java_lang.Object;
                                                   p1 : LONGINT) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) getAndDecrement*(p0 : java_lang.Object) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) getAndIncrement*(p0 : java_lang.Object) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) getAndSet*(p0 : java_lang.Object;
                                                   p1 : LONGINT) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) incrementAndGet*(p0 : java_lang.Object) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicLongFieldUpdater) lazySet*(p0 : java_lang.Object;
                                                 p1 : LONGINT),NEW,ABSTRACT;

PROCEDURE (self:AtomicLongFieldUpdater) set*(p0 : java_lang.Object;
                                             p1 : LONGINT),NEW,ABSTRACT;

PROCEDURE (self:AtomicLongFieldUpdater) weakCompareAndSet*(p0 : java_lang.Object;
                                                           p1 : LONGINT;
                                                           p2 : LONGINT) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicMarkableReference) attemptMark*(p0 : java_lang.Object;
                                                      p1 : BOOLEAN) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) compareAndSet*(p0 : java_lang.Object;
                                                        p1 : java_lang.Object;
                                                        p2 : BOOLEAN;
                                                        p3 : BOOLEAN) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) get*(IN  p0 : ARRAY OF BOOLEAN) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) getReference*() : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) isMarked*() : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) set*(p0 : java_lang.Object;
                                              p1 : BOOLEAN),NEW,EXTENSIBLE;

PROCEDURE (self:AtomicMarkableReference) weakCompareAndSet*(p0 : java_lang.Object;
                                                            p1 : java_lang.Object;
                                                            p2 : BOOLEAN;
                                                            p3 : BOOLEAN) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicReference) compareAndSet*(p0 : java_lang.Object;
                                                p1 : java_lang.Object) : BOOLEAN,NEW;

PROCEDURE (self:AtomicReference) get*() : java_lang.Object,NEW;

PROCEDURE (self:AtomicReference) getAndSet*(p0 : java_lang.Object) : java_lang.Object,NEW;

PROCEDURE (self:AtomicReference) lazySet*(p0 : java_lang.Object),NEW;

PROCEDURE (self:AtomicReference) set*(p0 : java_lang.Object),NEW;

PROCEDURE (self:AtomicReference) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicReference) weakCompareAndSet*(p0 : java_lang.Object;
                                                    p1 : java_lang.Object) : BOOLEAN,NEW;

PROCEDURE (self:AtomicReferenceArray) compareAndSet*(p0 : INTEGER;
                                                     p1 : java_lang.Object;
                                                     p2 : java_lang.Object) : BOOLEAN,NEW;

PROCEDURE (self:AtomicReferenceArray) get*(p0 : INTEGER) : java_lang.Object,NEW;

PROCEDURE (self:AtomicReferenceArray) getAndSet*(p0 : INTEGER;
                                                 p1 : java_lang.Object) : java_lang.Object,NEW;

PROCEDURE (self:AtomicReferenceArray) lazySet*(p0 : INTEGER;
                                               p1 : java_lang.Object),NEW;

PROCEDURE (self:AtomicReferenceArray) length*() : INTEGER,NEW;

PROCEDURE (self:AtomicReferenceArray) set*(p0 : INTEGER;
                                           p1 : java_lang.Object),NEW;

PROCEDURE (self:AtomicReferenceArray) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:AtomicReferenceArray) weakCompareAndSet*(p0 : INTEGER;
                                                         p1 : java_lang.Object;
                                                         p2 : java_lang.Object) : BOOLEAN,NEW;

PROCEDURE (self:AtomicReferenceFieldUpdater) compareAndSet*(p0 : java_lang.Object;
                                                            p1 : java_lang.Object;
                                                            p2 : java_lang.Object) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicReferenceFieldUpdater) get*(p0 : java_lang.Object) : java_lang.Object,NEW,ABSTRACT;

PROCEDURE (self:AtomicReferenceFieldUpdater) getAndSet*(p0 : java_lang.Object;
                                                        p1 : java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicReferenceFieldUpdater) lazySet*(p0 : java_lang.Object;
                                                      p1 : java_lang.Object),NEW,ABSTRACT;

PROCEDURE (self:AtomicReferenceFieldUpdater) set*(p0 : java_lang.Object;
                                                  p1 : java_lang.Object),NEW,ABSTRACT;

PROCEDURE (self:AtomicReferenceFieldUpdater) weakCompareAndSet*(p0 : java_lang.Object;
                                                                p1 : java_lang.Object;
                                                                p2 : java_lang.Object) : BOOLEAN,NEW,ABSTRACT;

PROCEDURE (self:AtomicStampedReference) attemptStamp*(p0 : java_lang.Object;
                                                      p1 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) compareAndSet*(p0 : java_lang.Object;
                                                       p1 : java_lang.Object;
                                                       p2 : INTEGER;
                                                       p3 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) get*(IN  p0 : ARRAY OF INTEGER) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) getReference*() : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) getStamp*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) set*(p0 : java_lang.Object;
                                             p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:AtomicStampedReference) weakCompareAndSet*(p0 : java_lang.Object;
                                                           p1 : java_lang.Object;
                                                           p2 : INTEGER;
                                                           p3 : INTEGER) : BOOLEAN,NEW,EXTENSIBLE;

END java_util_concurrent_atomic.