Browse Source

+ Android/JVM target, including a translation of the Android r14 SDK
(= Android 4.0) java headers: java.*, javax.*, org.*, junit.*, android.*).
The RTL can also be used to target earlier versions of the Android
platform, but you manually have to take care of not using APIs that
weren't available yet. Adding separate units for separate platform
versions would only partly solve the problem, because some of the
classes used inside the system unit have also changed across
versions.

Use -Tandroid while compiling to select the Android OS as target
platform.

git-svn-id: branches/jvmbackend@19830 -

Jonas Maebe 13 years ago
parent
commit
0d5b2b84a8

+ 7 - 0
.gitattributes

@@ -6948,6 +6948,13 @@ rtl/amiga/sysutils.pp svneol=native#text/plain
 rtl/amiga/timerd.inc svneol=native#text/plain
 rtl/amiga/tthread.inc svneol=native#text/plain
 rtl/amiga/varutils.pp svneol=native#text/plain
+rtl/android/jvm/Makefile svneol=native#text/plain
+rtl/android/jvm/Makefile.fpc svneol=native#text/plain
+rtl/android/jvm/androidr14.inc svneol=native#text/plain
+rtl/android/jvm/androidr14.pas svneol=native#text/plain
+rtl/android/jvm/java_sys_android.inc svneol=native#text/plain
+rtl/android/jvm/java_sysh_android.inc svneol=native#text/plain
+rtl/android/jvm/rtl.cfg svneol=native#text/plain
 rtl/arm/arm.inc svneol=native#text/plain
 rtl/arm/divide.inc svneol=native#text/plain
 rtl/arm/int64p.inc svneol=native#text/plain

+ 19 - 2
Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/12]
 #
 default: help
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java jvm-android
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -601,6 +601,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override TARGET_DIRS+=compiler rtl utils packages ide installer
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_DIRS+=compiler rtl utils packages ide installer
+endif
 override INSTALL_FPCPACKAGE=y
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
@@ -959,6 +962,12 @@ ASMEXT=.j
 SHAREDLIBEXT=.jar
 SHORTSUFFIX=java
 endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -2388,6 +2397,14 @@ TARGET_DIRS_PACKAGES=1
 TARGET_DIRS_IDE=1
 TARGET_DIRS_INSTALLER=1
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+TARGET_DIRS_COMPILER=1
+TARGET_DIRS_RTL=1
+TARGET_DIRS_UTILS=1
+TARGET_DIRS_PACKAGES=1
+TARGET_DIRS_IDE=1
+TARGET_DIRS_INSTALLER=1
+endif
 ifdef TARGET_DIRS_COMPILER
 compiler_all:
 	$(MAKE) -C compiler all

+ 32 - 2
compiler/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/12]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java jvm-android
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -653,6 +653,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override TARGET_DIRS+=utils
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_DIRS+=utils
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_PROGRAMS+=pp
 endif
@@ -845,6 +848,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override TARGET_PROGRAMS+=pp
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_PROGRAMS+=pp
+endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_INCLUDEDIR+=$(CPC_TARGET)
@@ -1038,6 +1044,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_INCLUDEDIR+=$(CPC_TARGET)
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_INCLUDEDIR+=$(CPC_TARGET)
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_UNITDIR+=$(COMPILERSOURCEDIR)
 endif
@@ -1230,6 +1239,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_UNITDIR+=$(COMPILERSOURCEDIR)
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_UNITDIR+=$(COMPILERSOURCEDIR)
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_TARGETDIR+=.
 endif
@@ -1422,6 +1434,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_TARGETDIR+=.
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_TARGETDIR+=.
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_UNITTARGETDIR+=$(CPU_UNITDIR)/units/$(FULL_TARGET)
 endif
@@ -1614,6 +1629,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_UNITTARGETDIR+=$(CPU_UNITDIR)/units/$(FULL_TARGET)
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_UNITTARGETDIR+=$(CPU_UNITDIR)/units/$(FULL_TARGET)
+endif
 ifdef REQUIRE_UNITSDIR
 override UNITSDIR+=$(REQUIRE_UNITSDIR)
 endif
@@ -1971,6 +1989,12 @@ ASMEXT=.j
 SHAREDLIBEXT=.jar
 SHORTSUFFIX=java
 endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -2588,6 +2612,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 REQUIRE_PACKAGES_RTL=1
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+endif
 ifdef REQUIRE_PACKAGES_RTL
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 ifneq ($(PACKAGEDIR_RTL),)
@@ -3402,6 +3429,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 TARGET_DIRS_UTILS=1
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+TARGET_DIRS_UTILS=1
+endif
 ifdef TARGET_DIRS_UTILS
 utils_all:
 	$(MAKE) -C utils all

+ 1 - 1
compiler/agjasmin.pas

@@ -1226,7 +1226,7 @@ implementation
          idtxt  : 'Jasmin';
          asmbin : 'java';
          asmcmd : '-jar $JASMINJAR $ASM -d $OBJDIR';
-         supported_targets : [system_jvm_java32];
+         supported_targets : [system_jvm_java32,system_jvm_android32];
          flags : [];
          labelprefix : 'L';
          comment : ' ; ';

+ 5 - 5
compiler/defcmp.pas

@@ -665,7 +665,7 @@ implementation
                      { ugly, but delphi allows it }
                      if cdo_explicit in cdoptions then
                        begin
-                         if target_info.system in [system_jvm_java32] then
+                         if target_info.system in systems_jvm then
                            begin
                              doconv:=tc_equal;
                              eq:=te_convert_l1;
@@ -687,7 +687,7 @@ implementation
                            typecasts must not be treated as integer-like
                            conversions
                          }
-                         if target_info.system in [system_jvm_java32] then
+                         if target_info.system in systems_jvm then
                            begin
                              doconv:=tc_equal;
                              eq:=te_convert_l1;
@@ -1049,7 +1049,7 @@ implementation
                      }
                      if (((cdo_explicit in cdoptions) and
                           ((m_delphi in current_settings.modeswitches) or
-                           (target_info.system in [system_jvm_java32])
+                           (target_info.system in systems_jvm)
                           )
                          ) or
                          (cdo_internal in cdoptions)
@@ -1059,7 +1059,7 @@ implementation
                            typecasts must not be treated as integer-like
                            conversions
                          }
-                         if target_info.system in [system_jvm_java32] then
+                         if target_info.system in systems_jvm then
                            begin
                              doconv:=tc_equal;
                              eq:=te_convert_l1;
@@ -1435,7 +1435,7 @@ implementation
                    { in Java enums /are/ class instances, and hence such
                      typecasts must not be treated as integer-like conversions
                    }
-                   else if ((not(target_info.system in [system_jvm_java32]) and
+                   else if ((not(target_info.system in systems_jvm) and
                         (def_from.typ=enumdef)) or
                        (def_from.typ=orddef)) and
                       (m_delphi in current_settings.modeswitches) and

+ 1 - 1
compiler/htypechk.pas

@@ -1253,7 +1253,7 @@ implementation
                  { typeconversions on the assignment side must keep
                    left.location the same }
                  if not(gotderef or
-                        ((target_info.system=system_jvm_java32) and
+                        ((target_info.system in systems_jvm) and
                          (gotsubscript or gotvec))) then
                    begin
                      ttypeconvnode(hp).assignment_side:=true;

+ 1 - 1
compiler/ncal.pas

@@ -1796,7 +1796,7 @@ implementation
                 selfdef:=tprocdef(procdefinition).struct;
               if (oo_has_vmt in tprocdef(procdefinition).struct.objectoptions) or
                  { all Java classes have a "VMT" }
-                 (target_info.system in [system_jvm_java32]) then
+                 (target_info.system in systems_jvm) then
                 begin
                   { we only need the vmt, loading self is not required and there is no
                     need to check for typen, because that will always get the

+ 1 - 1
compiler/ncgmem.pas

@@ -456,7 +456,7 @@ implementation
              location.reference.alignment:=vs.vardef.alignment;
            end
          else if is_java_class_or_interface(left.resultdef) or
-                 ((target_info.system=system_jvm_java32) and
+                 ((target_info.system in systems_jvm) and
                   (left.resultdef.typ=recorddef)) then
            begin
              if (location.loc<>LOC_REFERENCE) or

+ 12 - 2
compiler/options.pas

@@ -768,7 +768,7 @@ begin
                         break;
                       end;
                     'v' :
-                       If target_info.system=system_jvm_java32 then
+                       If target_info.system in systems_jvm then
                          If UnsetBool(More, j) then
                            exclude(init_settings.localswitches,cs_check_var_copyout)
                          Else
@@ -2313,7 +2313,8 @@ begin
     system_i386_nativent:
       // until these features are implemented, they are disabled in the compiler
       target_unsup_features:=[f_stackcheck];
-    system_jvm_java32:
+    system_jvm_java32,
+    system_jvm_android32:
       target_unsup_features:=[f_heap,f_textio,f_consoleio,f_fileio,
          f_variants,f_objects,f_threading,f_commandargs,
          f_processes,f_stackcheck,f_dynlibs,f_softfpu,f_objectivec1,f_resources];
@@ -2863,6 +2864,15 @@ if (target_info.system=system_arm_darwin) then
   end;
 {$endif arm}
 
+{$ifdef jvm}
+  { set default CPU type to Dalvik when targeting Android }
+  if target_info.system=system_jvm_android32 then
+    begin
+      if not option.CPUSetExplicitly then
+        init_settings.cputype:=cpu_dalvik;
+    end;
+{$endif jvm}
+
   { now we can define cpu and fpu type }
   def_system_macro('CPU'+Cputypestr[init_settings.cputype]);
 

+ 1 - 1
compiler/pdecobj.pas

@@ -421,7 +421,7 @@ implementation
             if hs<>'' then
               begin
                 { the JVM expects java/lang/Object rather than java.lang.Object }
-                if target_info.system=system_jvm_java32 then
+                if target_info.system in systems_jvm then
                   Replace(hs,'.','/');
                 stringdispose(od.import_lib);
                 od.import_lib:=stringdup(hs);

+ 1 - 1
compiler/pdecsub.pas

@@ -1800,7 +1800,7 @@ begin
           if Copy(hs,1,length(target_info.sharedlibprefix))<>target_info.sharedlibprefix then
             hs:=target_info.sharedlibprefix+hs;
           { the JVM expects java/lang/Object rather than java.lang.Object }
-          if target_info.system=system_jvm_java32 then
+          if target_info.system in systems_jvm then
             Replace(hs,'.','/');
           import_dll:=stringdup(hs);
           include(procoptions,po_has_importdll);

+ 1 - 1
compiler/pexpr.pas

@@ -2358,7 +2358,7 @@ implementation
                  if assigned(current_procinfo) and
                     assigned(current_structdef) and
                     ((current_structdef.typ=objectdef) or
-                     ((target_info.system=system_jvm_java32) and
+                     ((target_info.system in systems_jvm) and
                       (current_structdef.typ=recorddef)))then
                   begin
                     { for record helpers in mode Delphi "inherited" is not

+ 1 - 1
compiler/ptype.pas

@@ -978,7 +978,7 @@ implementation
          current_specializedef:=nil;
          { create recdef }
          if (n<>'') or
-            (target_info.system<>system_jvm_java32) then
+            not(target_info.system in systems_jvm) then
            begin
              recst:=trecordsymtable.create(n,current_settings.packrecords);
              { can't use recst.realname^ instead of n, because recst.realname is

+ 1 - 1
compiler/scandir.pas

@@ -1144,7 +1144,7 @@ unit scandir;
 
     procedure dir_varparacopyoutcheck;
       begin
-        if target_info.system<>system_jvm_java32 then
+        if not(target_info.system in systems_jvm) then
           begin
             Message1(scan_w_illegal_switch,pattern);
             exit;

+ 2 - 2
compiler/symcreat.pas

@@ -922,7 +922,7 @@ implementation
       sstate: tscannerstate;
     begin
       { only necessary for the JVM target currently }
-      if not (target_info.system in [system_jvm_java32]) then
+      if not (target_info.system in systems_jvm) then
         exit;
       replace_scanner('synthetic_impl',sstate);
       add_synthetic_method_implementations_for_st(st);
@@ -1163,7 +1163,7 @@ implementation
     begin
       { create a dummy typesym for the JVM target, because the record
         has to be wrapped by a class }
-      if (target_info.system=system_jvm_java32) and
+      if (target_info.system in systems_jvm) and
          (def.typ=recorddef) and
          not assigned(def.typesym) then
         begin

+ 3 - 3
compiler/symdef.pas

@@ -1697,7 +1697,7 @@ implementation
     function tstringdef.is_related(d: tdef): boolean;
       begin
         result:=
-          (target_info.system=system_jvm_java32) and
+          (target_info.system in systems_jvm) and
           (((stringtype in [st_unicodestring,st_widestring]) and
             ((d=java_jlobject) or
              (d=java_jlstring))) or
@@ -3312,7 +3312,7 @@ implementation
         { records are implemented via classes in the JVM target, and are
           all descendents of the java_fpcbaserecordtype class }
         is_related:=false;
-        if (target_info.system=system_jvm_java32) then
+        if (target_info.system in systems_jvm) then
           begin
             if d.typ=objectdef then
               begin
@@ -6537,7 +6537,7 @@ implementation
           assigned(def) and
           (((def.typ=objectdef) and
             (tobjectdef(def).objecttype in [odt_class,odt_interfacecom,odt_interfacecorba,odt_dispinterface,odt_objcclass,odt_objcprotocol,odt_helper,odt_javaclass,odt_interfacejava])) or
-           ((target_info.system=system_jvm_java32) and
+           ((target_info.system in systems_jvm) and
             (def.typ=recorddef)));
       end;
 

+ 2 - 1
compiler/systems.inc

@@ -148,7 +148,8 @@
              system_i386_nativent,      { 68 }
              system_i386_iphonesim,     { 69 }
              system_powerpc_wii,        { 70 }
-             system_jvm_java32          { 71 }
+             system_jvm_java32,         { 71 }
+             system_jvm_android32       { 72 }
        );
 
      type

+ 14 - 4
compiler/systems.pas

@@ -303,26 +303,36 @@ interface
 
        { all systems that use garbage collection for reference-counted types }
        systems_garbage_collected_managed_types = [
-         system_jvm_java32
+         system_jvm_java32,
+         system_jvm_android32
        ];
 
        { all systems that use a managed vm (-> no real pointers, internal VMT
          format, ...) }
        systems_managed_vm = [
-         system_jvm_java32
+         system_jvm_java32,
+         system_jvm_android32
+       ];
+
+       { all systems based on the JVM }
+       systems_jvm = [
+         system_jvm_java32,
+         system_jvm_android32
        ];
 
        { all systems where typed constants have to be translated into node
          trees that initialise the data instead of into data sections }
        systems_typed_constants_node_init = [
-         system_jvm_java32
+         system_jvm_java32,
+         system_jvm_android32
        ];
 
        { all systems that don't use a built-in framepointer for accessing nested
          variables, but emulate it by wrapping nested variables in records
          whose address is passed around }
        systems_fpnestedstruct = [
-         system_jvm_java32
+         system_jvm_java32,
+         system_jvm_android32
        ];
 
        cpu2str : array[TSystemCpu] of string[10] =

+ 65 - 0
compiler/systems/i_jvm.pas

@@ -108,6 +108,71 @@ unit i_jvm;
             abi          : abi_default;
           );
 
+
+       system_jvm_android32_info : tsysteminfo =
+          (
+            system       : system_jvm_android32;
+            name         : 'Android via JVM';
+            shortname    : 'android';
+            flags        : [tf_files_case_sensitive,tf_no_generic_stackcheck,
+                            { avoid the creation of threadvar tables }
+                            tf_section_threadvars];
+            cpu          : cpu_jvm;
+            unit_env     : '';
+            extradefines : '';
+            exeext       : '';
+            defext       : '.def';
+            scriptext    : '.sh';
+            smartext     : '.sl';
+            unitext      : '.ppu';
+            unitlibext   : '.ppl';
+            asmext       : '.j';
+            objext       : '.class';
+            resext       : '';
+            resobjext    : '.jar';
+            sharedlibext : '.jar';
+            staticlibext : '.jar';
+            staticlibprefix : '';
+            sharedlibprefix : '';
+            sharedClibext : '.jar';
+            staticClibext : '.jar';
+            staticClibprefix : '';
+            sharedClibprefix : '';
+            importlibprefix : '';
+            importlibext : '.jar';
+            Cprefix      : '';
+            newline      : #10;
+            dirsep       : '/';
+            assem        : as_jvm_jasmin;
+            assemextern  : as_jvm_jasmin;
+            link         : nil;
+            linkextern   : nil;
+            ar           : ar_none;
+            res          : res_jvm_raw;
+            dbg          : dbg_jasmin;
+            script       : script_unix;
+            endian       : endian_big;
+            alignment    :
+              (
+                procalign       : 4;
+                loopalign       : 4;
+                jumpalign       : 0;
+                constalignmin   : 0;
+                constalignmax   : 4;
+                varalignmin     : 4;
+                varalignmax     : 4;
+                localalignmin   : 4;
+                localalignmax   : 4;
+                recordalignmin  : 0;
+                recordalignmax  : 2;
+                maxCrecordalign : 4
+              );
+            first_parm_offset : 0;
+            stacksize   : 262144;
+            abi          : abi_default;
+          );
+
+
   implementation
 
 end.

+ 6 - 0
compiler/systems/t_jvm.pas

@@ -99,5 +99,11 @@ initialization
   RegisterExport(system_jvm_java32,texportlibjvm);
   RegisterTarget(system_jvm_java32_info);
 
+
+  RegisterExternalLinker(system_jvm_android32_info, tlinkerjvm);
+  RegisterImport(system_jvm_android32,timportlibjvm);
+  RegisterExport(system_jvm_android32,texportlibjvm);
+  RegisterTarget(system_jvm_android32_info);
+
   RegisterRes(res_jvmraw_info,TJVMRawResourceFile);
 end.

+ 23 - 2
compiler/utils/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/12]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java jvm-android
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -486,6 +486,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_PROGRAMS+=fpc ppufiles ppudump ppumove fpcsubst mkarmins mkx86ins
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override CLEAN_UNITS+=ppu crc usubst
 endif
@@ -678,6 +681,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override CLEAN_UNITS+=ppu crc usubst
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override CLEAN_UNITS+=ppu crc usubst
+endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_UNITDIR+=..
@@ -871,6 +877,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_UNITDIR+=..
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_UNITDIR+=..
+endif
 ifeq ($(FULL_TARGET),i386-linux)
 override COMPILER_SOURCEDIR+=..
 endif
@@ -1063,6 +1072,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override COMPILER_SOURCEDIR+=..
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_SOURCEDIR+=..
+endif
 override SHARED_BUILD=n
 override SHARED_BUILD=n
 ifdef REQUIRE_UNITSDIR
@@ -1422,6 +1434,12 @@ ASMEXT=.j
 SHAREDLIBEXT=.jar
 SHORTSUFFIX=java
 endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -2039,6 +2057,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 REQUIRE_PACKAGES_RTL=1
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+endif
 ifdef REQUIRE_PACKAGES_RTL
 PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
 ifneq ($(PACKAGEDIR_RTL),)

+ 2 - 1
compiler/utils/ppudump.pp

@@ -148,7 +148,8 @@ const
   { 68 }  'NativeNT-i386',
   { 69 }  'iPhoneSim-i386',
   { 70 }  'Wii-powerpc',
-  { 71 }  'Java-JVM'
+  { 71 }  'Java-JVM',
+  { 72 }  'Android-JVM'
   );
 
 const

+ 4 - 2
packages/fpmkunit/src/fpmkunit.pp

@@ -69,7 +69,8 @@ Type
     linux,go32v2,win32,os2,freebsd,beos,netbsd,
     amiga,atari, solaris, qnx, netware, openbsd,wdosx,
     palmos,macos,darwin,emx,watcom,morphos,netwlibc,
-    win64,wince,gba,nds,embedded,symbian,haiku,iphonesim,java
+    win64,wince,gba,nds,embedded,symbian,haiku,iphonesim,
+    java,android
   );
   TOSes = Set of TOS;
 
@@ -155,7 +156,8 @@ Const
     { symbian } ( false, true,  false, false, false, false, true,  false, false, false, false),
     { haiku }   ( false, true,  false, false, false, false, false, false, false, false, false),
     { iphonesim}( false, true,  false, false, false, false, false, false, false, false, false),
-    { java }    ( false, false, false, false, false, false, false, false, false, false, true )
+    { java }    ( false, false, false, false, false, false, false, false, false, false, true ),
+    { android } ( false, false, false, false, false, false, false, false, false, false, true )
 
   );
 

+ 59 - 2
rtl/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/12]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java jvm-android
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx haiku
 LIMIT83fs = go32v2 os2 emx watcom
@@ -470,6 +470,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 override TARGET_DIRS+=java
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_DIRS+=android/jvm
+endif
 override INSTALL_FPCPACKAGE=y
 override INSTALL_CREATEPACKAGEFPC=y
 ifdef REQUIRE_UNITSDIR
@@ -829,6 +832,12 @@ ASMEXT=.j
 SHAREDLIBEXT=.jar
 SHORTSUFFIX=java
 endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
 else
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
@@ -1920,6 +1929,9 @@ endif
 ifeq ($(FULL_TARGET),jvm-java)
 TARGET_DIRS_JAVA=1
 endif
+ifeq ($(FULL_TARGET),jvm-android)
+TARGET_DIRS_ANDROID/JVM=1
+endif
 ifdef TARGET_DIRS_LINUX
 linux_all:
 	$(MAKE) -C linux all
@@ -3090,6 +3102,51 @@ java:
 	$(MAKE) -C java all
 .PHONY: java_all java_debug java_smart java_release java_units java_examples java_shared java_install java_sourceinstall java_exampleinstall java_distinstall java_zipinstall java_zipsourceinstall java_zipexampleinstall java_zipdistinstall java_clean java_distclean java_cleanall java_info java_makefiles java
 endif
+ifdef TARGET_DIRS_ANDROID/JVM
+android/jvm_all:
+	$(MAKE) -C android/jvm all
+android/jvm_debug:
+	$(MAKE) -C android/jvm debug
+android/jvm_smart:
+	$(MAKE) -C android/jvm smart
+android/jvm_release:
+	$(MAKE) -C android/jvm release
+android/jvm_units:
+	$(MAKE) -C android/jvm units
+android/jvm_examples:
+	$(MAKE) -C android/jvm examples
+android/jvm_shared:
+	$(MAKE) -C android/jvm shared
+android/jvm_install:
+	$(MAKE) -C android/jvm install
+android/jvm_sourceinstall:
+	$(MAKE) -C android/jvm sourceinstall
+android/jvm_exampleinstall:
+	$(MAKE) -C android/jvm exampleinstall
+android/jvm_distinstall:
+	$(MAKE) -C android/jvm distinstall
+android/jvm_zipinstall:
+	$(MAKE) -C android/jvm zipinstall
+android/jvm_zipsourceinstall:
+	$(MAKE) -C android/jvm zipsourceinstall
+android/jvm_zipexampleinstall:
+	$(MAKE) -C android/jvm zipexampleinstall
+android/jvm_zipdistinstall:
+	$(MAKE) -C android/jvm zipdistinstall
+android/jvm_clean:
+	$(MAKE) -C android/jvm clean
+android/jvm_distclean:
+	$(MAKE) -C android/jvm distclean
+android/jvm_cleanall:
+	$(MAKE) -C android/jvm cleanall
+android/jvm_info:
+	$(MAKE) -C android/jvm info
+android/jvm_makefiles:
+	$(MAKE) -C android/jvm makefiles
+android/jvm:
+	$(MAKE) -C android/jvm all
+.PHONY: android/jvm_all android/jvm_debug android/jvm_smart android/jvm_release android/jvm_units android/jvm_examples android/jvm_shared android/jvm_install android/jvm_sourceinstall android/jvm_exampleinstall android/jvm_distinstall android/jvm_zipinstall android/jvm_zipsourceinstall android/jvm_zipexampleinstall android/jvm_zipdistinstall android/jvm_clean android/jvm_distclean android/jvm_cleanall android/jvm_info android/jvm_makefiles android/jvm
+endif
 all: $(addsuffix _all,$(TARGET_DIRS))
 debug: $(addsuffix _debug,$(TARGET_DIRS))
 smart: $(addsuffix _smart,$(TARGET_DIRS))

+ 1 - 0
rtl/Makefile.fpc

@@ -35,6 +35,7 @@ dirs_embedded=embedded
 dirs_nativent=nativent
 dirs_wii=wii
 dirs_java=java
+dirs_jvm_android=android/jvm
 
 [install]
 fpcpackage=y

+ 2246 - 0
rtl/android/jvm/Makefile

@@ -0,0 +1,2246 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2011/12/12]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-solaris x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded mipsel-linux jvm-java jvm-android
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx haiku
+LIMIT83fs = go32v2 os2 emx watcom
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override OS_TARGET_DEFAULT=android
+override DEFAULT_FPCDIR=../../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifneq ($(words $(FPC_COMPILERINFO)),5)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+override PACKAGE_NAME=rtl
+PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+RTL=../..
+INC=$(RTL)/inc
+COMMON=$(RTL)/common
+PROCINC=$(RTL)/$(CPU_TARGET)
+UNITPREFIX=rtl
+SYSTEMUNIT=system
+override [email protected]
+ifdef RELEASE
+override FPCOPT+=-Ur
+endif
+CPU_UNITS=
+SYSINIT_UNITS=
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_UNITS+=$(SYSTEMUNIT) uuchar objpas androidr14
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) ../../java
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) ../../java
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH) ../../java
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH) ../../java
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+else
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.sl2
+STATICLIBPREFIX=
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),atari)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),win32)
+ifeq ($(CROSSBINDIR),)
+ASNAME=asw
+LDNAME=ldw
+ARNAME=arw
+endif
+endif
+endif
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+PPAS=ppas$(SRCBATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-Aas
+endif
+endif
+ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifneq ($(findstring $(OS_TARGET),linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+.PHONY: fpc_units
+ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
+override ALLTARGET+=fpc_units
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
+override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
+override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+endif
+fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
+$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
+	@$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_all: $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+fpc_release:
+	$(MAKE) all RELEASE=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
+$(COMPILER_UNITTARGETDIR):
+	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
+$(COMPILER_TARGETDIR):
+	$(MKDIRTREE) $(COMPILER_TARGETDIR)
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.lpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.dpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%.res: %.rc
+	windres -i $< -o $@
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.inc $(COMPILER_INCLUDEDIR)
+vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_shared
+override INSTALLTARGET+=fpc_shared_install
+ifndef SHARED_LIBVERSION
+SHARED_LIBVERSION=$(FPC_VERSION)
+endif
+ifndef SHARED_LIBNAME
+SHARED_LIBNAME=$(PACKAGE_NAME)
+endif
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
+endif
+ifndef SHARED_LIBUNITS
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
+endif
+fpc_shared:
+ifdef HASSHAREDLIB
+	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
+else
+	@$(ECHO) Shared Libraries not supported
+endif
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+ifdef UPXPROG
+	-$(UPXPROG) $(INSTALLEXEFILES)
+endif
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Upx....... $(UPXPROG)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall:
+zipinstall:
+zipsourceinstall:
+zipexampleinstall:
+zipdistinstall:
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:
+include $(INC)/makefile.inc
+SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
+include $(PROCINC)/makefile.cpu
+SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+$(SYSTEMUNIT)$(PPUEXT) : $(RTL)/java/$(SYSTEMUNIT).pp $(SYSDEPS)
+	$(COMPILER) -Us -Sg $(RTL)/java/$(SYSTEMUNIT).pp $(REDIR)
+uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
+objpas$(PPUEXT): $(RTL)/java/objpas.pp
+	$(COMPILER) $(RTL)/java/objpas.pp $(REDIR)
+strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
+		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
+		   $(SYSTEMUNIT)$(PPUEXT)
+androidr14$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) androidr14.pas androidr14.inc
+dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
+	       $(SYSTEMUNIT)$(PPUEXT)
+objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+		    objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
+	$(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+		   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT)
+	$(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
+	$(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
+math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
+varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
+		    $(OBJPASDIR)/varutilh.inc varutils.pp
+	$(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
+fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/types.pp
+rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
+	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) $(OBJPASDIR)/sysconst.pp
+dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
+	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
+macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
+	$(COMPILER) $(INC)/macpas.pp $(REDIR)
+ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
+charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)

+ 160 - 0
rtl/android/jvm/Makefile.fpc

@@ -0,0 +1,160 @@
+#
+#   Makefile.fpc for Free Pascal Android/JVM (Dalvik) RTL
+#
+
+[package]
+main=rtl
+
+[target]
+loaders=
+units=$(SYSTEMUNIT) uuchar objpas androidr14
+
+[require]
+nortl=y
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../../..
+target=android
+
+[compiler]
+includedir=$(INC) $(PROCINC)
+includedir_jvm=../../java
+sourcedir=$(INC) $(PROCINC) $(COMMON) $(ARCH)
+sourcedir_jvm=../../java
+
+[prerules]
+RTL=../..
+INC=$(RTL)/inc
+COMMON=$(RTL)/common
+PROCINC=$(RTL)/$(CPU_TARGET)
+UNITPREFIX=rtl
+SYSTEMUNIT=system
+override [email protected]
+
+ifdef RELEASE
+override FPCOPT+=-Ur
+endif
+
+CPU_UNITS=
+SYSINIT_UNITS=
+
+[rules]
+.NOTPARALLEL:
+# Get the system independent include file names.
+# This will set the following variables :
+# SYSINCNAMES
+include $(INC)/makefile.inc
+SYSINCDEPS=$(addprefix $(INC)/,$(SYSINCNAMES))
+
+# Get the processor dependent include file names.
+# This will set the following variables :
+# CPUINCNAMES
+include $(PROCINC)/makefile.cpu
+SYSCPUDEPS=$(addprefix $(PROCINC)/,$(CPUINCNAMES))
+
+# Put system unit dependencies together.
+SYSDEPS=$(SYSINCDEPS) $(SYSCPUDEPS)
+
+
+#
+# Base Units (System, strings, os-dependent-base-unit)
+#
+
+$(SYSTEMUNIT)$(PPUEXT) : $(RTL)/java/$(SYSTEMUNIT).pp $(SYSDEPS)
+        $(COMPILER) -Us -Sg $(RTL)/java/$(SYSTEMUNIT).pp $(REDIR)
+
+uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
+
+objpas$(PPUEXT): $(RTL)/java/objpas.pp
+        $(COMPILER) $(RTL)/java/objpas.pp $(REDIR)
+
+strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc \
+                   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc \
+                   $(SYSTEMUNIT)$(PPUEXT)
+
+androidr14$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) objpas$(PPUEXT) androidr14.pas androidr14.inc
+
+#
+# System Dependent Units
+#
+
+#ports$(PPUEXT) : ports.pas objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+
+#doscalls$(PPUEXT) : doscalls.pas strings$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+
+#
+# TP7 Compatible RTL Units
+#
+
+dos$(PPUEXT) : dos.pp $(INC)/filerec.inc $(INC)/textrec.inc strings$(PPUEXT) \
+               $(SYSTEMUNIT)$(PPUEXT)
+
+#crt$(PPUEXT) : crt.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
+
+objects$(PPUEXT) : $(INC)/objects.pp dos$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+
+#printer$(PPUEXT) : printer.pas $(INC)/textrec.inc $(SYSTEMUNIT)$(PPUEXT)
+
+#graph$(PPUEXT) : graph.pp
+
+#
+# Delphi Compatible Units
+#
+
+sysutils$(PPUEXT) : sysutils.pp $(wildcard $(OBJPASDIR)/sysutils/*.inc) \
+                    objpas$(PPUEXT) dos$(PPUEXT) sysconst$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR)/sysutils sysutils.pp
+
+classes$(PPUEXT) : classes.pp $(wildcard $(OBJPASDIR)/classes/*.inc) \
+                   sysutils$(PPUEXT) typinfo$(PPUEXT) rtlconsts$(PPUEXT) types$(PPUEXT)
+        $(COMPILER) -Fi$(OBJPASDIR)/classes classes.pp
+
+typinfo$(PPUEXT): $(OBJPASDIR)/typinfo.pp objpas$(PPUEXT)
+        $(COMPILER) -Sg $(OBJPASDIR)/typinfo.pp $(REDIR)
+
+math$(PPUEXT): $(OBJPASDIR)/math.pp objpas$(PPUEXT) sysutils$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/math.pp $(REDIR)
+
+varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
+                    $(OBJPASDIR)/varutilh.inc varutils.pp
+        $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
+
+fmtbcd$(PPUEXT) : $(OBJPASDIR)/fmtbcd.pp objpas$(PPUEXT) sysutils$(PPUEXT) variants$(PPUEXT) classes$(PPUEXT) system$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/fmtbcd.pp
+
+types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/types.pp
+
+rtlconsts$(PPUEXT) : $(OBJPASDIR)/rtlconsts.pp
+        $(COMPILER) $(OBJPASDIR)/rtlconsts.pp
+
+sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) $(OBJPASDIR)/sysconst.pp
+
+dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp
+        $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/dateutil.pp
+
+#
+# Mac Pascal Model
+#
+
+macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
+        $(COMPILER) $(INC)/macpas.pp $(REDIR)
+
+#
+# Other system-independent RTL Units
+#
+
+ucomplex$(PPUEXT): $(INC)/ucomplex.pp math$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
+
+getopts$(PPUEXT) : $(INC)/getopts.pp $(SYSTEMUNIT)$(PPUEXT)
+
+heaptrc$(PPUEXT) : $(INC)/heaptrc.pp $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) -Sg $(INC)/heaptrc.pp $(REDIR)
+
+#lineinfo$(PPUEXT) : $(INC)/lineinfo.pp $(SYSTEMUNIT)$(PPUEXT)
+
+charset$(PPUEXT) : $(INC)/charset.pp $(SYSTEMUNIT)$(PPUEXT)

File diff suppressed because it is too large
+ 10499 - 0
rtl/android/jvm/androidr14.inc


+ 12062 - 0
rtl/android/jvm/androidr14.pas

@@ -0,0 +1,12062 @@
+{ Imports for Java packages/classes: android., java., javax., junit., org. }
+unit androidr14;
+{$mode delphi}
+
+interface
+
+type
+  ARElement = class;
+  Arr1ARElement = array of ARElement;
+  Arr2ARElement = array of Arr1ARElement;
+  Arr3ARElement = array of Arr2ARElement;
+
+  AVAAlphaAnimation = class;
+  Arr1AVAAlphaAnimation = array of AVAAlphaAnimation;
+  Arr2AVAAlphaAnimation = array of Arr1AVAAlphaAnimation;
+  Arr3AVAAlphaAnimation = array of Arr2AVAAlphaAnimation;
+
+  AWWebView = class;
+  Arr1AWWebView = array of AWWebView;
+  Arr2AWWebView = array of Arr1AWWebView;
+  Arr3AWWebView = array of Arr2AWWebView;
+
+  ABBluetoothHealthAppConfiguration = class;
+  Arr1ABBluetoothHealthAppConfiguration = array of ABBluetoothHealthAppConfiguration;
+  Arr2ABBluetoothHealthAppConfiguration = array of Arr1ABBluetoothHealthAppConfiguration;
+  Arr3ABBluetoothHealthAppConfiguration = array of Arr2ABBluetoothHealthAppConfiguration;
+
+  AWWebViewFragment = class;
+  Arr1AWWebViewFragment = array of AWWebViewFragment;
+  Arr2AWWebViewFragment = array of Arr1AWWebViewFragment;
+  Arr3AWWebViewFragment = array of Arr2AWWebViewFragment;
+
+  ACPPackageManager = class;
+  Arr1ACPPackageManager = array of ACPPackageManager;
+  Arr2ACPPackageManager = array of Arr1ACPPackageManager;
+  Arr3ACPPackageManager = array of Arr2ACPPackageManager;
+
+  JUStringTokenizer = class;
+  Arr1JUStringTokenizer = array of JUStringTokenizer;
+  Arr2JUStringTokenizer = array of Arr1JUStringTokenizer;
+  Arr3JUStringTokenizer = array of Arr2JUStringTokenizer;
+
+  AVAAccessibilityEvent = class;
+  Arr1AVAAccessibilityEvent = array of AVAAccessibilityEvent;
+  Arr2AVAAccessibilityEvent = array of Arr1AVAAccessibilityEvent;
+  Arr3AVAAccessibilityEvent = array of Arr2AVAAccessibilityEvent;
+
+  OAHUnsupportedHttpVersionException = class;
+  Arr1OAHUnsupportedHttpVersionException = array of OAHUnsupportedHttpVersionException;
+  Arr2OAHUnsupportedHttpVersionException = array of Arr1OAHUnsupportedHttpVersionException;
+  Arr3OAHUnsupportedHttpVersionException = array of Arr2OAHUnsupportedHttpVersionException;
+
+  AMRemoteControlClient = class;
+  Arr1AMRemoteControlClient = array of AMRemoteControlClient;
+  Arr2AMRemoteControlClient = array of Arr1AMRemoteControlClient;
+  Arr3AMRemoteControlClient = array of Arr2AMRemoteControlClient;
+
+  JNCUnsupportedAddressTypeException = class;
+  Arr1JNCUnsupportedAddressTypeException = array of JNCUnsupportedAddressTypeException;
+  Arr2JNCUnsupportedAddressTypeException = array of Arr1JNCUnsupportedAddressTypeException;
+  Arr3JNCUnsupportedAddressTypeException = array of Arr2JNCUnsupportedAddressTypeException;
+
+  OAHEFileEntity = class;
+  Arr1OAHEFileEntity = array of OAHEFileEntity;
+  Arr2OAHEFileEntity = array of Arr1OAHEFileEntity;
+  Arr3OAHEFileEntity = array of Arr2OAHEFileEntity;
+
+  ATHtml = class;
+  Arr1ATHtml = array of ATHtml;
+  Arr2ATHtml = array of Arr1ATHtml;
+  Arr3ATHtml = array of Arr2ATHtml;
+
+  JSProtectionDomain = class;
+  Arr1JSProtectionDomain = array of JSProtectionDomain;
+  Arr2JSProtectionDomain = array of Arr1JSProtectionDomain;
+  Arr3JSProtectionDomain = array of Arr2JSProtectionDomain;
+
+  JUCAAtomicLongArray = class;
+  Arr1JUCAAtomicLongArray = array of JUCAAtomicLongArray;
+  Arr2JUCAAtomicLongArray = array of Arr1JUCAAtomicLongArray;
+  Arr3JUCAAtomicLongArray = array of Arr2JUCAAtomicLongArray;
+
+  AUDebugUtils = class;
+  Arr1AUDebugUtils = array of AUDebugUtils;
+  Arr2AUDebugUtils = array of Arr1AUDebugUtils;
+  Arr3AUDebugUtils = array of Arr2AUDebugUtils;
+
+  ARProgramFragmentFixedFunction = class;
+  Arr1ARProgramFragmentFixedFunction = array of ARProgramFragmentFixedFunction;
+  Arr2ARProgramFragmentFixedFunction = array of Arr1ARProgramFragmentFixedFunction;
+  Arr3ARProgramFragmentFixedFunction = array of Arr2ARProgramFragmentFixedFunction;
+
+  JNCacheResponse = class;
+  Arr1JNCacheResponse = array of JNCacheResponse;
+  Arr2JNCacheResponse = array of Arr1JNCacheResponse;
+  Arr3JNCacheResponse = array of Arr2JNCacheResponse;
+
+  JUCLinkedBlockingQueue = class;
+  Arr1JUCLinkedBlockingQueue = array of JUCLinkedBlockingQueue;
+  Arr2JUCLinkedBlockingQueue = array of Arr1JUCLinkedBlockingQueue;
+  Arr3JUCLinkedBlockingQueue = array of Arr2JUCLinkedBlockingQueue;
+
+  ATNeighboringCellInfo = class;
+  Arr1ATNeighboringCellInfo = array of ATNeighboringCellInfo;
+  Arr2ATNeighboringCellInfo = array of Arr1ATNeighboringCellInfo;
+  Arr3ATNeighboringCellInfo = array of Arr2ATNeighboringCellInfo;
+
+  AGBitmapShader = class;
+  Arr1AGBitmapShader = array of AGBitmapShader;
+  Arr2AGBitmapShader = array of Arr1AGBitmapShader;
+  Arr3AGBitmapShader = array of Arr2AGBitmapShader;
+
+  AGPrediction = class;
+  Arr1AGPrediction = array of AGPrediction;
+  Arr2AGPrediction = array of Arr1AGPrediction;
+  Arr3AGPrediction = array of Arr2AGPrediction;
+
+  JXVTypeInfoProvider = class;
+  Arr1JXVTypeInfoProvider = array of JXVTypeInfoProvider;
+  Arr2JXVTypeInfoProvider = array of Arr1JXVTypeInfoProvider;
+  Arr3JXVTypeInfoProvider = array of Arr2JXVTypeInfoProvider;
+
+  JSSInvalidKeySpecException = class;
+  Arr1JSSInvalidKeySpecException = array of JSSInvalidKeySpecException;
+  Arr2JSSInvalidKeySpecException = array of Arr1JSSInvalidKeySpecException;
+  Arr3JSSInvalidKeySpecException = array of Arr2JSSInvalidKeySpecException;
+
+  AGPorterDuffColorFilter = class;
+  Arr1AGPorterDuffColorFilter = array of AGPorterDuffColorFilter;
+  Arr2AGPorterDuffColorFilter = array of Arr1AGPorterDuffColorFilter;
+  Arr3AGPorterDuffColorFilter = array of Arr2AGPorterDuffColorFilter;
+
+  OAHICRFC2965SpecFactory = class;
+  Arr1OAHICRFC2965SpecFactory = array of OAHICRFC2965SpecFactory;
+  Arr2OAHICRFC2965SpecFactory = array of Arr1OAHICRFC2965SpecFactory;
+  Arr3OAHICRFC2965SpecFactory = array of Arr2OAHICRFC2965SpecFactory;
+
+  AHUUsbDeviceConnection = class;
+  Arr1AHUUsbDeviceConnection = array of AHUUsbDeviceConnection;
+  Arr2AHUUsbDeviceConnection = array of Arr1AHUUsbDeviceConnection;
+  Arr3AHUUsbDeviceConnection = array of Arr2AHUUsbDeviceConnection;
+
+  AWWebSettings = class;
+  Arr1AWWebSettings = array of AWWebSettings;
+  Arr2AWWebSettings = array of Arr1AWWebSettings;
+  Arr3AWWebSettings = array of Arr2AWWebSettings;
+
+  ATTextUtils = class;
+  Arr1ATTextUtils = array of ATTextUtils;
+  Arr2ATTextUtils = array of Arr1ATTextUtils;
+  Arr3ATTextUtils = array of Arr2ATTextUtils;
+
+  AAAccessibilityServiceInfo = class;
+  Arr1AAAccessibilityServiceInfo = array of AAAccessibilityServiceInfo;
+  Arr2AAAccessibilityServiceInfo = array of Arr1AAAccessibilityServiceInfo;
+  Arr3AAAccessibilityServiceInfo = array of Arr2AAAccessibilityServiceInfo;
+
+  JNMulticastSocket = class;
+  Arr1JNMulticastSocket = array of JNMulticastSocket;
+  Arr2JNMulticastSocket = array of Arr1JNMulticastSocket;
+  Arr3JNMulticastSocket = array of Arr2JNMulticastSocket;
+
+  ATMTimeKeyListener = class;
+  Arr1ATMTimeKeyListener = array of ATMTimeKeyListener;
+  Arr2ATMTimeKeyListener = array of Arr1ATMTimeKeyListener;
+  Arr3ATMTimeKeyListener = array of Arr2ATMTimeKeyListener;
+
+  AVALinearInterpolator = class;
+  Arr1AVALinearInterpolator = array of AVALinearInterpolator;
+  Arr2AVALinearInterpolator = array of Arr1AVALinearInterpolator;
+  Arr3AVALinearInterpolator = array of Arr2AVALinearInterpolator;
+
+  AGGestureStore = class;
+  Arr1AGGestureStore = array of AGGestureStore;
+  Arr2AGGestureStore = array of Arr1AGGestureStore;
+  Arr3AGGestureStore = array of Arr2AGGestureStore;
+
+  JULFileHandler = class;
+  Arr1JULFileHandler = array of JULFileHandler;
+  Arr2JULFileHandler = array of Arr1JULFileHandler;
+  Arr3JULFileHandler = array of Arr2JULFileHandler;
+
+  OAHCUCloneUtils = class;
+  Arr1OAHCUCloneUtils = array of OAHCUCloneUtils;
+  Arr2OAHCUCloneUtils = array of Arr1OAHCUCloneUtils;
+  Arr3OAHCUCloneUtils = array of Arr2OAHCUCloneUtils;
+
+  JUUUID = class;
+  Arr1JUUUID = array of JUUUID;
+  Arr2JUUUID = array of Arr1JUUUID;
+  Arr3JUUUID = array of Arr2JUUUID;
+
+  ACIntentFilter = class;
+  Arr1ACIntentFilter = array of ACIntentFilter;
+  Arr2ACIntentFilter = array of Arr1ACIntentFilter;
+  Arr3ACIntentFilter = array of Arr2ACIntentFilter;
+
+  OAHCPClientContextConfigurer = class;
+  Arr1OAHCPClientContextConfigurer = array of OAHCPClientContextConfigurer;
+  Arr2OAHCPClientContextConfigurer = array of Arr1OAHCPClientContextConfigurer;
+  Arr3OAHCPClientContextConfigurer = array of Arr2OAHCPClientContextConfigurer;
+
+  AVABounceInterpolator = class;
+  Arr1AVABounceInterpolator = array of AVABounceInterpolator;
+  Arr2AVABounceInterpolator = array of Arr1AVABounceInterpolator;
+  Arr3AVABounceInterpolator = array of Arr2AVABounceInterpolator;
+
+  JXTDDOMSource = class;
+  Arr1JXTDDOMSource = array of JXTDDOMSource;
+  Arr2JXTDDOMSource = array of Arr1JXTDDOMSource;
+  Arr3JXTDDOMSource = array of Arr2JXTDDOMSource;
+
+  APPreferenceManager = class;
+  Arr1APPreferenceManager = array of APPreferenceManager;
+  Arr2APPreferenceManager = array of Arr1APPreferenceManager;
+  Arr3APPreferenceManager = array of Arr2APPreferenceManager;
+
+  AMFaceDetector = class;
+  Arr1AMFaceDetector = array of AMFaceDetector;
+  Arr2AMFaceDetector = array of Arr1AMFaceDetector;
+  Arr3AMFaceDetector = array of Arr2AMFaceDetector;
+
+  OAHICDefaultClientConnectionOperator = class;
+  Arr1OAHICDefaultClientConnectionOperator = array of OAHICDefaultClientConnectionOperator;
+  Arr2OAHICDefaultClientConnectionOperator = array of Arr1OAHICDefaultClientConnectionOperator;
+  Arr3OAHICDefaultClientConnectionOperator = array of Arr2OAHICDefaultClientConnectionOperator;
+
+  JUUnknownFormatFlagsException = class;
+  Arr1JUUnknownFormatFlagsException = array of JUUnknownFormatFlagsException;
+  Arr2JUUnknownFormatFlagsException = array of Arr1JUUnknownFormatFlagsException;
+  Arr3JUUnknownFormatFlagsException = array of Arr2JUUnknownFormatFlagsException;
+
+  AGDClipDrawable = class;
+  Arr1AGDClipDrawable = array of AGDClipDrawable;
+  Arr2AGDClipDrawable = array of Arr1AGDClipDrawable;
+  Arr3AGDClipDrawable = array of Arr2AGDClipDrawable;
+
+  ANWWifiConfiguration = class;
+  Arr1ANWWifiConfiguration = array of ANWWifiConfiguration;
+  Arr2ANWWifiConfiguration = array of Arr1ANWWifiConfiguration;
+  Arr3ANWWifiConfiguration = array of Arr2ANWWifiConfiguration;
+
+  JURPattern = class;
+  Arr1JURPattern = array of JURPattern;
+  Arr2JURPattern = array of Arr1JURPattern;
+  Arr3JURPattern = array of Arr2JURPattern;
+
+  AWRemoteViewsService = class;
+  Arr1AWRemoteViewsService = array of AWRemoteViewsService;
+  Arr2AWRemoteViewsService = array of Arr1AWRemoteViewsService;
+  Arr3AWRemoteViewsService = array of Arr2AWRemoteViewsService;
+
+  JLThreadGroup = class;
+  Arr1JLThreadGroup = array of JLThreadGroup;
+  Arr2JLThreadGroup = array of Arr1JLThreadGroup;
+  Arr3JLThreadGroup = array of Arr2JLThreadGroup;
+
+  OAHIHttpConnectionMetricsImpl = class;
+  Arr1OAHIHttpConnectionMetricsImpl = array of OAHIHttpConnectionMetricsImpl;
+  Arr2OAHIHttpConnectionMetricsImpl = array of Arr1OAHIHttpConnectionMetricsImpl;
+  Arr3OAHIHttpConnectionMetricsImpl = array of Arr2OAHIHttpConnectionMetricsImpl;
+
+  AWWebResourceResponse = class;
+  Arr1AWWebResourceResponse = array of AWWebResourceResponse;
+  Arr2AWWebResourceResponse = array of Arr1AWWebResourceResponse;
+  Arr3AWWebResourceResponse = array of Arr2AWWebResourceResponse;
+
+  AGAvoidXfermode = class;
+  Arr1AGAvoidXfermode = array of AGAvoidXfermode;
+  Arr2AGAvoidXfermode = array of Arr1AGAvoidXfermode;
+  Arr3AGAvoidXfermode = array of Arr2AGAvoidXfermode;
+
+  ADObservable = class;
+  Arr1ADObservable = array of ADObservable;
+  Arr2ADObservable = array of Arr1ADObservable;
+  Arr3ADObservable = array of Arr2ADObservable;
+
+  OAHEBufferedHttpEntity = class;
+  Arr1OAHEBufferedHttpEntity = array of OAHEBufferedHttpEntity;
+  Arr2OAHEBufferedHttpEntity = array of Arr1OAHEBufferedHttpEntity;
+  Arr3OAHEBufferedHttpEntity = array of Arr2OAHEBufferedHttpEntity;
+
+  ATMDateKeyListener = class;
+  Arr1ATMDateKeyListener = array of ATMDateKeyListener;
+  Arr2ATMDateKeyListener = array of Arr1ATMDateKeyListener;
+  Arr3ATMDateKeyListener = array of Arr2ATMDateKeyListener;
+
+  AMMtpObjectInfo = class;
+  Arr1AMMtpObjectInfo = array of AMMtpObjectInfo;
+  Arr2AMMtpObjectInfo = array of Arr1AMMtpObjectInfo;
+  Arr3AMMtpObjectInfo = array of Arr2AMMtpObjectInfo;
+
+  JSCX509Certificate = class;
+  Arr1JSCX509Certificate = array of JSCX509Certificate;
+  Arr2JSCX509Certificate = array of Arr1JSCX509Certificate;
+  Arr3JSCX509Certificate = array of Arr2JSCX509Certificate;
+
+  AGDashPathEffect = class;
+  Arr1AGDashPathEffect = array of AGDashPathEffect;
+  Arr2AGDashPathEffect = array of Arr1AGDashPathEffect;
+  Arr3AGDashPathEffect = array of Arr2AGDashPathEffect;
+
+  OAHPRequestUserAgent = class;
+  Arr1OAHPRequestUserAgent = array of OAHPRequestUserAgent;
+  Arr2OAHPRequestUserAgent = array of Arr1OAHPRequestUserAgent;
+  Arr3OAHPRequestUserAgent = array of Arr2OAHPRequestUserAgent;
+
+  AAAppWidgetManager = class;
+  Arr1AAAppWidgetManager = array of AAAppWidgetManager;
+  Arr2AAAppWidgetManager = array of Arr1AAAppWidgetManager;
+  Arr3AAAppWidgetManager = array of Arr2AAAppWidgetManager;
+
+  JUJJarOutputStream = class;
+  Arr1JUJJarOutputStream = array of JUJJarOutputStream;
+  Arr2JUJJarOutputStream = array of Arr1JUJJarOutputStream;
+  Arr3JUJJarOutputStream = array of Arr2JUJJarOutputStream;
+
+  OAHPHttpAbstractParamBean = class;
+  Arr1OAHPHttpAbstractParamBean = array of OAHPHttpAbstractParamBean;
+  Arr2OAHPHttpAbstractParamBean = array of Arr1OAHPHttpAbstractParamBean;
+  Arr3OAHPHttpAbstractParamBean = array of Arr2OAHPHttpAbstractParamBean;
+
+  AManifest = class;
+  Arr1AManifest = array of AManifest;
+  Arr2AManifest = array of Arr1AManifest;
+  Arr3AManifest = array of Arr2AManifest;
+
+  OAHIAbstractHttpClientConnection = class;
+  Arr1OAHIAbstractHttpClientConnection = array of OAHIAbstractHttpClientConnection;
+  Arr2OAHIAbstractHttpClientConnection = array of Arr1OAHIAbstractHttpClientConnection;
+  Arr3OAHIAbstractHttpClientConnection = array of Arr2OAHIAbstractHttpClientConnection;
+
+  OAHCUInetAddressUtils = class;
+  Arr1OAHCUInetAddressUtils = array of OAHCUInetAddressUtils;
+  Arr2OAHCUInetAddressUtils = array of Arr1OAHCUInetAddressUtils;
+  Arr3OAHCUInetAddressUtils = array of Arr2OAHCUInetAddressUtils;
+
+  AGGestureUtils = class;
+  Arr1AGGestureUtils = array of AGGestureUtils;
+  Arr2AGGestureUtils = array of Arr1AGGestureUtils;
+  Arr3AGGestureUtils = array of Arr2AGGestureUtils;
+
+  ANWPWifiP2pInfo = class;
+  Arr1ANWPWifiP2pInfo = array of ANWPWifiP2pInfo;
+  Arr2ANWPWifiP2pInfo = array of Arr1ANWPWifiP2pInfo;
+  Arr3ANWPWifiP2pInfo = array of Arr2ANWPWifiP2pInfo;
+
+  AUConfig = class;
+  Arr1AUConfig = array of AUConfig;
+  Arr2AUConfig = array of Arr1AUConfig;
+  Arr3AUConfig = array of Arr2AUConfig;
+
+  AWCursorTreeAdapter = class;
+  Arr1AWCursorTreeAdapter = array of AWCursorTreeAdapter;
+  Arr2AWCursorTreeAdapter = array of Arr1AWCursorTreeAdapter;
+  Arr3AWCursorTreeAdapter = array of Arr2AWCursorTreeAdapter;
+
+  ACPInstrumentationInfo = class;
+  Arr1ACPInstrumentationInfo = array of ACPInstrumentationInfo;
+  Arr2ACPInstrumentationInfo = array of Arr1ACPInstrumentationInfo;
+  Arr3ACPInstrumentationInfo = array of Arr2ACPInstrumentationInfo;
+
+  JSSECGenParameterSpec = class;
+  Arr1JSSECGenParameterSpec = array of JSSECGenParameterSpec;
+  Arr2JSSECGenParameterSpec = array of Arr1JSSECGenParameterSpec;
+  Arr3JSSECGenParameterSpec = array of Arr2JSSECGenParameterSpec;
+
+  JSCCertificateException = class;
+  Arr1JSCCertificateException = array of JSCCertificateException;
+  Arr2JSCCertificateException = array of Arr1JSCCertificateException;
+  Arr3JSCCertificateException = array of Arr2JSCCertificateException;
+
+  AAADeviceAdminReceiver = class;
+  Arr1AAADeviceAdminReceiver = array of AAADeviceAdminReceiver;
+  Arr2AAADeviceAdminReceiver = array of Arr1AAADeviceAdminReceiver;
+  Arr3AAADeviceAdminReceiver = array of Arr2AAADeviceAdminReceiver;
+
+  JNInetAddress = class;
+  Arr1JNInetAddress = array of JNInetAddress;
+  Arr2JNInetAddress = array of Arr1JNInetAddress;
+  Arr3JNInetAddress = array of Arr2JNInetAddress;
+
+  AVAAccelerateInterpolator = class;
+  Arr1AVAAccelerateInterpolator = array of AVAAccelerateInterpolator;
+  Arr2AVAAccelerateInterpolator = array of Arr1AVAAccelerateInterpolator;
+  Arr3AVAAccelerateInterpolator = array of Arr2AVAAccelerateInterpolator;
+
+  ANSSLCertificateSocketFactory = class;
+  Arr1ANSSLCertificateSocketFactory = array of ANSSLCertificateSocketFactory;
+  Arr2ANSSLCertificateSocketFactory = array of Arr1ANSSLCertificateSocketFactory;
+  Arr3ANSSLCertificateSocketFactory = array of Arr2ANSSLCertificateSocketFactory;
+
+  AVIExtractedText = class;
+  Arr1AVIExtractedText = array of AVIExtractedText;
+  Arr2AVIExtractedText = array of Arr1AVIExtractedText;
+  Arr3AVIExtractedText = array of Arr2AVIExtractedText;
+
+  JLRUndeclaredThrowableException = class;
+  Arr1JLRUndeclaredThrowableException = array of JLRUndeclaredThrowableException;
+  Arr2JLRUndeclaredThrowableException = array of Arr1JLRUndeclaredThrowableException;
+  Arr3JLRUndeclaredThrowableException = array of Arr2JLRUndeclaredThrowableException;
+
+  OAHICDefaultRedirectHandler = class;
+  Arr1OAHICDefaultRedirectHandler = array of OAHICDefaultRedirectHandler;
+  Arr2OAHICDefaultRedirectHandler = array of Arr1OAHICDefaultRedirectHandler;
+  Arr3OAHICDefaultRedirectHandler = array of Arr2OAHICDefaultRedirectHandler;
+
+  AANotificationManager = class;
+  Arr1AANotificationManager = array of AANotificationManager;
+  Arr2AANotificationManager = array of Arr1AANotificationManager;
+  Arr3AANotificationManager = array of Arr2AANotificationManager;
+
+  AWWebChromeClient = class;
+  Arr1AWWebChromeClient = array of AWWebChromeClient;
+  Arr2AWWebChromeClient = array of Arr1AWWebChromeClient;
+  Arr3AWWebChromeClient = array of Arr2AWWebChromeClient;
+
+  JUCRejectedExecutionException = class;
+  Arr1JUCRejectedExecutionException = array of JUCRejectedExecutionException;
+  Arr2JUCRejectedExecutionException = array of Arr1JUCRejectedExecutionException;
+  Arr3JUCRejectedExecutionException = array of Arr2JUCRejectedExecutionException;
+
+  ATAlteredCharSequence = class;
+  Arr1ATAlteredCharSequence = array of ATAlteredCharSequence;
+  Arr2ATAlteredCharSequence = array of Arr1ATAlteredCharSequence;
+  Arr3ATAlteredCharSequence = array of Arr2ATAlteredCharSequence;
+
+  AGDStateListDrawable = class;
+  Arr1AGDStateListDrawable = array of AGDStateListDrawable;
+  Arr2AGDStateListDrawable = array of Arr1AGDStateListDrawable;
+  Arr3AGDStateListDrawable = array of Arr2AGDStateListDrawable;
+
+  AGDLayerDrawable = class;
+  Arr1AGDLayerDrawable = array of AGDLayerDrawable;
+  Arr2AGDLayerDrawable = array of Arr1AGDLayerDrawable;
+  Arr3AGDLayerDrawable = array of Arr2AGDLayerDrawable;
+
+  JLClassNotFoundException = class;
+  Arr1JLClassNotFoundException = array of JLClassNotFoundException;
+  Arr2JLClassNotFoundException = array of Arr1JLClassNotFoundException;
+  Arr3JLClassNotFoundException = array of Arr2JLClassNotFoundException;
+
+  AVKeyCharacterMap = class;
+  Arr1AVKeyCharacterMap = array of AVKeyCharacterMap;
+  Arr2AVKeyCharacterMap = array of Arr1AVKeyCharacterMap;
+  Arr3AVKeyCharacterMap = array of Arr2AVKeyCharacterMap;
+
+  AHGeomagneticField = class;
+  Arr1AHGeomagneticField = array of AHGeomagneticField;
+  Arr2AHGeomagneticField = array of Arr1AHGeomagneticField;
+  Arr3AHGeomagneticField = array of Arr2AHGeomagneticField;
+
+  AWProgressBar = class;
+  Arr1AWProgressBar = array of AWProgressBar;
+  Arr2AWProgressBar = array of Arr1AWProgressBar;
+  Arr3AWProgressBar = array of Arr2AWProgressBar;
+
+  AUSparseBooleanArray = class;
+  Arr1AUSparseBooleanArray = array of AUSparseBooleanArray;
+  Arr2AUSparseBooleanArray = array of Arr1AUSparseBooleanArray;
+  Arr3AUSparseBooleanArray = array of Arr2AUSparseBooleanArray;
+
+  AORemoteException = class;
+  Arr1AORemoteException = array of AORemoteException;
+  Arr2AORemoteException = array of Arr1AORemoteException;
+  Arr3AORemoteException = array of Arr2AORemoteException;
+
+  ANNdefRecord = class;
+  Arr1ANNdefRecord = array of ANNdefRecord;
+  Arr2ANNdefRecord = array of Arr1ANNdefRecord;
+  Arr3ANNdefRecord = array of Arr2ANNdefRecord;
+
+  AGPorterDuffXfermode = class;
+  Arr1AGPorterDuffXfermode = array of AGPorterDuffXfermode;
+  Arr2AGPorterDuffXfermode = array of Arr1AGPorterDuffXfermode;
+  Arr3AGPorterDuffXfermode = array of Arr2AGPorterDuffXfermode;
+
+  ATProviderTestCase = class;
+  Arr1ATProviderTestCase = array of ATProviderTestCase;
+  Arr2ATProviderTestCase = array of Arr1ATProviderTestCase;
+  Arr3ATProviderTestCase = array of Arr2ATProviderTestCase;
+
+  OXSHXMLReaderFactory = class;
+  Arr1OXSHXMLReaderFactory = array of OXSHXMLReaderFactory;
+  Arr2OXSHXMLReaderFactory = array of Arr1OXSHXMLReaderFactory;
+  Arr3OXSHXMLReaderFactory = array of Arr2OXSHXMLReaderFactory;
+
+  JNHttpURLConnection = class;
+  Arr1JNHttpURLConnection = array of JNHttpURLConnection;
+  Arr2JNHttpURLConnection = array of Arr1JNHttpURLConnection;
+  Arr3JNHttpURLConnection = array of Arr2JNHttpURLConnection;
+
+  JUJJarInputStream = class;
+  Arr1JUJJarInputStream = array of JUJJarInputStream;
+  Arr2JUJJarInputStream = array of Arr1JUJJarInputStream;
+  Arr3JUJJarInputStream = array of Arr2JUJJarInputStream;
+
+  JSCTrustAnchor = class;
+  Arr1JSCTrustAnchor = array of JSCTrustAnchor;
+  Arr2JSCTrustAnchor = array of Arr1JSCTrustAnchor;
+  Arr3JSCTrustAnchor = array of Arr2JSCTrustAnchor;
+
+  ATDynamicLayout = class;
+  Arr1ATDynamicLayout = array of ATDynamicLayout;
+  Arr2ATDynamicLayout = array of Arr1ATDynamicLayout;
+  Arr3ATDynamicLayout = array of Arr2ATDynamicLayout;
+
+  AOProcess = class;
+  Arr1AOProcess = array of AOProcess;
+  Arr2AOProcess = array of Arr1AOProcess;
+  Arr3AOProcess = array of Arr2AOProcess;
+
+  ACRColorStateList = class;
+  Arr1ACRColorStateList = array of ACRColorStateList;
+  Arr2ACRColorStateList = array of Arr1ACRColorStateList;
+  Arr3ACRColorStateList = array of Arr2ACRColorStateList;
+
+  ARAllocation = class;
+  Arr1ARAllocation = array of ARAllocation;
+  Arr2ARAllocation = array of Arr1ARAllocation;
+  Arr3ARAllocation = array of Arr2ARAllocation;
+
+  ACRAssetFileDescriptor = class;
+  Arr1ACRAssetFileDescriptor = array of ACRAssetFileDescriptor;
+  Arr2ACRAssetFileDescriptor = array of Arr1ACRAssetFileDescriptor;
+  Arr3ACRAssetFileDescriptor = array of Arr2ACRAssetFileDescriptor;
+
+  JUZCheckedInputStream = class;
+  Arr1JUZCheckedInputStream = array of JUZCheckedInputStream;
+  Arr2JUZCheckedInputStream = array of Arr1JUZCheckedInputStream;
+  Arr3JUZCheckedInputStream = array of Arr2JUZCheckedInputStream;
+
+  ATMMockPackageManager = class;
+  Arr1ATMMockPackageManager = array of ATMMockPackageManager;
+  Arr2ATMMockPackageManager = array of Arr1ATMMockPackageManager;
+  Arr3ATMMockPackageManager = array of Arr2ATMMockPackageManager;
+
+  AHSensor = class;
+  Arr1AHSensor = array of AHSensor;
+  Arr2AHSensor = array of Arr1AHSensor;
+  Arr3AHSensor = array of Arr2AHSensor;
+
+  AUTypedValue = class;
+  Arr1AUTypedValue = array of AUTypedValue;
+  Arr2AUTypedValue = array of Arr1AUTypedValue;
+  Arr3AUTypedValue = array of Arr2AUTypedValue;
+
+  ADSSQLiteOpenHelper = class;
+  Arr1ADSSQLiteOpenHelper = array of ADSSQLiteOpenHelper;
+  Arr2ADSSQLiteOpenHelper = array of Arr1ADSSQLiteOpenHelper;
+  Arr3ADSSQLiteOpenHelper = array of Arr2ADSSQLiteOpenHelper;
+
+  OAHCPRequestDefaultHeaders = class;
+  Arr1OAHCPRequestDefaultHeaders = array of OAHCPRequestDefaultHeaders;
+  Arr2OAHCPRequestDefaultHeaders = array of Arr1OAHCPRequestDefaultHeaders;
+  Arr3OAHCPRequestDefaultHeaders = array of Arr2OAHCPRequestDefaultHeaders;
+
+  AGDSRectShape = class;
+  Arr1AGDSRectShape = array of AGDSRectShape;
+  Arr2AGDSRectShape = array of Arr1AGDSRectShape;
+  Arr3AGDSRectShape = array of Arr2AGDSRectShape;
+
+  OAHICNetscapeDraftSpec = class;
+  Arr1OAHICNetscapeDraftSpec = array of OAHICNetscapeDraftSpec;
+  Arr2OAHICNetscapeDraftSpec = array of Arr1OAHICNetscapeDraftSpec;
+  Arr3OAHICNetscapeDraftSpec = array of Arr2OAHICNetscapeDraftSpec;
+
+  JUZZipEntry = class;
+  Arr1JUZZipEntry = array of JUZZipEntry;
+  Arr2JUZZipEntry = array of Arr1JUZZipEntry;
+  Arr3JUZZipEntry = array of Arr2JUZZipEntry;
+
+  AWImageView = class;
+  Arr1AWImageView = array of AWImageView;
+  Arr2AWImageView = array of Arr1AWImageView;
+  Arr3AWImageView = array of Arr2AWImageView;
+
+  OAHIABasicScheme = class;
+  Arr1OAHIABasicScheme = array of OAHIABasicScheme;
+  Arr2OAHIABasicScheme = array of Arr1OAHIABasicScheme;
+  Arr3OAHIABasicScheme = array of Arr2OAHIABasicScheme;
+
+  JSecurityTimestamp = class;
+  Arr1JSecurityTimestamp = array of JSecurityTimestamp;
+  Arr2JSecurityTimestamp = array of Arr1JSecurityTimestamp;
+  Arr3JSecurityTimestamp = array of Arr2JSecurityTimestamp;
+
+  OAHPHttpProtocolParamBean = class;
+  Arr1OAHPHttpProtocolParamBean = array of OAHPHttpProtocolParamBean;
+  Arr2OAHPHttpProtocolParamBean = array of Arr1OAHPHttpProtocolParamBean;
+  Arr3OAHPHttpProtocolParamBean = array of Arr2OAHPHttpProtocolParamBean;
+
+  AOBadParcelableException = class;
+  Arr1AOBadParcelableException = array of AOBadParcelableException;
+  Arr2AOBadParcelableException = array of Arr1AOBadParcelableException;
+  Arr3AOBadParcelableException = array of Arr2AOBadParcelableException;
+
+  ATSQuoteSpan = class;
+  Arr1ATSQuoteSpan = array of ATSQuoteSpan;
+  Arr2ATSQuoteSpan = array of Arr1ATSQuoteSpan;
+  Arr3ATSQuoteSpan = array of Arr2ATSQuoteSpan;
+
+  AUSparseIntArray = class;
+  Arr1AUSparseIntArray = array of AUSparseIntArray;
+  Arr2AUSparseIntArray = array of Arr1AUSparseIntArray;
+  Arr3AUSparseIntArray = array of Arr2AUSparseIntArray;
+
+  JTBreakIterator = class;
+  Arr1JTBreakIterator = array of JTBreakIterator;
+  Arr2JTBreakIterator = array of Arr1JTBreakIterator;
+  Arr3JTBreakIterator = array of Arr2JTBreakIterator;
+
+  AOGLSurfaceView = class;
+  Arr1AOGLSurfaceView = array of AOGLSurfaceView;
+  Arr2AOGLSurfaceView = array of Arr1AOGLSurfaceView;
+  Arr3AOGLSurfaceView = array of Arr2AOGLSurfaceView;
+
+  JUJAttributes = class;
+  Arr1JUJAttributes = array of JUJAttributes;
+  Arr2JUJAttributes = array of Arr1JUJAttributes;
+  Arr3JUJAttributes = array of Arr2JUJAttributes;
+
+  OAHPDefaultedHttpParams = class;
+  Arr1OAHPDefaultedHttpParams = array of OAHPDefaultedHttpParams;
+  Arr2OAHPDefaultedHttpParams = array of Arr1OAHPDefaultedHttpParams;
+  Arr3OAHPDefaultedHttpParams = array of Arr2OAHPDefaultedHttpParams;
+
+  ATSScaleXSpan = class;
+  Arr1ATSScaleXSpan = array of ATSScaleXSpan;
+  Arr2ATSScaleXSpan = array of Arr1ATSScaleXSpan;
+  Arr3ATSScaleXSpan = array of Arr2ATSScaleXSpan;
+
+  JSAXX500Principal = class;
+  Arr1JSAXX500Principal = array of JSAXX500Principal;
+  Arr2JSAXX500Principal = array of Arr1JSAXX500Principal;
+  Arr3JSAXX500Principal = array of Arr2JSAXX500Principal;
+
+  AUStateSet = class;
+  Arr1AUStateSet = array of AUStateSet;
+  Arr2AUStateSet = array of Arr1AUStateSet;
+  Arr3AUStateSet = array of Arr2AUStateSet;
+
+  ARLong4 = class;
+  Arr1ARLong4 = array of ARLong4;
+  Arr2ARLong4 = array of Arr1ARLong4;
+  Arr3ARLong4 = array of Arr2ARLong4;
+
+  JUTreeMap = class;
+  Arr1JUTreeMap = array of JUTreeMap;
+  Arr2JUTreeMap = array of Arr1JUTreeMap;
+  Arr3JUTreeMap = array of Arr2JUTreeMap;
+
+  ARLong2 = class;
+  Arr1ARLong2 = array of ARLong2;
+  Arr2ARLong2 = array of Arr1ARLong2;
+  Arr3ARLong2 = array of Arr2ARLong2;
+
+  ARLong3 = class;
+  Arr1ARLong3 = array of ARLong3;
+  Arr2ARLong3 = array of Arr1ARLong3;
+  Arr3ARLong3 = array of Arr2ARLong3;
+
+  OAHISocketHttpClientConnection = class;
+  Arr1OAHISocketHttpClientConnection = array of OAHISocketHttpClientConnection;
+  Arr2OAHISocketHttpClientConnection = array of Arr1OAHISocketHttpClientConnection;
+  Arr3OAHISocketHttpClientConnection = array of Arr2OAHISocketHttpClientConnection;
+
+  OAHICBasicMaxAgeHandler = class;
+  Arr1OAHICBasicMaxAgeHandler = array of OAHICBasicMaxAgeHandler;
+  Arr2OAHICBasicMaxAgeHandler = array of Arr1OAHICBasicMaxAgeHandler;
+  Arr3OAHICBasicMaxAgeHandler = array of Arr2OAHICBasicMaxAgeHandler;
+
+  AWToast = class;
+  Arr1AWToast = array of AWToast;
+  Arr2AWToast = array of Arr1AWToast;
+  Arr3AWToast = array of Arr2AWToast;
+
+  JSSQLInvalidAuthorizationSpecException = class;
+  Arr1JSSQLInvalidAuthorizationSpecException = array of JSSQLInvalidAuthorizationSpecException;
+  Arr2JSSQLInvalidAuthorizationSpecException = array of Arr1JSSQLInvalidAuthorizationSpecException;
+  Arr3JSSQLInvalidAuthorizationSpecException = array of Arr2JSSQLInvalidAuthorizationSpecException;
+
+  AGDDrawableContainer = class;
+  Arr1AGDDrawableContainer = array of AGDDrawableContainer;
+  Arr2AGDDrawableContainer = array of Arr1AGDDrawableContainer;
+  Arr3AGDDrawableContainer = array of Arr2AGDDrawableContainer;
+
+  JSSecurityPermission = class;
+  Arr1JSSecurityPermission = array of JSSecurityPermission;
+  Arr2JSSecurityPermission = array of Arr1JSSecurityPermission;
+  Arr3JSSecurityPermission = array of Arr2JSSecurityPermission;
+
+  JUCScheduledThreadPoolExecutor = class;
+  Arr1JUCScheduledThreadPoolExecutor = array of JUCScheduledThreadPoolExecutor;
+  Arr2JUCScheduledThreadPoolExecutor = array of Arr1JUCScheduledThreadPoolExecutor;
+  Arr3JUCScheduledThreadPoolExecutor = array of Arr2JUCScheduledThreadPoolExecutor;
+
+  ARInt4 = class;
+  Arr1ARInt4 = array of ARInt4;
+  Arr2ARInt4 = array of Arr1ARInt4;
+  Arr3ARInt4 = array of Arr2ARInt4;
+
+  ARInt3 = class;
+  Arr1ARInt3 = array of ARInt3;
+  Arr2ARInt3 = array of Arr1ARInt3;
+  Arr3ARInt3 = array of Arr2ARInt3;
+
+  JUCAAtomicIntegerFieldUpdater = class;
+  Arr1JUCAAtomicIntegerFieldUpdater = array of JUCAAtomicIntegerFieldUpdater;
+  Arr2JUCAAtomicIntegerFieldUpdater = array of Arr1JUCAAtomicIntegerFieldUpdater;
+  Arr3JUCAAtomicIntegerFieldUpdater = array of Arr2JUCAAtomicIntegerFieldUpdater;
+
+  ARInt2 = class;
+  Arr1ARInt2 = array of ARInt2;
+  Arr2ARInt2 = array of Arr1ARInt2;
+  Arr3ARInt2 = array of Arr2ARInt2;
+
+  JUPropertyPermission = class;
+  Arr1JUPropertyPermission = array of JUPropertyPermission;
+  Arr2JUPropertyPermission = array of Arr1JUPropertyPermission;
+  Arr3JUPropertyPermission = array of Arr2JUPropertyPermission;
+
+  OAHIANTLMEngineException = class;
+  Arr1OAHIANTLMEngineException = array of OAHIANTLMEngineException;
+  Arr2OAHIANTLMEngineException = array of Arr1OAHIANTLMEngineException;
+  Arr3OAHIANTLMEngineException = array of Arr2OAHIANTLMEngineException;
+
+  AGPaint = class;
+  Arr1AGPaint = array of AGPaint;
+  Arr2AGPaint = array of Arr1AGPaint;
+  Arr3AGPaint = array of Arr2AGPaint;
+
+  OJJSONObject = class;
+  Arr1OJJSONObject = array of OJJSONObject;
+  Arr2OJJSONObject = array of Arr1OJJSONObject;
+  Arr3OJJSONObject = array of Arr2OJJSONObject;
+
+  ACComponentName = class;
+  Arr1ACComponentName = array of ACComponentName;
+  Arr2ACComponentName = array of Arr1ACComponentName;
+  Arr3ACComponentName = array of Arr2ACComponentName;
+
+  AAFragmentManager = class;
+  Arr1AAFragmentManager = array of AAFragmentManager;
+  Arr2AAFragmentManager = array of Arr1AAFragmentManager;
+  Arr3AAFragmentManager = array of Arr2AAFragmentManager;
+
+  OAHULangUtils = class;
+  Arr1OAHULangUtils = array of OAHULangUtils;
+  Arr2OAHULangUtils = array of Arr1OAHULangUtils;
+  Arr3OAHULangUtils = array of Arr2OAHULangUtils;
+
+  OAHMBasicTokenIterator = class;
+  Arr1OAHMBasicTokenIterator = array of OAHMBasicTokenIterator;
+  Arr2OAHMBasicTokenIterator = array of Arr1OAHMBasicTokenIterator;
+  Arr3OAHMBasicTokenIterator = array of Arr2OAHMBasicTokenIterator;
+
+  AIInputMethodService = class;
+  Arr1AIInputMethodService = array of AIInputMethodService;
+  Arr2AIInputMethodService = array of Arr1AIInputMethodService;
+  Arr3AIInputMethodService = array of Arr2AIInputMethodService;
+
+  OJJSONStringer = class;
+  Arr1OJJSONStringer = array of OJJSONStringer;
+  Arr2OJJSONStringer = array of Arr1OJJSONStringer;
+  Arr3OJJSONStringer = array of Arr2OJJSONStringer;
+
+  ADDrmInfoRequest = class;
+  Arr1ADDrmInfoRequest = array of ADDrmInfoRequest;
+  Arr2ADDrmInfoRequest = array of Arr1ADDrmInfoRequest;
+  Arr3ADDrmInfoRequest = array of Arr2ADDrmInfoRequest;
+
+  JNURLConnection = class;
+  Arr1JNURLConnection = array of JNURLConnection;
+  Arr2JNURLConnection = array of Arr1JNURLConnection;
+  Arr3JNURLConnection = array of Arr2JNURLConnection;
+
+  AVAAccessibilityRecord = class;
+  Arr1AVAAccessibilityRecord = array of AVAAccessibilityRecord;
+  Arr2AVAAccessibilityRecord = array of Arr1AVAAccessibilityRecord;
+  Arr3AVAAccessibilityRecord = array of Arr2AVAAccessibilityRecord;
+
+  AWScrollView = class;
+  Arr1AWScrollView = array of AWScrollView;
+  Arr2AWScrollView = array of Arr1AWScrollView;
+  Arr3AWScrollView = array of Arr2AWScrollView;
+
+  AVAAccelerateDecelerateInterpolator = class;
+  Arr1AVAAccelerateDecelerateInterpolator = array of AVAAccelerateDecelerateInterpolator;
+  Arr2AVAAccelerateDecelerateInterpolator = array of Arr1AVAAccelerateDecelerateInterpolator;
+  Arr3AVAAccelerateDecelerateInterpolator = array of Arr2AVAAccelerateDecelerateInterpolator;
+
+  JUHashtable = class;
+  Arr1JUHashtable = array of JUHashtable;
+  Arr2JUHashtable = array of Arr1JUHashtable;
+  Arr3JUHashtable = array of Arr2JUHashtable;
+
+  JNCSAbstractInterruptibleChannel = class;
+  Arr1JNCSAbstractInterruptibleChannel = array of JNCSAbstractInterruptibleChannel;
+  Arr2JNCSAbstractInterruptibleChannel = array of Arr1JNCSAbstractInterruptibleChannel;
+  Arr3JNCSAbstractInterruptibleChannel = array of Arr2JNCSAbstractInterruptibleChannel;
+
+  ACIntentSender = class;
+  Arr1ACIntentSender = array of ACIntentSender;
+  Arr2ACIntentSender = array of Arr1ACIntentSender;
+  Arr3ACIntentSender = array of Arr2ACIntentSender;
+
+  AUBase64OutputStream = class;
+  Arr1AUBase64OutputStream = array of AUBase64OutputStream;
+  Arr2AUBase64OutputStream = array of Arr1AUBase64OutputStream;
+  Arr3AUBase64OutputStream = array of Arr2AUBase64OutputStream;
+
+  OAHMalformedChunkCodingException = class;
+  Arr1OAHMalformedChunkCodingException = array of OAHMalformedChunkCodingException;
+  Arr2OAHMalformedChunkCodingException = array of Arr1OAHMalformedChunkCodingException;
+  Arr3OAHMalformedChunkCodingException = array of Arr2OAHMalformedChunkCodingException;
+
+  ACCursorLoader = class;
+  Arr1ACCursorLoader = array of ACCursorLoader;
+  Arr2ACCursorLoader = array of Arr1ACCursorLoader;
+  Arr3ACCursorLoader = array of Arr2ACCursorLoader;
+
+  AWCookieManager = class;
+  Arr1AWCookieManager = array of AWCookieManager;
+  Arr2AWCookieManager = array of Arr1AWCookieManager;
+  Arr3AWCookieManager = array of Arr2AWCookieManager;
+
+  ANSSipSession = class;
+  Arr1ANSSipSession = array of ANSSipSession;
+  Arr2ANSSipSession = array of Arr1ANSSipSession;
+  Arr3ANSSipSession = array of Arr2ANSSipSession;
+
+  JXXMLConstants = class;
+  Arr1JXXMLConstants = array of JXXMLConstants;
+  Arr2JXXMLConstants = array of Arr1JXXMLConstants;
+  Arr3JXXMLConstants = array of Arr2JXXMLConstants;
+
+  OAHPRequestExpectContinue = class;
+  Arr1OAHPRequestExpectContinue = array of OAHPRequestExpectContinue;
+  Arr2OAHPRequestExpectContinue = array of Arr1OAHPRequestExpectContinue;
+  Arr3OAHPRequestExpectContinue = array of Arr2OAHPRequestExpectContinue;
+
+  JLNoClassDefFoundError = class;
+  Arr1JLNoClassDefFoundError = array of JLNoClassDefFoundError;
+  Arr2JLNoClassDefFoundError = array of Arr1JLNoClassDefFoundError;
+  Arr3JLNoClassDefFoundError = array of Arr2JLNoClassDefFoundError;
+
+  JXDDatatypeConfigurationException = class;
+  Arr1JXDDatatypeConfigurationException = array of JXDDatatypeConfigurationException;
+  Arr2JXDDatatypeConfigurationException = array of Arr1JXDDatatypeConfigurationException;
+  Arr3JXDDatatypeConfigurationException = array of Arr2JXDDatatypeConfigurationException;
+
+  ATMMetaKeyKeyListener = class;
+  Arr1ATMMetaKeyKeyListener = array of ATMMetaKeyKeyListener;
+  Arr2ATMMetaKeyKeyListener = array of Arr1ATMMetaKeyKeyListener;
+  Arr3ATMMetaKeyKeyListener = array of Arr2ATMMetaKeyKeyListener;
+
+  ACUriMatcher = class;
+  Arr1ACUriMatcher = array of ACUriMatcher;
+  Arr2ACUriMatcher = array of Arr1ACUriMatcher;
+  Arr3ACUriMatcher = array of Arr2ACUriMatcher;
+
+  ADSSQLiteException = class;
+  Arr1ADSSQLiteException = array of ADSSQLiteException;
+  Arr2ADSSQLiteException = array of Arr1ADSSQLiteException;
+  Arr3ADSSQLiteException = array of Arr2ADSSQLiteException;
+
+  JUCCountDownLatch = class;
+  Arr1JUCCountDownLatch = array of JUCCountDownLatch;
+  Arr2JUCCountDownLatch = array of Arr1JUCCountDownLatch;
+  Arr3JUCCountDownLatch = array of Arr2JUCCountDownLatch;
+
+  JXTTransformerConfigurationException = class;
+  Arr1JXTTransformerConfigurationException = array of JXTTransformerConfigurationException;
+  Arr2JXTTransformerConfigurationException = array of Arr1JXTTransformerConfigurationException;
+  Arr3JXTTransformerConfigurationException = array of Arr2JXTTransformerConfigurationException;
+
+  JNShortBuffer = class;
+  Arr1JNShortBuffer = array of JNShortBuffer;
+  Arr2JNShortBuffer = array of Arr1JNShortBuffer;
+  Arr3JNShortBuffer = array of Arr2JNShortBuffer;
+
+  ASRecognitionService = class;
+  Arr1ASRecognitionService = array of ASRecognitionService;
+  Arr2ASRecognitionService = array of Arr1ASRecognitionService;
+  Arr3ASRecognitionService = array of Arr2ASRecognitionService;
+
+  OXSInputSource = class;
+  Arr1OXSInputSource = array of OXSInputSource;
+  Arr2OXSInputSource = array of Arr1OXSInputSource;
+  Arr3OXSInputSource = array of Arr2OXSInputSource;
+
+  OAHICDateParseException = class;
+  Arr1OAHICDateParseException = array of OAHICDateParseException;
+  Arr2OAHICDateParseException = array of Arr1OAHICDateParseException;
+  Arr3OAHICDateParseException = array of Arr2OAHICDateParseException;
+
+  AVIBaseInputConnection = class;
+  Arr1AVIBaseInputConnection = array of AVIBaseInputConnection;
+  Arr2AVIBaseInputConnection = array of Arr1AVIBaseInputConnection;
+  Arr3AVIBaseInputConnection = array of Arr2AVIBaseInputConnection;
+
+  AGSweepGradient = class;
+  Arr1AGSweepGradient = array of AGSweepGradient;
+  Arr2AGSweepGradient = array of Arr1AGSweepGradient;
+  Arr3AGSweepGradient = array of Arr2AGSweepGradient;
+
+  AORemoteCallbackList = class;
+  Arr1AORemoteCallbackList = array of AORemoteCallbackList;
+  Arr2AORemoteCallbackList = array of Arr1AORemoteCallbackList;
+  Arr3AORemoteCallbackList = array of Arr2AORemoteCallbackList;
+
+  OAHICTRouteSpecificPool = class;
+  Arr1OAHICTRouteSpecificPool = array of OAHICTRouteSpecificPool;
+  Arr2OAHICTRouteSpecificPool = array of Arr1OAHICTRouteSpecificPool;
+  Arr3OAHICTRouteSpecificPool = array of Arr2OAHICTRouteSpecificPool;
+
+  JNIDN = class;
+  Arr1JNIDN = array of JNIDN;
+  Arr2JNIDN = array of Arr1JNIDN;
+  Arr3JNIDN = array of Arr2JNIDN;
+
+  AWImageSwitcher = class;
+  Arr1AWImageSwitcher = array of AWImageSwitcher;
+  Arr2AWImageSwitcher = array of Arr1AWImageSwitcher;
+  Arr3AWImageSwitcher = array of Arr2AWImageSwitcher;
+
+  JLInstantiationException = class;
+  Arr1JLInstantiationException = array of JLInstantiationException;
+  Arr2JLInstantiationException = array of Arr1JLInstantiationException;
+  Arr3JLInstantiationException = array of Arr2JLInstantiationException;
+
+  OAHPHttpService = class;
+  Arr1OAHPHttpService = array of OAHPHttpService;
+  Arr2OAHPHttpService = array of Arr1OAHPHttpService;
+  Arr3OAHPHttpService = array of Arr2OAHPHttpService;
+
+  AGDRotateDrawable = class;
+  Arr1AGDRotateDrawable = array of AGDRotateDrawable;
+  Arr2AGDRotateDrawable = array of Arr1AGDRotateDrawable;
+  Arr3AGDRotateDrawable = array of Arr2AGDRotateDrawable;
+
+  ATULinkify = class;
+  Arr1ATULinkify = array of ATULinkify;
+  Arr2ATULinkify = array of Arr1ATULinkify;
+  Arr3ATULinkify = array of Arr2ATULinkify;
+
+  OAHCConnectionPoolTimeoutException = class;
+  Arr1OAHCConnectionPoolTimeoutException = array of OAHCConnectionPoolTimeoutException;
+  Arr2OAHCConnectionPoolTimeoutException = array of Arr1OAHCConnectionPoolTimeoutException;
+  Arr3OAHCConnectionPoolTimeoutException = array of Arr2OAHCConnectionPoolTimeoutException;
+
+  AGRect = class;
+  Arr1AGRect = array of AGRect;
+  Arr2AGRect = array of Arr1AGRect;
+  Arr3AGRect = array of Arr2AGRect;
+
+  AWPopupWindow = class;
+  Arr1AWPopupWindow = array of AWPopupWindow;
+  Arr2AWPopupWindow = array of Arr1AWPopupWindow;
+  Arr3AWPopupWindow = array of Arr2AWPopupWindow;
+
+  AWOverScroller = class;
+  Arr1AWOverScroller = array of AWOverScroller;
+  Arr2AWOverScroller = array of Arr1AWOverScroller;
+  Arr3AWOverScroller = array of Arr2AWOverScroller;
+
+  AAAppWidgetProvider = class;
+  Arr1AAAppWidgetProvider = array of AAAppWidgetProvider;
+  Arr2AAAppWidgetProvider = array of Arr1AAAppWidgetProvider;
+  Arr3AAAppWidgetProvider = array of Arr2AAAppWidgetProvider;
+
+  AVMotionEvent = class;
+  Arr1AVMotionEvent = array of AVMotionEvent;
+  Arr2AVMotionEvent = array of Arr1AVMotionEvent;
+  Arr3AVMotionEvent = array of Arr2AVMotionEvent;
+
+  AOParcelUuid = class;
+  Arr1AOParcelUuid = array of AOParcelUuid;
+  Arr2AOParcelUuid = array of Arr1AOParcelUuid;
+  Arr3AOParcelUuid = array of Arr2AOParcelUuid;
+
+  AOResultReceiver = class;
+  Arr1AOResultReceiver = array of AOResultReceiver;
+  Arr2AOResultReceiver = array of Arr1AOResultReceiver;
+  Arr3AOResultReceiver = array of Arr2AOResultReceiver;
+
+  JIFile = class;
+  Arr1JIFile = array of JIFile;
+  Arr2JIFile = array of Arr1JIFile;
+  Arr3JIFile = array of Arr2JIFile;
+
+  AOETC1Util = class;
+  Arr1AOETC1Util = array of AOETC1Util;
+  Arr2AOETC1Util = array of Arr1AOETC1Util;
+  Arr3AOETC1Util = array of Arr2AOETC1Util;
+
+  JNURLEncoder = class;
+  Arr1JNURLEncoder = array of JNURLEncoder;
+  Arr2JNURLEncoder = array of Arr1JNURLEncoder;
+  Arr3JNURLEncoder = array of Arr2JNURLEncoder;
+
+  AWBaseExpandableListAdapter = class;
+  Arr1AWBaseExpandableListAdapter = array of AWBaseExpandableListAdapter;
+  Arr2AWBaseExpandableListAdapter = array of Arr1AWBaseExpandableListAdapter;
+  Arr3AWBaseExpandableListAdapter = array of Arr2AWBaseExpandableListAdapter;
+
+  JSASubject = class;
+  Arr1JSASubject = array of JSASubject;
+  Arr2JSASubject = array of Arr1JSASubject;
+  Arr3JSASubject = array of Arr2JSASubject;
+
+  AWTimePicker = class;
+  Arr1AWTimePicker = array of AWTimePicker;
+  Arr2AWTimePicker = array of Arr1AWTimePicker;
+  Arr3AWTimePicker = array of Arr2AWTimePicker;
+
+  JCCipherOutputStream = class;
+  Arr1JCCipherOutputStream = array of JCCipherOutputStream;
+  Arr2JCCipherOutputStream = array of Arr1JCCipherOutputStream;
+  Arr3JCCipherOutputStream = array of Arr2JCCipherOutputStream;
+
+  AAPropertyValuesHolder = class;
+  Arr1AAPropertyValuesHolder = array of AAPropertyValuesHolder;
+  Arr2AAPropertyValuesHolder = array of Arr1AAPropertyValuesHolder;
+  Arr3AAPropertyValuesHolder = array of Arr2AAPropertyValuesHolder;
+
+  JTDecimalFormat = class;
+  Arr1JTDecimalFormat = array of JTDecimalFormat;
+  Arr2JTDecimalFormat = array of Arr1JTDecimalFormat;
+  Arr3JTDecimalFormat = array of Arr2JTDecimalFormat;
+
+  AWWebSyncManager = class;
+  Arr1AWWebSyncManager = array of AWWebSyncManager;
+  Arr2AWWebSyncManager = array of Arr1AWWebSyncManager;
+  Arr3AWWebSyncManager = array of Arr2AWWebSyncManager;
+
+  JSPermission = class;
+  Arr1JSPermission = array of JSPermission;
+  Arr2JSPermission = array of Arr1JSPermission;
+  Arr3JSPermission = array of Arr2JSPermission;
+
+  JULinkedHashSet = class;
+  Arr1JULinkedHashSet = array of JULinkedHashSet;
+  Arr2JULinkedHashSet = array of Arr1JULinkedHashSet;
+  Arr3JULinkedHashSet = array of Arr2JULinkedHashSet;
+
+  JNSSSLPermission = class;
+  Arr1JNSSSLPermission = array of JNSSSLPermission;
+  Arr2JNSSSLPermission = array of Arr1JNSSSLPermission;
+  Arr3JNSSSLPermission = array of Arr2JNSSSLPermission;
+
+  ADDrmUtils = class;
+  Arr1ADDrmUtils = array of ADDrmUtils;
+  Arr2ADDrmUtils = array of Arr1ADDrmUtils;
+  Arr3ADDrmUtils = array of Arr2ADDrmUtils;
+
+  OAHISocketHttpServerConnection = class;
+  Arr1OAHISocketHttpServerConnection = array of OAHISocketHttpServerConnection;
+  Arr2OAHISocketHttpServerConnection = array of Arr1OAHISocketHttpServerConnection;
+  Arr3OAHISocketHttpServerConnection = array of Arr2OAHISocketHttpServerConnection;
+
+  OAHMAbstractHttpMessage = class;
+  Arr1OAHMAbstractHttpMessage = array of OAHMAbstractHttpMessage;
+  Arr2OAHMAbstractHttpMessage = array of Arr1OAHMAbstractHttpMessage;
+  Arr3OAHMAbstractHttpMessage = array of Arr2OAHMAbstractHttpMessage;
+
+  JXDXMLGregorianCalendar = class;
+  Arr1JXDXMLGregorianCalendar = array of JXDXMLGregorianCalendar;
+  Arr2JXDXMLGregorianCalendar = array of Arr1JXDXMLGregorianCalendar;
+  Arr3JXDXMLGregorianCalendar = array of Arr2JXDXMLGregorianCalendar;
+
+  JUZInflaterInputStream = class;
+  Arr1JUZInflaterInputStream = array of JUZInflaterInputStream;
+  Arr2JUZInflaterInputStream = array of Arr1JUZInflaterInputStream;
+  Arr3JUZInflaterInputStream = array of Arr2JUZInflaterInputStream;
+
+  ATMHideReturnsTransformationMethod = class;
+  Arr1ATMHideReturnsTransformationMethod = array of ATMHideReturnsTransformationMethod;
+  Arr2ATMHideReturnsTransformationMethod = array of Arr1ATMHideReturnsTransformationMethod;
+  Arr3ATMHideReturnsTransformationMethod = array of Arr2ATMHideReturnsTransformationMethod;
+
+  AMThumbnailUtils = class;
+  Arr1AMThumbnailUtils = array of AMThumbnailUtils;
+  Arr2AMThumbnailUtils = array of Arr1AMThumbnailUtils;
+  Arr3AMThumbnailUtils = array of Arr2AMThumbnailUtils;
+
+  JNDoubleBuffer = class;
+  Arr1JNDoubleBuffer = array of JNDoubleBuffer;
+  Arr2JNDoubleBuffer = array of Arr1JNDoubleBuffer;
+  Arr3JNDoubleBuffer = array of Arr2JNDoubleBuffer;
+
+  OAHICTBasicPooledConnAdapter = class;
+  Arr1OAHICTBasicPooledConnAdapter = array of OAHICTBasicPooledConnAdapter;
+  Arr2OAHICTBasicPooledConnAdapter = array of Arr1OAHICTBasicPooledConnAdapter;
+  Arr3OAHICTBasicPooledConnAdapter = array of Arr2OAHICTBasicPooledConnAdapter;
+
+  ATInstrumentationTestCase = class;
+  Arr1ATInstrumentationTestCase = array of ATInstrumentationTestCase;
+  Arr2ATInstrumentationTestCase = array of Arr1ATInstrumentationTestCase;
+  Arr3ATInstrumentationTestCase = array of Arr2ATInstrumentationTestCase;
+
+  AABSharedPreferencesBackupHelper = class;
+  Arr1AABSharedPreferencesBackupHelper = array of AABSharedPreferencesBackupHelper;
+  Arr2AABSharedPreferencesBackupHelper = array of Arr1AABSharedPreferencesBackupHelper;
+  Arr3AABSharedPreferencesBackupHelper = array of Arr2AABSharedPreferencesBackupHelper;
+
+  OAHIIAbstractMessageWriter = class;
+  Arr1OAHIIAbstractMessageWriter = array of OAHIIAbstractMessageWriter;
+  Arr2OAHIIAbstractMessageWriter = array of Arr1OAHIIAbstractMessageWriter;
+  Arr3OAHIIAbstractMessageWriter = array of Arr2OAHIIAbstractMessageWriter;
+
+  AWAdapterViewAnimator = class;
+  Arr1AWAdapterViewAnimator = array of AWAdapterViewAnimator;
+  Arr2AWAdapterViewAnimator = array of Arr1AWAdapterViewAnimator;
+  Arr3AWAdapterViewAnimator = array of Arr2AWAdapterViewAnimator;
+
+  JSKeyStoreSpi = class;
+  Arr1JSKeyStoreSpi = array of JSKeyStoreSpi;
+  Arr2JSKeyStoreSpi = array of Arr1JSKeyStoreSpi;
+  Arr3JSKeyStoreSpi = array of Arr2JSKeyStoreSpi;
+
+  JULConsoleHandler = class;
+  Arr1JULConsoleHandler = array of JULConsoleHandler;
+  Arr2JULConsoleHandler = array of Arr1JULConsoleHandler;
+  Arr3JULConsoleHandler = array of Arr2JULConsoleHandler;
+
+  OAHICAbstractHttpClient = class;
+  Arr1OAHICAbstractHttpClient = array of OAHICAbstractHttpClient;
+  Arr2OAHICAbstractHttpClient = array of Arr1OAHICAbstractHttpClient;
+  Arr3OAHICAbstractHttpClient = array of Arr2OAHICAbstractHttpClient;
+
+  AAService = class;
+  Arr1AAService = array of AAService;
+  Arr2AAService = array of Arr1AAService;
+  Arr3AAService = array of Arr2AAService;
+
+  OAHPBasicHttpContext = class;
+  Arr1OAHPBasicHttpContext = array of OAHPBasicHttpContext;
+  Arr2OAHPBasicHttpContext = array of Arr1OAHPBasicHttpContext;
+  Arr3OAHPBasicHttpContext = array of Arr2OAHPBasicHttpContext;
+
+  AWGallery = class;
+  Arr1AWGallery = array of AWGallery;
+  Arr2AWGallery = array of Arr1AWGallery;
+  Arr3AWGallery = array of Arr2AWGallery;
+
+  AVAScaleAnimation = class;
+  Arr1AVAScaleAnimation = array of AVAScaleAnimation;
+  Arr2AVAScaleAnimation = array of Arr1AVAScaleAnimation;
+  Arr3AVAScaleAnimation = array of Arr2AVAScaleAnimation;
+
+  OXSSAXNotRecognizedException = class;
+  Arr1OXSSAXNotRecognizedException = array of OXSSAXNotRecognizedException;
+  Arr2OXSSAXNotRecognizedException = array of Arr1OXSSAXNotRecognizedException;
+  Arr3OXSSAXNotRecognizedException = array of Arr2OXSSAXNotRecognizedException;
+
+  JMBigDecimal = class;
+  Arr1JMBigDecimal = array of JMBigDecimal;
+  Arr2JMBigDecimal = array of Arr1JMBigDecimal;
+  Arr3JMBigDecimal = array of Arr2JMBigDecimal;
+
+  JSSECPrivateKeySpec = class;
+  Arr1JSSECPrivateKeySpec = array of JSSECPrivateKeySpec;
+  Arr2JSSECPrivateKeySpec = array of Arr1JSSECPrivateKeySpec;
+  Arr3JSSECPrivateKeySpec = array of Arr2JSSECPrivateKeySpec;
+
+  ADDrmInfoEvent = class;
+  Arr1ADDrmInfoEvent = array of ADDrmInfoEvent;
+  Arr2ADDrmInfoEvent = array of Arr1ADDrmInfoEvent;
+  Arr3ADDrmInfoEvent = array of Arr2ADDrmInfoEvent;
+
+  OAHPHttpDateGenerator = class;
+  Arr1OAHPHttpDateGenerator = array of OAHPHttpDateGenerator;
+  Arr2OAHPHttpDateGenerator = array of Arr1OAHPHttpDateGenerator;
+  Arr3OAHPHttpDateGenerator = array of Arr2OAHPHttpDateGenerator;
+
+  JNCSAbstractSelectionKey = class;
+  Arr1JNCSAbstractSelectionKey = array of JNCSAbstractSelectionKey;
+  Arr2JNCSAbstractSelectionKey = array of Arr1JNCSAbstractSelectionKey;
+  Arr3JNCSAbstractSelectionKey = array of Arr2JNCSAbstractSelectionKey;
+
+  ATSClickableSpan = class;
+  Arr1ATSClickableSpan = array of ATSClickableSpan;
+  Arr2ATSClickableSpan = array of Arr1ATSClickableSpan;
+  Arr3ATSClickableSpan = array of Arr2ATSClickableSpan;
+
+  OAHICNetscapeDraftSpecFactory = class;
+  Arr1OAHICNetscapeDraftSpecFactory = array of OAHICNetscapeDraftSpecFactory;
+  Arr2OAHICNetscapeDraftSpecFactory = array of Arr1OAHICNetscapeDraftSpecFactory;
+  Arr3OAHICNetscapeDraftSpecFactory = array of Arr2OAHICNetscapeDraftSpecFactory;
+
+  JSUnrecoverableKeyException = class;
+  Arr1JSUnrecoverableKeyException = array of JSUnrecoverableKeyException;
+  Arr2JSUnrecoverableKeyException = array of Arr1JSUnrecoverableKeyException;
+  Arr3JSUnrecoverableKeyException = array of Arr2JSUnrecoverableKeyException;
+
+  ATMArrowKeyMovementMethod = class;
+  Arr1ATMArrowKeyMovementMethod = array of ATMArrowKeyMovementMethod;
+  Arr2ATMArrowKeyMovementMethod = array of Arr1ATMArrowKeyMovementMethod;
+  Arr3ATMArrowKeyMovementMethod = array of Arr2ATMArrowKeyMovementMethod;
+
+  JUCAAtomicReferenceFieldUpdater = class;
+  Arr1JUCAAtomicReferenceFieldUpdater = array of JUCAAtomicReferenceFieldUpdater;
+  Arr2JUCAAtomicReferenceFieldUpdater = array of Arr1JUCAAtomicReferenceFieldUpdater;
+  Arr3JUCAAtomicReferenceFieldUpdater = array of Arr2JUCAAtomicReferenceFieldUpdater;
+
+  OAHIANTLMScheme = class;
+  Arr1OAHIANTLMScheme = array of OAHIANTLMScheme;
+  Arr2OAHIANTLMScheme = array of Arr1OAHIANTLMScheme;
+  Arr3OAHIANTLMScheme = array of Arr2OAHIANTLMScheme;
+
+  JIEOFException = class;
+  Arr1JIEOFException = array of JIEOFException;
+  Arr2JIEOFException = array of Arr1JIEOFException;
+  Arr3JIEOFException = array of Arr2JIEOFException;
+
+  JLIllegalThreadStateException = class;
+  Arr1JLIllegalThreadStateException = array of JLIllegalThreadStateException;
+  Arr2JLIllegalThreadStateException = array of Arr1JLIllegalThreadStateException;
+  Arr3JLIllegalThreadStateException = array of Arr2JLIllegalThreadStateException;
+
+  JNContentHandler = class;
+  Arr1JNContentHandler = array of JNContentHandler;
+  Arr2JNContentHandler = array of Arr1JNContentHandler;
+  Arr3JNContentHandler = array of Arr2JNContentHandler;
+
+  OAHPAbstractHttpParams = class;
+  Arr1OAHPAbstractHttpParams = array of OAHPAbstractHttpParams;
+  Arr2OAHPAbstractHttpParams = array of Arr1OAHPAbstractHttpParams;
+  Arr3OAHPAbstractHttpParams = array of Arr2OAHPAbstractHttpParams;
+
+  ARProgramFragment = class;
+  Arr1ARProgramFragment = array of ARProgramFragment;
+  Arr2ARProgramFragment = array of Arr1ARProgramFragment;
+  Arr3ARProgramFragment = array of Arr2ARProgramFragment;
+
+  OAHCSSSLSocketFactory = class;
+  Arr1OAHCSSSLSocketFactory = array of OAHCSSSLSocketFactory;
+  Arr2OAHCSSSLSocketFactory = array of Arr1OAHCSSSLSocketFactory;
+  Arr3OAHCSSSLSocketFactory = array of Arr2OAHCSSSLSocketFactory;
+
+  ATMLinkMovementMethod = class;
+  Arr1ATMLinkMovementMethod = array of ATMLinkMovementMethod;
+  Arr2ATMLinkMovementMethod = array of Arr1ATMLinkMovementMethod;
+  Arr3ATMLinkMovementMethod = array of Arr2ATMLinkMovementMethod;
+
+  OAHIIHttpRequestParser = class;
+  Arr1OAHIIHttpRequestParser = array of OAHIIHttpRequestParser;
+  Arr2OAHIIHttpRequestParser = array of Arr1OAHIIHttpRequestParser;
+  Arr3OAHIIHttpRequestParser = array of Arr2OAHIIHttpRequestParser;
+
+  OXSSAXException = class;
+  Arr1OXSSAXException = array of OXSSAXException;
+  Arr2OXSSAXException = array of Arr1OXSSAXException;
+  Arr3OXSSAXException = array of Arr2OXSSAXException;
+
+  OAHICDefaultHttpRequestRetryHandler = class;
+  Arr1OAHICDefaultHttpRequestRetryHandler = array of OAHICDefaultHttpRequestRetryHandler;
+  Arr2OAHICDefaultHttpRequestRetryHandler = array of Arr1OAHICDefaultHttpRequestRetryHandler;
+  Arr3OAHICDefaultHttpRequestRetryHandler = array of Arr2OAHICDefaultHttpRequestRetryHandler;
+
+  ATSMaskFilterSpan = class;
+  Arr1ATSMaskFilterSpan = array of ATSMaskFilterSpan;
+  Arr2ATSMaskFilterSpan = array of Arr1ATSMaskFilterSpan;
+  Arr3ATSMaskFilterSpan = array of Arr2ATSMaskFilterSpan;
+
+  OAHIAUnsupportedDigestAlgorithmException = class;
+  Arr1OAHIAUnsupportedDigestAlgorithmException = array of OAHIAUnsupportedDigestAlgorithmException;
+  Arr2OAHIAUnsupportedDigestAlgorithmException = array of Arr1OAHIAUnsupportedDigestAlgorithmException;
+  Arr3OAHIAUnsupportedDigestAlgorithmException = array of Arr2OAHIAUnsupportedDigestAlgorithmException;
+
+  JNSSSLPeerUnverifiedException = class;
+  Arr1JNSSSLPeerUnverifiedException = array of JNSSSLPeerUnverifiedException;
+  Arr2JNSSSLPeerUnverifiedException = array of Arr1JNSSSLPeerUnverifiedException;
+  Arr3JNSSSLPeerUnverifiedException = array of Arr2JNSSSLPeerUnverifiedException;
+
+  JLProcessBuilder = class;
+  Arr1JLProcessBuilder = array of JLProcessBuilder;
+  Arr2JLProcessBuilder = array of Arr1JLProcessBuilder;
+  Arr3JLProcessBuilder = array of Arr2JLProcessBuilder;
+
+  ADCursorWindow = class;
+  Arr1ADCursorWindow = array of ADCursorWindow;
+  Arr2ADCursorWindow = array of Arr1ADCursorWindow;
+  Arr3ADCursorWindow = array of Arr2ADCursorWindow;
+
+  JSAccessControlContext = class;
+  Arr1JSAccessControlContext = array of JSAccessControlContext;
+  Arr2JSAccessControlContext = array of Arr1JSAccessControlContext;
+  Arr3JSAccessControlContext = array of Arr2JSAccessControlContext;
+
+  AMAsyncPlayer = class;
+  Arr1AMAsyncPlayer = array of AMAsyncPlayer;
+  Arr2AMAsyncPlayer = array of Arr1AMAsyncPlayer;
+  Arr3AMAsyncPlayer = array of Arr2AMAsyncPlayer;
+
+  JLRWeakReference = class;
+  Arr1JLRWeakReference = array of JLRWeakReference;
+  Arr2JLRWeakReference = array of Arr1JLRWeakReference;
+  Arr3JLRWeakReference = array of Arr2JLRWeakReference;
+
+  AWAlphabetIndexer = class;
+  Arr1AWAlphabetIndexer = array of AWAlphabetIndexer;
+  Arr2AWAlphabetIndexer = array of Arr1AWAlphabetIndexer;
+  Arr3AWAlphabetIndexer = array of Arr2AWAlphabetIndexer;
+
+  OAHMBasicHttpRequest = class;
+  Arr1OAHMBasicHttpRequest = array of OAHMBasicHttpRequest;
+  Arr2OAHMBasicHttpRequest = array of Arr1OAHMBasicHttpRequest;
+  Arr3OAHMBasicHttpRequest = array of Arr2OAHMBasicHttpRequest;
+
+  JNServerSocketFactory = class;
+  Arr1JNServerSocketFactory = array of JNServerSocketFactory;
+  Arr2JNServerSocketFactory = array of Arr1JNServerSocketFactory;
+  Arr3JNServerSocketFactory = array of Arr2JNServerSocketFactory;
+
+  OAHIEStrictContentLengthStrategy = class;
+  Arr1OAHIEStrictContentLengthStrategy = array of OAHIEStrictContentLengthStrategy;
+  Arr2OAHIEStrictContentLengthStrategy = array of Arr1OAHIEStrictContentLengthStrategy;
+  Arr3OAHIEStrictContentLengthStrategy = array of Arr2OAHIEStrictContentLengthStrategy;
+
+  JSAllPermission = class;
+  Arr1JSAllPermission = array of JSAllPermission;
+  Arr2JSAllPermission = array of Arr1JSAllPermission;
+  Arr3JSAllPermission = array of Arr2JSAllPermission;
+
+  JCEncryptedPrivateKeyInfo = class;
+  Arr1JCEncryptedPrivateKeyInfo = array of JCEncryptedPrivateKeyInfo;
+  Arr2JCEncryptedPrivateKeyInfo = array of Arr1JCEncryptedPrivateKeyInfo;
+  Arr3JCEncryptedPrivateKeyInfo = array of Arr2JCEncryptedPrivateKeyInfo;
+
+  ACRTypedArray = class;
+  Arr1ACRTypedArray = array of ACRTypedArray;
+  Arr2ACRTypedArray = array of Arr1ACRTypedArray;
+  Arr3ACRTypedArray = array of Arr2ACRTypedArray;
+
+  OAHICIdleConnectionHandler = class;
+  Arr1OAHICIdleConnectionHandler = array of OAHICIdleConnectionHandler;
+  Arr2OAHICIdleConnectionHandler = array of Arr1OAHICIdleConnectionHandler;
+  Arr3OAHICIdleConnectionHandler = array of Arr2OAHICIdleConnectionHandler;
+
+  JLClassCastException = class;
+  Arr1JLClassCastException = array of JLClassCastException;
+  Arr2JLClassCastException = array of Arr1JLClassCastException;
+  Arr3JLClassCastException = array of Arr2JLClassCastException;
+
+  JCSDHPrivateKeySpec = class;
+  Arr1JCSDHPrivateKeySpec = array of JCSDHPrivateKeySpec;
+  Arr2JCSDHPrivateKeySpec = array of Arr1JCSDHPrivateKeySpec;
+  Arr3JCSDHPrivateKeySpec = array of Arr2JCSDHPrivateKeySpec;
+
+  JLInternalError = class;
+  Arr1JLInternalError = array of JLInternalError;
+  Arr2JLInternalError = array of Arr1JLInternalError;
+  Arr3JLInternalError = array of Arr2JLInternalError;
+
+  AMEEffectFactory = class;
+  Arr1AMEEffectFactory = array of AMEEffectFactory;
+  Arr2AMEEffectFactory = array of Arr1AMEEffectFactory;
+  Arr3AMEEffectFactory = array of Arr2AMEEffectFactory;
+
+  OAHParseException = class;
+  Arr1OAHParseException = array of OAHParseException;
+  Arr2OAHParseException = array of Arr1OAHParseException;
+  Arr3OAHParseException = array of Arr2OAHParseException;
+
+  OAHICTRefQueueWorker = class;
+  Arr1OAHICTRefQueueWorker = array of OAHICTRefQueueWorker;
+  Arr2OAHICTRefQueueWorker = array of Arr1OAHICTRefQueueWorker;
+  Arr3OAHICTRefQueueWorker = array of Arr2OAHICTRefQueueWorker;
+
+  OAHICDefaultUserTokenHandler = class;
+  Arr1OAHICDefaultUserTokenHandler = array of OAHICDefaultUserTokenHandler;
+  Arr2OAHICDefaultUserTokenHandler = array of Arr1OAHICDefaultUserTokenHandler;
+  Arr3OAHICDefaultUserTokenHandler = array of Arr2OAHICDefaultUserTokenHandler;
+
+  ATMBaseKeyListener = class;
+  Arr1ATMBaseKeyListener = array of ATMBaseKeyListener;
+  Arr2ATMBaseKeyListener = array of Arr1ATMBaseKeyListener;
+  Arr3ATMBaseKeyListener = array of Arr2ATMBaseKeyListener;
+
+  AOStatFs = class;
+  Arr1AOStatFs = array of AOStatFs;
+  Arr2AOStatFs = array of Arr1AOStatFs;
+  Arr3AOStatFs = array of Arr2AOStatFs;
+
+  ANRRtpStream = class;
+  Arr1ANRRtpStream = array of ANRRtpStream;
+  Arr2ANRRtpStream = array of Arr1ANRRtpStream;
+  Arr3ANRRtpStream = array of Arr2ANRRtpStream;
+
+  ATInstrumentationTestSuite = class;
+  Arr1ATInstrumentationTestSuite = array of ATInstrumentationTestSuite;
+  Arr2ATInstrumentationTestSuite = array of Arr1ATInstrumentationTestSuite;
+  Arr3ATInstrumentationTestSuite = array of Arr2ATInstrumentationTestSuite;
+
+  JNSSSLHandshakeException = class;
+  Arr1JNSSSLHandshakeException = array of JNSSSLHandshakeException;
+  Arr2JNSSSLHandshakeException = array of Arr1JNSSSLHandshakeException;
+  Arr3JNSSSLHandshakeException = array of Arr2JNSSSLHandshakeException;
+
+  JXPFactoryConfigurationError = class;
+  Arr1JXPFactoryConfigurationError = array of JXPFactoryConfigurationError;
+  Arr2JXPFactoryConfigurationError = array of Arr1JXPFactoryConfigurationError;
+  Arr3JXPFactoryConfigurationError = array of Arr2JXPFactoryConfigurationError;
+
+  JSKeyException = class;
+  Arr1JSKeyException = array of JSKeyException;
+  Arr2JSKeyException = array of Arr1JSKeyException;
+  Arr3JSKeyException = array of Arr2JSKeyException;
+
+  JCExemptionMechanism = class;
+  Arr1JCExemptionMechanism = array of JCExemptionMechanism;
+  Arr2JCExemptionMechanism = array of Arr1JCExemptionMechanism;
+  Arr3JCExemptionMechanism = array of Arr2JCExemptionMechanism;
+
+  JNDatagramPacket = class;
+  Arr1JNDatagramPacket = array of JNDatagramPacket;
+  Arr2JNDatagramPacket = array of Arr1JNDatagramPacket;
+  Arr3JNDatagramPacket = array of Arr2JNDatagramPacket;
+
+  ANLocalServerSocket = class;
+  Arr1ANLocalServerSocket = array of ANLocalServerSocket;
+  Arr2ANLocalServerSocket = array of Arr1ANLocalServerSocket;
+  Arr3ANLocalServerSocket = array of Arr2ANLocalServerSocket;
+
+  OAHCMHttpRequestBase = class;
+  Arr1OAHCMHttpRequestBase = array of OAHCMHttpRequestBase;
+  Arr2OAHCMHttpRequestBase = array of Arr1OAHCMHttpRequestBase;
+  Arr3OAHCMHttpRequestBase = array of Arr2OAHCMHttpRequestBase;
+
+  JIOutputStreamWriter = class;
+  Arr1JIOutputStreamWriter = array of JIOutputStreamWriter;
+  Arr2JIOutputStreamWriter = array of Arr1JIOutputStreamWriter;
+  Arr3JIOutputStreamWriter = array of Arr2JIOutputStreamWriter;
+
+  AGComposeShader = class;
+  Arr1AGComposeShader = array of AGComposeShader;
+  Arr2AGComposeShader = array of Arr1AGComposeShader;
+  Arr3AGComposeShader = array of Arr2AGComposeShader;
+
+  ANWWpsInfo = class;
+  Arr1ANWWpsInfo = array of ANWWpsInfo;
+  Arr2ANWWpsInfo = array of Arr1ANWWpsInfo;
+  Arr3ANWWpsInfo = array of Arr2ANWWpsInfo;
+
+  JLInterruptedException = class;
+  Arr1JLInterruptedException = array of JLInterruptedException;
+  Arr2JLInterruptedException = array of Arr1JLInterruptedException;
+  Arr3JLInterruptedException = array of Arr2JLInterruptedException;
+
+  AATabActivity = class;
+  Arr1AATabActivity = array of AATabActivity;
+  Arr2AATabActivity = array of Arr1AATabActivity;
+  Arr3AATabActivity = array of Arr2AATabActivity;
+
+  AWFrameLayout = class;
+  Arr1AWFrameLayout = array of AWFrameLayout;
+  Arr2AWFrameLayout = array of Arr1AWFrameLayout;
+  Arr3AWFrameLayout = array of Arr2AWFrameLayout;
+
+  JICharConversionException = class;
+  Arr1JICharConversionException = array of JICharConversionException;
+  Arr2JICharConversionException = array of Arr1JICharConversionException;
+  Arr3JICharConversionException = array of Arr2JICharConversionException;
+
+  ATSMetricAffectingSpan = class;
+  Arr1ATSMetricAffectingSpan = array of ATSMetricAffectingSpan;
+  Arr2ATSMetricAffectingSpan = array of Arr1ATSMetricAffectingSpan;
+  Arr3ATSMetricAffectingSpan = array of Arr2ATSMetricAffectingSpan;
+
+  ATAndroidTestCase = class;
+  Arr1ATAndroidTestCase = array of ATAndroidTestCase;
+  Arr2ATAndroidTestCase = array of Arr1ATAndroidTestCase;
+  Arr3ATAndroidTestCase = array of Arr2ATAndroidTestCase;
+
+  OXSSAXNotSupportedException = class;
+  Arr1OXSSAXNotSupportedException = array of OXSSAXNotSupportedException;
+  Arr2OXSSAXNotSupportedException = array of Arr1OXSSAXNotSupportedException;
+  Arr3OXSSAXNotSupportedException = array of Arr2OXSSAXNotSupportedException;
+
+  ANMailTo = class;
+  Arr1ANMailTo = array of ANMailTo;
+  Arr2ANMailTo = array of Arr1ANMailTo;
+  Arr3ANMailTo = array of Arr2ANMailTo;
+
+  JNCCancelledKeyException = class;
+  Arr1JNCCancelledKeyException = array of JNCCancelledKeyException;
+  Arr2JNCCancelledKeyException = array of Arr1JNCCancelledKeyException;
+  Arr3JNCCancelledKeyException = array of Arr2JNCCancelledKeyException;
+
+  ATSpannableStringBuilder = class;
+  Arr1ATSpannableStringBuilder = array of ATSpannableStringBuilder;
+  Arr2ATSpannableStringBuilder = array of Arr1ATSpannableStringBuilder;
+  Arr3ATSpannableStringBuilder = array of Arr2ATSpannableStringBuilder;
+
+  AASearchManager = class;
+  Arr1AASearchManager = array of AASearchManager;
+  Arr2AASearchManager = array of Arr1AASearchManager;
+  Arr3AASearchManager = array of Arr2AASearchManager;
+
+  JLNumberFormatException = class;
+  Arr1JLNumberFormatException = array of JLNumberFormatException;
+  Arr2JLNumberFormatException = array of Arr1JLNumberFormatException;
+  Arr3JLNumberFormatException = array of Arr2JLNumberFormatException;
+
+  AAUiModeManager = class;
+  Arr1AAUiModeManager = array of AAUiModeManager;
+  Arr2AAUiModeManager = array of Arr1AAUiModeManager;
+  Arr3AAUiModeManager = array of Arr2AAUiModeManager;
+
+  ATSpannedString = class;
+  Arr1ATSpannedString = array of ATSpannedString;
+  Arr2ATSpannedString = array of Arr1ATSpannedString;
+  Arr3ATSpannedString = array of Arr2ATSpannedString;
+
+  ANUri = class;
+  Arr1ANUri = array of ANUri;
+  Arr2ANUri = array of Arr1ANUri;
+  Arr3ANUri = array of Arr2ANUri;
+
+  JCBadPaddingException = class;
+  Arr1JCBadPaddingException = array of JCBadPaddingException;
+  Arr2JCBadPaddingException = array of Arr1JCBadPaddingException;
+  Arr3JCBadPaddingException = array of Arr2JCBadPaddingException;
+
+  OAHEBasicHttpEntity = class;
+  Arr1OAHEBasicHttpEntity = array of OAHEBasicHttpEntity;
+  Arr2OAHEBasicHttpEntity = array of Arr1OAHEBasicHttpEntity;
+  Arr3OAHEBasicHttpEntity = array of Arr2OAHEBasicHttpEntity;
+
+  OAHCHttpResponseException = class;
+  Arr1OAHCHttpResponseException = array of OAHCHttpResponseException;
+  Arr2OAHCHttpResponseException = array of Arr1OAHCHttpResponseException;
+  Arr3OAHCHttpResponseException = array of Arr2OAHCHttpResponseException;
+
+  OAHIAAuthSchemeBase = class;
+  Arr1OAHIAAuthSchemeBase = array of OAHIAAuthSchemeBase;
+  Arr2OAHIAAuthSchemeBase = array of Arr1OAHIAAuthSchemeBase;
+  Arr3OAHIAAuthSchemeBase = array of Arr2OAHIAAuthSchemeBase;
+
+  JSNoSuchAlgorithmException = class;
+  Arr1JSNoSuchAlgorithmException = array of JSNoSuchAlgorithmException;
+  Arr2JSNoSuchAlgorithmException = array of Arr1JSNoSuchAlgorithmException;
+  Arr3JSNoSuchAlgorithmException = array of Arr2JSNoSuchAlgorithmException;
+
+  AWZoomButtonsController = class;
+  Arr1AWZoomButtonsController = array of AWZoomButtonsController;
+  Arr2AWZoomButtonsController = array of Arr1AWZoomButtonsController;
+  Arr3AWZoomButtonsController = array of Arr2AWZoomButtonsController;
+
+  ARSampler = class;
+  Arr1ARSampler = array of ARSampler;
+  Arr2ARSampler = array of Arr1ARSampler;
+  Arr3ARSampler = array of Arr2ARSampler;
+
+  JUCThreadPoolExecutor = class;
+  Arr1JUCThreadPoolExecutor = array of JUCThreadPoolExecutor;
+  Arr2JUCThreadPoolExecutor = array of Arr1JUCThreadPoolExecutor;
+  Arr3JUCThreadPoolExecutor = array of Arr2JUCThreadPoolExecutor;
+
+  OAHCPAuthPolicy = class;
+  Arr1OAHCPAuthPolicy = array of OAHCPAuthPolicy;
+  Arr2OAHCPAuthPolicy = array of Arr1OAHCPAuthPolicy;
+  Arr3OAHCPAuthPolicy = array of Arr2OAHCPAuthPolicy;
+
+  JSDate = class;
+  Arr1JSDate = array of JSDate;
+  Arr2JSDate = array of Arr1JSDate;
+  Arr3JSDate = array of Arr2JSDate;
+
+  JNNetworkInterface = class;
+  Arr1JNNetworkInterface = array of JNNetworkInterface;
+  Arr2JNNetworkInterface = array of Arr1JNNetworkInterface;
+  Arr3JNNetworkInterface = array of Arr2JNNetworkInterface;
+
+  OAHPHttpConnectionParamBean = class;
+  Arr1OAHPHttpConnectionParamBean = array of OAHPHttpConnectionParamBean;
+  Arr2OAHPHttpConnectionParamBean = array of Arr1OAHPHttpConnectionParamBean;
+  Arr3OAHPHttpConnectionParamBean = array of Arr2OAHPHttpConnectionParamBean;
+
+  JUZCheckedOutputStream = class;
+  Arr1JUZCheckedOutputStream = array of JUZCheckedOutputStream;
+  Arr2JUZCheckedOutputStream = array of Arr1JUZCheckedOutputStream;
+  Arr3JUZCheckedOutputStream = array of Arr2JUZCheckedOutputStream;
+
+  OXSHDefaultHandler = class;
+  Arr1OXSHDefaultHandler = array of OXSHDefaultHandler;
+  Arr2OXSHDefaultHandler = array of Arr1OXSHDefaultHandler;
+  Arr3OXSHDefaultHandler = array of Arr2OXSHDefaultHandler;
+
+  JSACPasswordCallback = class;
+  Arr1JSACPasswordCallback = array of JSACPasswordCallback;
+  Arr2JSACPasswordCallback = array of Arr1JSACPasswordCallback;
+  Arr3JSACPasswordCallback = array of Arr2JSACPasswordCallback;
+
+  ANSSLSessionCache = class;
+  Arr1ANSSLSessionCache = array of ANSSLSessionCache;
+  Arr2ANSSLSessionCache = array of Arr1ANSSLSessionCache;
+  Arr3ANSSLSessionCache = array of Arr2ANSSLSessionCache;
+
+  AUJsonWriter = class;
+  Arr1AUJsonWriter = array of AUJsonWriter;
+  Arr2AUJsonWriter = array of Arr1AUJsonWriter;
+  Arr3AUJsonWriter = array of Arr2AUJsonWriter;
+
+  OAHINoConnectionReuseStrategy = class;
+  Arr1OAHINoConnectionReuseStrategy = array of OAHINoConnectionReuseStrategy;
+  Arr2OAHINoConnectionReuseStrategy = array of Arr1OAHINoConnectionReuseStrategy;
+  Arr3OAHINoConnectionReuseStrategy = array of Arr2OAHINoConnectionReuseStrategy;
+
+  JIStringBufferInputStream = class;
+  Arr1JIStringBufferInputStream = array of JIStringBufferInputStream;
+  Arr2JIStringBufferInputStream = array of Arr1JIStringBufferInputStream;
+  Arr3JIStringBufferInputStream = array of Arr2JIStringBufferInputStream;
+
+  OXVSDriver = class;
+  Arr1OXVSDriver = array of OXVSDriver;
+  Arr2OXVSDriver = array of Arr1OXVSDriver;
+  Arr3OXVSDriver = array of Arr2OXVSDriver;
+
+  JLRPhantomReference = class;
+  Arr1JLRPhantomReference = array of JLRPhantomReference;
+  Arr2JLRPhantomReference = array of Arr1JLRPhantomReference;
+  Arr3JLRPhantomReference = array of Arr2JLRPhantomReference;
+
+  OAHCPRequestAddCookies = class;
+  Arr1OAHCPRequestAddCookies = array of OAHCPRequestAddCookies;
+  Arr2OAHCPRequestAddCookies = array of Arr1OAHCPRequestAddCookies;
+  Arr3OAHCPRequestAddCookies = array of Arr2OAHCPRequestAddCookies;
+
+  OAHCRedirectException = class;
+  Arr1OAHCRedirectException = array of OAHCRedirectException;
+  Arr2OAHCRedirectException = array of Arr1OAHCRedirectException;
+  Arr3OAHCRedirectException = array of Arr2OAHCRedirectException;
+
+  AWListPopupWindow = class;
+  Arr1AWListPopupWindow = array of AWListPopupWindow;
+  Arr2AWListPopupWindow = array of Arr1AWListPopupWindow;
+  Arr3AWListPopupWindow = array of Arr2AWListPopupWindow;
+
+  JIFileWriter = class;
+  Arr1JIFileWriter = array of JIFileWriter;
+  Arr2JIFileWriter = array of Arr1JIFileWriter;
+  Arr3JIFileWriter = array of Arr2JIFileWriter;
+
+  OAHCPConnManagerParams = class;
+  Arr1OAHCPConnManagerParams = array of OAHCPConnManagerParams;
+  Arr2OAHCPConnManagerParams = array of Arr1OAHCPConnManagerParams;
+  Arr3OAHCPConnManagerParams = array of Arr2OAHCPConnManagerParams;
+
+  AMAAudioEffect = class;
+  Arr1AMAAudioEffect = array of AMAAudioEffect;
+  Arr2AMAAudioEffect = array of Arr1AMAAudioEffect;
+  Arr3AMAAudioEffect = array of Arr2AMAAudioEffect;
+
+  AAInstrumentation = class;
+  Arr1AAInstrumentation = array of AAInstrumentation;
+  Arr2AAInstrumentation = array of Arr1AAInstrumentation;
+  Arr3AAInstrumentation = array of Arr2AAInstrumentation;
+
+  JULSocketHandler = class;
+  Arr1JULSocketHandler = array of JULSocketHandler;
+  Arr2JULSocketHandler = array of Arr1JULSocketHandler;
+  Arr3JULSocketHandler = array of Arr2JULSocketHandler;
+
+  AUPatterns = class;
+  Arr1AUPatterns = array of AUPatterns;
+  Arr2AUPatterns = array of Arr1AUPatterns;
+  Arr3AUPatterns = array of Arr2AUPatterns;
+
+  ANConnectivityManager = class;
+  Arr1ANConnectivityManager = array of ANConnectivityManager;
+  Arr2ANConnectivityManager = array of Arr1ANConnectivityManager;
+  Arr3ANConnectivityManager = array of Arr2ANConnectivityManager;
+
+  AGRectF = class;
+  Arr1AGRectF = array of AGRectF;
+  Arr2AGRectF = array of Arr1AGRectF;
+  Arr3AGRectF = array of Arr2AGRectF;
+
+  OAHIARFC2617Scheme = class;
+  Arr1OAHIARFC2617Scheme = array of OAHIARFC2617Scheme;
+  Arr2OAHIARFC2617Scheme = array of Arr1OAHIARFC2617Scheme;
+  Arr3OAHIARFC2617Scheme = array of Arr2OAHIARFC2617Scheme;
+
+  ADSSQLiteQuery = class;
+  Arr1ADSSQLiteQuery = array of ADSSQLiteQuery;
+  Arr2ADSSQLiteQuery = array of Arr1ADSSQLiteQuery;
+  Arr3ADSSQLiteQuery = array of Arr2ADSSQLiteQuery;
+
+  JLRMalformedParameterizedTypeException = class;
+  Arr1JLRMalformedParameterizedTypeException = array of JLRMalformedParameterizedTypeException;
+  Arr2JLRMalformedParameterizedTypeException = array of Arr1JLRMalformedParameterizedTypeException;
+  Arr3JLRMalformedParameterizedTypeException = array of Arr2JLRMalformedParameterizedTypeException;
+
+  JNJarURLConnection = class;
+  Arr1JNJarURLConnection = array of JNJarURLConnection;
+  Arr2JNJarURLConnection = array of Arr1JNJarURLConnection;
+  Arr3JNJarURLConnection = array of Arr2JNJarURLConnection;
+
+  AAActivity = class;
+  Arr1AAActivity = array of AAActivity;
+  Arr2AAActivity = array of Arr1AAActivity;
+  Arr3AAActivity = array of Arr2AAActivity;
+
+  AWWebStorage = class;
+  Arr1AWWebStorage = array of AWWebStorage;
+  Arr2AWWebStorage = array of Arr1AWWebStorage;
+  Arr3AWWebStorage = array of Arr2AWWebStorage;
+
+  JSALLoginException = class;
+  Arr1JSALLoginException = array of JSALLoginException;
+  Arr2JSALLoginException = array of Arr1JSALLoginException;
+  Arr3JSALLoginException = array of Arr2JSALLoginException;
+
+  ATSSubscriptSpan = class;
+  Arr1ATSSubscriptSpan = array of ATSSubscriptSpan;
+  Arr2ATSSubscriptSpan = array of Arr1ATSSubscriptSpan;
+  Arr3ATSSubscriptSpan = array of Arr2ATSSubscriptSpan;
+
+  JIByteArrayInputStream = class;
+  Arr1JIByteArrayInputStream = array of JIByteArrayInputStream;
+  Arr2JIByteArrayInputStream = array of Arr1JIByteArrayInputStream;
+  Arr3JIByteArrayInputStream = array of Arr2JIByteArrayInputStream;
+
+  JLIncompatibleClassChangeError = class;
+  Arr1JLIncompatibleClassChangeError = array of JLIncompatibleClassChangeError;
+  Arr2JLIncompatibleClassChangeError = array of Arr1JLIncompatibleClassChangeError;
+  Arr3JLIncompatibleClassChangeError = array of Arr2JLIncompatibleClassChangeError;
+
+  JXVSchema = class;
+  Arr1JXVSchema = array of JXVSchema;
+  Arr2JXVSchema = array of Arr1JXVSchema;
+  Arr3JXVSchema = array of Arr2JXVSchema;
+
+  OAHIABasicSchemeFactory = class;
+  Arr1OAHIABasicSchemeFactory = array of OAHIABasicSchemeFactory;
+  Arr2OAHIABasicSchemeFactory = array of Arr1OAHIABasicSchemeFactory;
+  Arr3OAHIABasicSchemeFactory = array of Arr2OAHIABasicSchemeFactory;
+
+  AWShareActionProvider = class;
+  Arr1AWShareActionProvider = array of AWShareActionProvider;
+  Arr2AWShareActionProvider = array of Arr1AWShareActionProvider;
+  Arr3AWShareActionProvider = array of Arr2AWShareActionProvider;
+
+  OAHPBasicHttpProcessor = class;
+  Arr1OAHPBasicHttpProcessor = array of OAHPBasicHttpProcessor;
+  Arr2OAHPBasicHttpProcessor = array of Arr1OAHPBasicHttpProcessor;
+  Arr3OAHPBasicHttpProcessor = array of Arr2OAHPBasicHttpProcessor;
+
+  OAHICAbstractCookieAttributeHandler = class;
+  Arr1OAHICAbstractCookieAttributeHandler = array of OAHICAbstractCookieAttributeHandler;
+  Arr2OAHICAbstractCookieAttributeHandler = array of Arr1OAHICAbstractCookieAttributeHandler;
+  Arr3OAHICAbstractCookieAttributeHandler = array of Arr2OAHICAbstractCookieAttributeHandler;
+
+  ARFont = class;
+  Arr1ARFont = array of ARFont;
+  Arr2ARFont = array of Arr1ARFont;
+  Arr3ARFont = array of Arr2ARFont;
+
+  AWBaseAdapter = class;
+  Arr1AWBaseAdapter = array of AWBaseAdapter;
+  Arr2AWBaseAdapter = array of Arr1AWBaseAdapter;
+  Arr3AWBaseAdapter = array of Arr2AWBaseAdapter;
+
+  AVInflateException = class;
+  Arr1AVInflateException = array of AVInflateException;
+  Arr2AVInflateException = array of Arr1AVInflateException;
+  Arr3AVInflateException = array of Arr2AVInflateException;
+
+  ADSSQLiteDatabaseCorruptException = class;
+  Arr1ADSSQLiteDatabaseCorruptException = array of ADSSQLiteDatabaseCorruptException;
+  Arr2ADSSQLiteDatabaseCorruptException = array of Arr1ADSSQLiteDatabaseCorruptException;
+  Arr3ADSSQLiteDatabaseCorruptException = array of Arr2ADSSQLiteDatabaseCorruptException;
+
+  JxSCCertificateNotYetValidException = class;
+  Arr1JxSCCertificateNotYetValidException = array of JxSCCertificateNotYetValidException;
+  Arr2JxSCCertificateNotYetValidException = array of Arr1JxSCCertificateNotYetValidException;
+  Arr3JxSCCertificateNotYetValidException = array of Arr2JxSCCertificateNotYetValidException;
+
+  JNSSSLContext = class;
+  Arr1JNSSSLContext = array of JNSSSLContext;
+  Arr2JNSSSLContext = array of Arr1JNSSSLContext;
+  Arr3JNSSSLContext = array of Arr2JNSSSLContext;
+
+  OAHCPRequestProxyAuthentication = class;
+  Arr1OAHCPRequestProxyAuthentication = array of OAHCPRequestProxyAuthentication;
+  Arr2OAHCPRequestProxyAuthentication = array of Arr1OAHCPRequestProxyAuthentication;
+  Arr3OAHCPRequestProxyAuthentication = array of Arr2OAHCPRequestProxyAuthentication;
+
+  OAHIADigestSchemeFactory = class;
+  Arr1OAHIADigestSchemeFactory = array of OAHIADigestSchemeFactory;
+  Arr2OAHIADigestSchemeFactory = array of Arr1OAHIADigestSchemeFactory;
+  Arr3OAHIADigestSchemeFactory = array of Arr2OAHIADigestSchemeFactory;
+
+  APRingtonePreference = class;
+  Arr1APRingtonePreference = array of APRingtonePreference;
+  Arr2APRingtonePreference = array of Arr1APRingtonePreference;
+  Arr3APRingtonePreference = array of Arr2APRingtonePreference;
+
+  JSAlgorithmParameterGeneratorSpi = class;
+  Arr1JSAlgorithmParameterGeneratorSpi = array of JSAlgorithmParameterGeneratorSpi;
+  Arr2JSAlgorithmParameterGeneratorSpi = array of Arr1JSAlgorithmParameterGeneratorSpi;
+  Arr3JSAlgorithmParameterGeneratorSpi = array of Arr2JSAlgorithmParameterGeneratorSpi;
+
+  JSDigestOutputStream = class;
+  Arr1JSDigestOutputStream = array of JSDigestOutputStream;
+  Arr2JSDigestOutputStream = array of Arr1JSDigestOutputStream;
+  Arr3JSDigestOutputStream = array of Arr2JSDigestOutputStream;
+
+  JSCCertStoreSpi = class;
+  Arr1JSCCertStoreSpi = array of JSCCertStoreSpi;
+  Arr2JSCCertStoreSpi = array of Arr1JSCCertStoreSpi;
+  Arr3JSCCertStoreSpi = array of Arr2JSCCertStoreSpi;
+
+  ACPComponentInfo = class;
+  Arr1ACPComponentInfo = array of ACPComponentInfo;
+  Arr2ACPComponentInfo = array of Arr1ACPComponentInfo;
+  Arr3ACPComponentInfo = array of Arr2ACPComponentInfo;
+
+  ABBluetoothServerSocket = class;
+  Arr1ABBluetoothServerSocket = array of ABBluetoothServerSocket;
+  Arr2ABBluetoothServerSocket = array of Arr1ABBluetoothServerSocket;
+  Arr3ABBluetoothServerSocket = array of Arr2ABBluetoothServerSocket;
+
+  JNCFileLockInterruptionException = class;
+  Arr1JNCFileLockInterruptionException = array of JNCFileLockInterruptionException;
+  Arr2JNCFileLockInterruptionException = array of Arr1JNCFileLockInterruptionException;
+  Arr3JNCFileLockInterruptionException = array of Arr2JNCFileLockInterruptionException;
+
+  JCIllegalBlockSizeException = class;
+  Arr1JCIllegalBlockSizeException = array of JCIllegalBlockSizeException;
+  Arr2JCIllegalBlockSizeException = array of Arr1JCIllegalBlockSizeException;
+  Arr3JCIllegalBlockSizeException = array of Arr2JCIllegalBlockSizeException;
+
+  ATMSingleLineTransformationMethod = class;
+  Arr1ATMSingleLineTransformationMethod = array of ATMSingleLineTransformationMethod;
+  Arr2ATMSingleLineTransformationMethod = array of Arr1ATMSingleLineTransformationMethod;
+  Arr3ATMSingleLineTransformationMethod = array of Arr2ATMSingleLineTransformationMethod;
+
+  AGSurfaceTexture = class;
+  Arr1AGSurfaceTexture = array of AGSurfaceTexture;
+  Arr2AGSurfaceTexture = array of Arr1AGSurfaceTexture;
+  Arr3AGSurfaceTexture = array of Arr2AGSurfaceTexture;
+
+  OAHIELaxContentLengthStrategy = class;
+  Arr1OAHIELaxContentLengthStrategy = array of OAHIELaxContentLengthStrategy;
+  Arr2OAHIELaxContentLengthStrategy = array of Arr1OAHIELaxContentLengthStrategy;
+  Arr3OAHIELaxContentLengthStrategy = array of Arr2OAHIELaxContentLengthStrategy;
+
+  JLOutOfMemoryError = class;
+  Arr1JLOutOfMemoryError = array of JLOutOfMemoryError;
+  Arr2JLOutOfMemoryError = array of Arr1JLOutOfMemoryError;
+  Arr3JLOutOfMemoryError = array of Arr2JLOutOfMemoryError;
+
+  AVView = class;
+  Arr1AVView = array of AVView;
+  Arr2AVView = array of Arr1AVView;
+  Arr3AVView = array of Arr2AVView;
+
+  ATMMultiTapKeyListener = class;
+  Arr1ATMMultiTapKeyListener = array of ATMMultiTapKeyListener;
+  Arr2ATMMultiTapKeyListener = array of Arr1ATMMultiTapKeyListener;
+  Arr3ATMMultiTapKeyListener = array of Arr2ATMMultiTapKeyListener;
+
+  OAHAAuthSchemeRegistry = class;
+  Arr1OAHAAuthSchemeRegistry = array of OAHAAuthSchemeRegistry;
+  Arr2OAHAAuthSchemeRegistry = array of Arr1OAHAAuthSchemeRegistry;
+  Arr3OAHAAuthSchemeRegistry = array of Arr2OAHAAuthSchemeRegistry;
+
+  JUMissingResourceException = class;
+  Arr1JUMissingResourceException = array of JUMissingResourceException;
+  Arr2JUMissingResourceException = array of Arr1JUMissingResourceException;
+  Arr3JUMissingResourceException = array of Arr2JUMissingResourceException;
+
+  OAHPRequestTargetHost = class;
+  Arr1OAHPRequestTargetHost = array of OAHPRequestTargetHost;
+  Arr2OAHPRequestTargetHost = array of Arr1OAHPRequestTargetHost;
+  Arr3OAHPRequestTargetHost = array of Arr2OAHPRequestTargetHost;
+
+  JCSealedObject = class;
+  Arr1JCSealedObject = array of JCSealedObject;
+  Arr2JCSealedObject = array of Arr1JCSealedObject;
+  Arr3JCSealedObject = array of Arr2JCSealedObject;
+
+  JUCSemaphore = class;
+  Arr1JUCSemaphore = array of JUCSemaphore;
+  Arr2JUCSemaphore = array of Arr1JUCSemaphore;
+  Arr3JUCSemaphore = array of Arr2JUCSemaphore;
+
+  AALoaderManager = class;
+  Arr1AALoaderManager = array of AALoaderManager;
+  Arr2AALoaderManager = array of Arr1AALoaderManager;
+  Arr3AALoaderManager = array of Arr2AALoaderManager;
+
+  JIFilterOutputStream = class;
+  Arr1JIFilterOutputStream = array of JIFilterOutputStream;
+  Arr2JIFilterOutputStream = array of Arr1JIFilterOutputStream;
+  Arr3JIFilterOutputStream = array of Arr2JIFilterOutputStream;
+
+  ADDrmInfoStatus = class;
+  Arr1ADDrmInfoStatus = array of ADDrmInfoStatus;
+  Arr2ADDrmInfoStatus = array of Arr1ADDrmInfoStatus;
+  Arr3ADDrmInfoStatus = array of Arr2ADDrmInfoStatus;
+
+  OAHCUURIUtils = class;
+  Arr1OAHCUURIUtils = array of OAHCUURIUtils;
+  Arr2OAHCUURIUtils = array of Arr1OAHCUURIUtils;
+  Arr3OAHCUURIUtils = array of Arr2OAHCUURIUtils;
+
+  AOVibrator = class;
+  Arr1AOVibrator = array of AOVibrator;
+  Arr2AOVibrator = array of Arr1AOVibrator;
+  Arr3AOVibrator = array of Arr2AOVibrator;
+
+  AGMaskFilter = class;
+  Arr1AGMaskFilter = array of AGMaskFilter;
+  Arr2AGMaskFilter = array of Arr1AGMaskFilter;
+  Arr3AGMaskFilter = array of Arr2AGMaskFilter;
+
+  JSCCertificateEncodingException = class;
+  Arr1JSCCertificateEncodingException = array of JSCCertificateEncodingException;
+  Arr2JSCCertificateEncodingException = array of Arr1JSCCertificateEncodingException;
+  Arr3JSCCertificateEncodingException = array of Arr2JSCCertificateEncodingException;
+
+  JNDatagramSocketImpl = class;
+  Arr1JNDatagramSocketImpl = array of JNDatagramSocketImpl;
+  Arr2JNDatagramSocketImpl = array of Arr1JNDatagramSocketImpl;
+  Arr3JNDatagramSocketImpl = array of Arr2JNDatagramSocketImpl;
+
+  AWToggleButton = class;
+  Arr1AWToggleButton = array of AWToggleButton;
+  Arr2AWToggleButton = array of Arr1AWToggleButton;
+  Arr3AWToggleButton = array of Arr2AWToggleButton;
+
+  AANativeActivity = class;
+  Arr1AANativeActivity = array of AANativeActivity;
+  Arr2AANativeActivity = array of Arr1AANativeActivity;
+  Arr3AANativeActivity = array of Arr2AANativeActivity;
+
+  AOParcelFormatException = class;
+  Arr1AOParcelFormatException = array of AOParcelFormatException;
+  Arr2AOParcelFormatException = array of Arr1AOParcelFormatException;
+  Arr3AOParcelFormatException = array of Arr2AOParcelFormatException;
+
+  AVARotateAnimation = class;
+  Arr1AVARotateAnimation = array of AVARotateAnimation;
+  Arr2AVARotateAnimation = array of Arr1AVARotateAnimation;
+  Arr3AVARotateAnimation = array of Arr2AVARotateAnimation;
+
+  ANSSipAudioCall = class;
+  Arr1ANSSipAudioCall = array of ANSSipAudioCall;
+  Arr2ANSSipAudioCall = array of Arr1ANSSipAudioCall;
+  Arr3ANSSipAudioCall = array of Arr2ANSSipAudioCall;
+
+  AWCalendarView = class;
+  Arr1AWCalendarView = array of AWCalendarView;
+  Arr2AWCalendarView = array of Arr1AWCalendarView;
+  Arr3AWCalendarView = array of Arr2AWCalendarView;
+
+  AWCursorAdapter = class;
+  Arr1AWCursorAdapter = array of AWCursorAdapter;
+  Arr2AWCursorAdapter = array of Arr1AWCursorAdapter;
+  Arr3AWCursorAdapter = array of Arr2AWCursorAdapter;
+
+  JNSCertPathTrustManagerParameters = class;
+  Arr1JNSCertPathTrustManagerParameters = array of JNSCertPathTrustManagerParameters;
+  Arr2JNSCertPathTrustManagerParameters = array of Arr1JNSCertPathTrustManagerParameters;
+  Arr3JNSCertPathTrustManagerParameters = array of Arr2JNSCertPathTrustManagerParameters;
+
+  JUWeakHashMap = class;
+  Arr1JUWeakHashMap = array of JUWeakHashMap;
+  Arr2JUWeakHashMap = array of Arr1JUWeakHashMap;
+  Arr3JUWeakHashMap = array of Arr2JUWeakHashMap;
+
+  OAHIDefaultHttpServerConnection = class;
+  Arr1OAHIDefaultHttpServerConnection = array of OAHIDefaultHttpServerConnection;
+  Arr2OAHIDefaultHttpServerConnection = array of Arr1OAHIDefaultHttpServerConnection;
+  Arr3OAHIDefaultHttpServerConnection = array of Arr2OAHIDefaultHttpServerConnection;
+
+  JTStringCharacterIterator = class;
+  Arr1JTStringCharacterIterator = array of JTStringCharacterIterator;
+  Arr2JTStringCharacterIterator = array of Arr1JTStringCharacterIterator;
+  Arr3JTStringCharacterIterator = array of Arr2JTStringCharacterIterator;
+
+  JUListResourceBundle = class;
+  Arr1JUListResourceBundle = array of JUListResourceBundle;
+  Arr2JUListResourceBundle = array of Arr1JUListResourceBundle;
+  Arr3JUListResourceBundle = array of Arr2JUListResourceBundle;
+
+  JIRandomAccessFile = class;
+  Arr1JIRandomAccessFile = array of JIRandomAccessFile;
+  Arr2JIRandomAccessFile = array of Arr1JIRandomAccessFile;
+  Arr3JIRandomAccessFile = array of Arr2JIRandomAccessFile;
+
+  JSConnectionEvent = class;
+  Arr1JSConnectionEvent = array of JSConnectionEvent;
+  Arr2JSConnectionEvent = array of Arr1JSConnectionEvent;
+  Arr3JSConnectionEvent = array of Arr2JSConnectionEvent;
+
+  JUCLReentrantReadWriteLock = class;
+  Arr1JUCLReentrantReadWriteLock = array of JUCLReentrantReadWriteLock;
+  Arr2JUCLReentrantReadWriteLock = array of Arr1JUCLReentrantReadWriteLock;
+  Arr3JUCLReentrantReadWriteLock = array of Arr2JUCLReentrantReadWriteLock;
+
+  AWWebViewClient = class;
+  Arr1AWWebViewClient = array of AWWebViewClient;
+  Arr2AWWebViewClient = array of Arr1AWWebViewClient;
+  Arr3AWWebViewClient = array of Arr2AWWebViewClient;
+
+  ADDrmConvertedStatus = class;
+  Arr1ADDrmConvertedStatus = array of ADDrmConvertedStatus;
+  Arr2ADDrmConvertedStatus = array of Arr1ADDrmConvertedStatus;
+  Arr3ADDrmConvertedStatus = array of Arr2ADDrmConvertedStatus;
+
+  AVVelocityTracker = class;
+  Arr1AVVelocityTracker = array of AVVelocityTracker;
+  Arr2AVVelocityTracker = array of Arr1AVVelocityTracker;
+  Arr3AVVelocityTracker = array of Arr2AVVelocityTracker;
+
+  JSSQLClientInfoException = class;
+  Arr1JSSQLClientInfoException = array of JSSQLClientInfoException;
+  Arr2JSSQLClientInfoException = array of Arr1JSSQLClientInfoException;
+  Arr3JSSQLClientInfoException = array of Arr2JSSQLClientInfoException;
+
+  OAHEInputStreamEntity = class;
+  Arr1OAHEInputStreamEntity = array of OAHEInputStreamEntity;
+  Arr2OAHEInputStreamEntity = array of Arr1OAHEInputStreamEntity;
+  Arr3OAHEInputStreamEntity = array of Arr2OAHEInputStreamEntity;
+
+  JNSSSLSocketFactory = class;
+  Arr1JNSSSLSocketFactory = array of JNSSSLSocketFactory;
+  Arr2JNSSSLSocketFactory = array of Arr1JNSSSLSocketFactory;
+  Arr3JNSSSLSocketFactory = array of Arr2JNSSSLSocketFactory;
+
+  JNCSelectableChannel = class;
+  Arr1JNCSelectableChannel = array of JNCSelectableChannel;
+  Arr2JNCSelectableChannel = array of Arr1JNCSelectableChannel;
+  Arr3JNCSelectableChannel = array of Arr2JNCSelectableChannel;
+
+  JNPasswordAuthentication = class;
+  Arr1JNPasswordAuthentication = array of JNPasswordAuthentication;
+  Arr2JNPasswordAuthentication = array of Arr1JNPasswordAuthentication;
+  Arr3JNPasswordAuthentication = array of Arr2JNPasswordAuthentication;
+
+  AVViewTreeObserver = class;
+  Arr1AVViewTreeObserver = array of AVViewTreeObserver;
+  Arr2AVViewTreeObserver = array of Arr1AVViewTreeObserver;
+  Arr3AVViewTreeObserver = array of Arr2AVViewTreeObserver;
+
+  JIPipedOutputStream = class;
+  Arr1JIPipedOutputStream = array of JIPipedOutputStream;
+  Arr2JIPipedOutputStream = array of Arr1JIPipedOutputStream;
+  Arr3JIPipedOutputStream = array of Arr2JIPipedOutputStream;
+
+  ADStaleDataException = class;
+  Arr1ADStaleDataException = array of ADStaleDataException;
+  Arr2ADStaleDataException = array of Arr1ADStaleDataException;
+  Arr3ADStaleDataException = array of Arr2ADStaleDataException;
+
+  JLAAnnotationFormatError = class;
+  Arr1JLAAnnotationFormatError = array of JLAAnnotationFormatError;
+  Arr2JLAAnnotationFormatError = array of Arr1JLAAnnotationFormatError;
+  Arr3JLAAnnotationFormatError = array of Arr2JLAAnnotationFormatError;
+
+  JUCTimeUnit = class;
+  Arr1JUCTimeUnit = array of JUCTimeUnit;
+  Arr2JUCTimeUnit = array of Arr1JUCTimeUnit;
+  Arr3JUCTimeUnit = array of Arr2JUCTimeUnit;
+
+  JUMissingFormatArgumentException = class;
+  Arr1JUMissingFormatArgumentException = array of JUMissingFormatArgumentException;
+  Arr2JUMissingFormatArgumentException = array of Arr1JUMissingFormatArgumentException;
+  Arr3JUMissingFormatArgumentException = array of Arr2JUMissingFormatArgumentException;
+
+  AUFloatMath = class;
+  Arr1AUFloatMath = array of AUFloatMath;
+  Arr2AUFloatMath = array of Arr1AUFloatMath;
+  Arr3AUFloatMath = array of Arr2AUFloatMath;
+
+  JXTTransformerFactory = class;
+  Arr1JXTTransformerFactory = array of JXTTransformerFactory;
+  Arr2JXTTransformerFactory = array of Arr1JXTTransformerFactory;
+  Arr3JXTTransformerFactory = array of Arr2JXTTransformerFactory;
+
+  ABBluetoothAdapter = class;
+  Arr1ABBluetoothAdapter = array of ABBluetoothAdapter;
+  Arr2ABBluetoothAdapter = array of Arr1ABBluetoothAdapter;
+  Arr3ABBluetoothAdapter = array of Arr2ABBluetoothAdapter;
+
+  ANTNdefFormatable = class;
+  Arr1ANTNdefFormatable = array of ANTNdefFormatable;
+  Arr2ANTNdefFormatable = array of Arr1ANTNdefFormatable;
+  Arr3ANTNdefFormatable = array of Arr2ANTNdefFormatable;
+
+  JTBidi = class;
+  Arr1JTBidi = array of JTBidi;
+  Arr2JTBidi = array of Arr1JTBidi;
+  Arr3JTBidi = array of Arr2JTBidi;
+
+  JSSQLDataException = class;
+  Arr1JSSQLDataException = array of JSSQLDataException;
+  Arr2JSSQLDataException = array of Arr1JSSQLDataException;
+  Arr3JSSQLDataException = array of Arr2JSSQLDataException;
+
+  JCNoSuchPaddingException = class;
+  Arr1JCNoSuchPaddingException = array of JCNoSuchPaddingException;
+  Arr2JCNoSuchPaddingException = array of Arr1JCNoSuchPaddingException;
+  Arr3JCNoSuchPaddingException = array of Arr2JCNoSuchPaddingException;
+
+  OAHCMHttpOptions = class;
+  Arr1OAHCMHttpOptions = array of OAHCMHttpOptions;
+  Arr2OAHCMHttpOptions = array of Arr1OAHCMHttpOptions;
+  Arr3OAHCMHttpOptions = array of Arr2OAHCMHttpOptions;
+
+  JIWriter = class;
+  Arr1JIWriter = array of JIWriter;
+  Arr2JIWriter = array of Arr1JIWriter;
+  Arr3JIWriter = array of Arr2JIWriter;
+
+  ATRenamingDelegatingContext = class;
+  Arr1ATRenamingDelegatingContext = array of ATRenamingDelegatingContext;
+  Arr2ATRenamingDelegatingContext = array of Arr1ATRenamingDelegatingContext;
+  Arr3ATRenamingDelegatingContext = array of Arr2ATRenamingDelegatingContext;
+
+  AWWebViewDatabase = class;
+  Arr1AWWebViewDatabase = array of AWWebViewDatabase;
+  Arr2AWWebViewDatabase = array of Arr1AWWebViewDatabase;
+  Arr3AWWebViewDatabase = array of Arr2AWWebViewDatabase;
+
+  AGDiscretePathEffect = class;
+  Arr1AGDiscretePathEffect = array of AGDiscretePathEffect;
+  Arr2AGDiscretePathEffect = array of Arr1AGDiscretePathEffect;
+  Arr3AGDiscretePathEffect = array of Arr2AGDiscretePathEffect;
+
+  ACClipData = class;
+  Arr1ACClipData = array of ACClipData;
+  Arr2ACClipData = array of Arr1ACClipData;
+  Arr3ACClipData = array of Arr2ACClipData;
+
+  AWTwoLineListItem = class;
+  Arr1AWTwoLineListItem = array of AWTwoLineListItem;
+  Arr2AWTwoLineListItem = array of Arr1AWTwoLineListItem;
+  Arr3AWTwoLineListItem = array of Arr2AWTwoLineListItem;
+
+  ATSmsManager = class;
+  Arr1ATSmsManager = array of ATSmsManager;
+  Arr2ATSmsManager = array of Arr1ATSmsManager;
+  Arr3ATSmsManager = array of Arr2ATSmsManager;
+
+  JUCCopyOnWriteArrayList = class;
+  Arr1JUCCopyOnWriteArrayList = array of JUCCopyOnWriteArrayList;
+  Arr2JUCCopyOnWriteArrayList = array of Arr1JUCCopyOnWriteArrayList;
+  Arr3JUCCopyOnWriteArrayList = array of Arr2JUCCopyOnWriteArrayList;
+
+  JIInvalidClassException = class;
+  Arr1JIInvalidClassException = array of JIInvalidClassException;
+  Arr2JIInvalidClassException = array of Arr1JIInvalidClassException;
+  Arr3JIInvalidClassException = array of Arr2JIInvalidClassException;
+
+  JCMac = class;
+  Arr1JCMac = array of JCMac;
+  Arr2JCMac = array of Arr1JCMac;
+  Arr3JCMac = array of Arr2JCMac;
+
+  JUCCopyOnWriteArraySet = class;
+  Arr1JUCCopyOnWriteArraySet = array of JUCCopyOnWriteArraySet;
+  Arr2JUCCopyOnWriteArraySet = array of Arr1JUCCopyOnWriteArraySet;
+  Arr3JUCCopyOnWriteArraySet = array of Arr2JUCCopyOnWriteArraySet;
+
+  JUZDeflaterOutputStream = class;
+  Arr1JUZDeflaterOutputStream = array of JUZDeflaterOutputStream;
+  Arr2JUZDeflaterOutputStream = array of Arr1JUZDeflaterOutputStream;
+  Arr3JUZDeflaterOutputStream = array of Arr2JUZDeflaterOutputStream;
+
+  OAHICDefaultHttpClient = class;
+  Arr1OAHICDefaultHttpClient = array of OAHICDefaultHttpClient;
+  Arr2OAHICDefaultHttpClient = array of Arr1OAHICDefaultHttpClient;
+  Arr3OAHICDefaultHttpClient = array of Arr2OAHICDefaultHttpClient;
+
+  ADSSQLiteClosable = class;
+  Arr1ADSSQLiteClosable = array of ADSSQLiteClosable;
+  Arr2ADSSQLiteClosable = array of Arr1ADSSQLiteClosable;
+  Arr3ADSSQLiteClosable = array of Arr2ADSSQLiteClosable;
+
+  JTCollationKey = class;
+  Arr1JTCollationKey = array of JTCollationKey;
+  Arr2JTCollationKey = array of Arr1JTCollationKey;
+  Arr3JTCollationKey = array of Arr2JTCollationKey;
+
+  AHUUsbManager = class;
+  Arr1AHUUsbManager = array of AHUUsbManager;
+  Arr2AHUUsbManager = array of Arr1AHUUsbManager;
+  Arr3AHUUsbManager = array of Arr2AHUUsbManager;
+
+  OAHCMHttpEntityEnclosingRequestBase = class;
+  Arr1OAHCMHttpEntityEnclosingRequestBase = array of OAHCMHttpEntityEnclosingRequestBase;
+  Arr2OAHCMHttpEntityEnclosingRequestBase = array of Arr1OAHCMHttpEntityEnclosingRequestBase;
+  Arr3OAHCMHttpEntityEnclosingRequestBase = array of Arr2OAHCMHttpEntityEnclosingRequestBase;
+
+  APMediaStore = class;
+  Arr1APMediaStore = array of APMediaStore;
+  Arr2APMediaStore = array of Arr1APMediaStore;
+  Arr3APMediaStore = array of Arr2APMediaStore;
+
+  AAKeyframe = class;
+  Arr1AAKeyframe = array of AAKeyframe;
+  Arr2AAKeyframe = array of Arr1AAKeyframe;
+  Arr3AAKeyframe = array of Arr2AAKeyframe;
+
+  JLNoSuchFieldError = class;
+  Arr1JLNoSuchFieldError = array of JLNoSuchFieldError;
+  Arr2JLNoSuchFieldError = array of Arr1JLNoSuchFieldError;
+  Arr3JLNoSuchFieldError = array of Arr2JLNoSuchFieldError;
+
+  ACPServiceInfo = class;
+  Arr1ACPServiceInfo = array of ACPServiceInfo;
+  Arr2ACPServiceInfo = array of Arr1ACPServiceInfo;
+  Arr3ACPServiceInfo = array of Arr2ACPServiceInfo;
+
+  OAHICBasicExpiresHandler = class;
+  Arr1OAHICBasicExpiresHandler = array of OAHICBasicExpiresHandler;
+  Arr2OAHICBasicExpiresHandler = array of Arr1OAHICBasicExpiresHandler;
+  Arr3OAHICBasicExpiresHandler = array of Arr2OAHICBasicExpiresHandler;
+
+  JNSSSLParameters = class;
+  Arr1JNSSSLParameters = array of JNSSSLParameters;
+  Arr2JNSSSLParameters = array of Arr1JNSSSLParameters;
+  Arr3JNSSSLParameters = array of Arr2JNSSSLParameters;
+
+  ADSSQLiteDiskIOException = class;
+  Arr1ADSSQLiteDiskIOException = array of ADSSQLiteDiskIOException;
+  Arr2ADSSQLiteDiskIOException = array of Arr1ADSSQLiteDiskIOException;
+  Arr3ADSSQLiteDiskIOException = array of Arr2ADSSQLiteDiskIOException;
+
+  ANTMifareClassic = class;
+  Arr1ANTMifareClassic = array of ANTMifareClassic;
+  Arr2ANTMifareClassic = array of Arr1ANTMifareClassic;
+  Arr3ANTMifareClassic = array of Arr2ANTMifareClassic;
+
+  JSClientInfoStatus = class;
+  Arr1JSClientInfoStatus = array of JSClientInfoStatus;
+  Arr2JSClientInfoStatus = array of Arr1JSClientInfoStatus;
+  Arr3JSClientInfoStatus = array of Arr2JSClientInfoStatus;
+
+  ANTag = class;
+  Arr1ANTag = array of ANTag;
+  Arr2ANTag = array of Arr1ANTag;
+  Arr3ANTag = array of Arr2ANTag;
+
+  AGDrawFilter = class;
+  Arr1AGDrawFilter = array of AGDrawFilter;
+  Arr2AGDrawFilter = array of Arr1AGDrawFilter;
+  Arr3AGDrawFilter = array of Arr2AGDrawFilter;
+
+  ASRootElement = class;
+  Arr1ASRootElement = array of ASRootElement;
+  Arr2ASRootElement = array of Arr1ASRootElement;
+  Arr3ASRootElement = array of Arr2ASRootElement;
+
+  OAHMBasicHeader = class;
+  Arr1OAHMBasicHeader = array of OAHMBasicHeader;
+  Arr2OAHMBasicHeader = array of Arr1OAHMBasicHeader;
+  Arr3OAHMBasicHeader = array of Arr2OAHMBasicHeader;
+
+  ATLoginFilter = class;
+  Arr1ATLoginFilter = array of ATLoginFilter;
+  Arr2ATLoginFilter = array of Arr1ATLoginFilter;
+  Arr3ATLoginFilter = array of Arr2ATLoginFilter;
+
+  OAHMBasicNameValuePair = class;
+  Arr1OAHMBasicNameValuePair = array of OAHMBasicNameValuePair;
+  Arr2OAHMBasicNameValuePair = array of Arr1OAHMBasicNameValuePair;
+  Arr3OAHMBasicNameValuePair = array of Arr2OAHMBasicNameValuePair;
+
+  OAHPResponseServer = class;
+  Arr1OAHPResponseServer = array of OAHPResponseServer;
+  Arr2OAHPResponseServer = array of Arr1OAHPResponseServer;
+  Arr3OAHPResponseServer = array of Arr2OAHPResponseServer;
+
+  ARRSSurfaceView = class;
+  Arr1ARRSSurfaceView = array of ARRSSurfaceView;
+  Arr2ARRSSurfaceView = array of Arr1ARRSSurfaceView;
+  Arr3ARRSSurfaceView = array of Arr2ARRSSurfaceView;
+
+  ACContentProviderOperation = class;
+  Arr1ACContentProviderOperation = array of ACContentProviderOperation;
+  Arr2ACContentProviderOperation = array of Arr1ACContentProviderOperation;
+  Arr3ACContentProviderOperation = array of Arr2ACContentProviderOperation;
+
+  JSCCertStore = class;
+  Arr1JSCCertStore = array of JSCCertStore;
+  Arr2JSCCertStore = array of Arr1JSCCertStore;
+  Arr3JSCCertStore = array of Arr2JSCCertStore;
+
+  JSCodeSigner = class;
+  Arr1JSCodeSigner = array of JSCodeSigner;
+  Arr2JSCodeSigner = array of Arr1JSCodeSigner;
+  Arr3JSCodeSigner = array of Arr2JSCodeSigner;
+
+  ATInstrumentationTestRunner = class;
+  Arr1ATInstrumentationTestRunner = array of ATInstrumentationTestRunner;
+  Arr2ATInstrumentationTestRunner = array of Arr1ATInstrumentationTestRunner;
+  Arr3ATInstrumentationTestRunner = array of Arr2ATInstrumentationTestRunner;
+
+  JSCCertificateFactory = class;
+  Arr1JSCCertificateFactory = array of JSCCertificateFactory;
+  Arr2JSCCertificateFactory = array of Arr1JSCCertificateFactory;
+  Arr3JSCCertificateFactory = array of Arr2JSCCertificateFactory;
+
+  OAHAUsernamePasswordCredentials = class;
+  Arr1OAHAUsernamePasswordCredentials = array of OAHAUsernamePasswordCredentials;
+  Arr2OAHAUsernamePasswordCredentials = array of Arr1OAHAUsernamePasswordCredentials;
+  Arr3OAHAUsernamePasswordCredentials = array of Arr2OAHAUsernamePasswordCredentials;
+
+  JUAbstractSequentialList = class;
+  Arr1JUAbstractSequentialList = array of JUAbstractSequentialList;
+  Arr2JUAbstractSequentialList = array of Arr1JUAbstractSequentialList;
+  Arr3JUAbstractSequentialList = array of Arr2JUAbstractSequentialList;
+
+  JSSDSAPublicKeySpec = class;
+  Arr1JSSDSAPublicKeySpec = array of JSSDSAPublicKeySpec;
+  Arr2JSSDSAPublicKeySpec = array of Arr1JSSDSAPublicKeySpec;
+  Arr3JSSDSAPublicKeySpec = array of Arr2JSSDSAPublicKeySpec;
+
+  AWTextSwitcher = class;
+  Arr1AWTextSwitcher = array of AWTextSwitcher;
+  Arr2AWTextSwitcher = array of Arr1AWTextSwitcher;
+  Arr3AWTextSwitcher = array of Arr2AWTextSwitcher;
+
+  ATLoaderTestCase = class;
+  Arr1ATLoaderTestCase = array of ATLoaderTestCase;
+  Arr2ATLoaderTestCase = array of Arr1ATLoaderTestCase;
+  Arr3ATLoaderTestCase = array of Arr2ATLoaderTestCase;
+
+  JLExceptionInInitializerError = class;
+  Arr1JLExceptionInInitializerError = array of JLExceptionInInitializerError;
+  Arr2JLExceptionInInitializerError = array of Arr1JLExceptionInInitializerError;
+  Arr3JLExceptionInInitializerError = array of Arr2JLExceptionInInitializerError;
+
+  AGCamera = class;
+  Arr1AGCamera = array of AGCamera;
+  Arr2AGCamera = array of Arr1AGCamera;
+  Arr3AGCamera = array of Arr2AGCamera;
+
+  AABBackupManager = class;
+  Arr1AABBackupManager = array of AABBackupManager;
+  Arr2AABBackupManager = array of Arr1AABBackupManager;
+  Arr3AABBackupManager = array of Arr2AABBackupManager;
+
+  JSAlgorithmParameters = class;
+  Arr1JSAlgorithmParameters = array of JSAlgorithmParameters;
+  Arr2JSAlgorithmParameters = array of Arr1JSAlgorithmParameters;
+  Arr3JSAlgorithmParameters = array of Arr2JSAlgorithmParameters;
+
+  AAAppWidgetProviderInfo = class;
+  Arr1AAAppWidgetProviderInfo = array of AAAppWidgetProviderInfo;
+  Arr2AAAppWidgetProviderInfo = array of Arr1AAAppWidgetProviderInfo;
+  Arr3AAAppWidgetProviderInfo = array of Arr2AAAppWidgetProviderInfo;
+
+  OAHICCookieSpecBase = class;
+  Arr1OAHICCookieSpecBase = array of OAHICCookieSpecBase;
+  Arr2OAHICCookieSpecBase = array of Arr1OAHICCookieSpecBase;
+  Arr3OAHICCookieSpecBase = array of Arr2OAHICCookieSpecBase;
+
+  JLPackage = class;
+  Arr1JLPackage = array of JLPackage;
+  Arr2JLPackage = array of Arr1JLPackage;
+  Arr3JLPackage = array of Arr2JLPackage;
+
+  OAHPRequestContent = class;
+  Arr1OAHPRequestContent = array of OAHPRequestContent;
+  Arr2OAHPRequestContent = array of Arr1OAHPRequestContent;
+  Arr3OAHPRequestContent = array of Arr2OAHPRequestContent;
+
+  JUCLLockSupport = class;
+  Arr1JUCLLockSupport = array of JUCLLockSupport;
+  Arr2JUCLLockSupport = array of Arr1JUCLLockSupport;
+  Arr3JUCLLockSupport = array of Arr2JUCLLockSupport;
+
+  JNSX509ExtendedKeyManager = class;
+  Arr1JNSX509ExtendedKeyManager = array of JNSX509ExtendedKeyManager;
+  Arr2JNSX509ExtendedKeyManager = array of Arr1JNSX509ExtendedKeyManager;
+  Arr3JNSX509ExtendedKeyManager = array of Arr2JNSX509ExtendedKeyManager;
+
+  OAHAAuthenticationException = class;
+  Arr1OAHAAuthenticationException = array of OAHAAuthenticationException;
+  Arr2OAHAAuthenticationException = array of Arr1OAHAAuthenticationException;
+  Arr3OAHAAuthenticationException = array of Arr2OAHAAuthenticationException;
+
+  JNCSocketChannel = class;
+  Arr1JNCSocketChannel = array of JNCSocketChannel;
+  Arr2JNCSocketChannel = array of Arr1JNCSocketChannel;
+  Arr3JNCSocketChannel = array of Arr2JNCSocketChannel;
+
+  OAHMBasicHttpResponse = class;
+  Arr1OAHMBasicHttpResponse = array of OAHMBasicHttpResponse;
+  Arr2OAHMBasicHttpResponse = array of Arr1OAHMBasicHttpResponse;
+  Arr3OAHMBasicHttpResponse = array of Arr2OAHMBasicHttpResponse;
+
+  AGDShapeDrawable = class;
+  Arr1AGDShapeDrawable = array of AGDShapeDrawable;
+  Arr2AGDShapeDrawable = array of Arr1AGDShapeDrawable;
+  Arr3AGDShapeDrawable = array of Arr2AGDShapeDrawable;
+
+  AVActionProvider = class;
+  Arr1AVActionProvider = array of AVActionProvider;
+  Arr2AVActionProvider = array of Arr1AVActionProvider;
+  Arr3AVActionProvider = array of Arr2AVActionProvider;
+
+  ALLocationManager = class;
+  Arr1ALLocationManager = array of ALLocationManager;
+  Arr2ALLocationManager = array of Arr1ALLocationManager;
+  Arr3ALLocationManager = array of Arr2ALLocationManager;
+
+  AWCacheManager = class;
+  Arr1AWCacheManager = array of AWCacheManager;
+  Arr2AWCacheManager = array of Arr1AWCacheManager;
+  Arr3AWCacheManager = array of Arr2AWCacheManager;
+
+  JNCNonWritableChannelException = class;
+  Arr1JNCNonWritableChannelException = array of JNCNonWritableChannelException;
+  Arr2JNCNonWritableChannelException = array of Arr1JNCNonWritableChannelException;
+  Arr3JNCNonWritableChannelException = array of Arr2JNCNonWritableChannelException;
+
+  AWSimpleCursorAdapter = class;
+  Arr1AWSimpleCursorAdapter = array of AWSimpleCursorAdapter;
+  Arr2AWSimpleCursorAdapter = array of Arr1AWSimpleCursorAdapter;
+  Arr3AWSimpleCursorAdapter = array of Arr2AWSimpleCursorAdapter;
+
+  ACSearchRecentSuggestionsProvider = class;
+  Arr1ACSearchRecentSuggestionsProvider = array of ACSearchRecentSuggestionsProvider;
+  Arr2ACSearchRecentSuggestionsProvider = array of Arr1ACSearchRecentSuggestionsProvider;
+  Arr3ACSearchRecentSuggestionsProvider = array of Arr2ACSearchRecentSuggestionsProvider;
+
+  JLArrayIndexOutOfBoundsException = class;
+  Arr1JLArrayIndexOutOfBoundsException = array of JLArrayIndexOutOfBoundsException;
+  Arr2JLArrayIndexOutOfBoundsException = array of Arr1JLArrayIndexOutOfBoundsException;
+  Arr3JLArrayIndexOutOfBoundsException = array of Arr2JLArrayIndexOutOfBoundsException;
+
+  JUZZipInputStream = class;
+  Arr1JUZZipInputStream = array of JUZZipInputStream;
+  Arr2JUZZipInputStream = array of Arr1JUZZipInputStream;
+  Arr3JUZZipInputStream = array of Arr2JUZZipInputStream;
+
+  JUStack = class;
+  Arr1JUStack = array of JUStack;
+  Arr2JUStack = array of Arr1JUStack;
+  Arr3JUStack = array of Arr2JUStack;
+
+  JXTDDOMResult = class;
+  Arr1JXTDDOMResult = array of JXTDDOMResult;
+  Arr2JXTDDOMResult = array of Arr1JXTDDOMResult;
+  Arr3JXTDDOMResult = array of Arr2JXTDDOMResult;
+
+  ARType = class;
+  Arr1ARType = array of ARType;
+  Arr2ARType = array of Arr1ARType;
+  Arr3ARType = array of Arr2ARType;
+
+  OAHMBufferedHeader = class;
+  Arr1OAHMBufferedHeader = array of OAHMBufferedHeader;
+  Arr2OAHMBufferedHeader = array of Arr1OAHMBufferedHeader;
+  Arr3OAHMBufferedHeader = array of Arr2OAHMBufferedHeader;
+
+  JXTSSAXResult = class;
+  Arr1JXTSSAXResult = array of JXTSSAXResult;
+  Arr2JXTSSAXResult = array of Arr1JXTSSAXResult;
+  Arr3JXTSSAXResult = array of Arr2JXTSSAXResult;
+
+  OAHCCircularRedirectException = class;
+  Arr1OAHCCircularRedirectException = array of OAHCCircularRedirectException;
+  Arr2OAHCCircularRedirectException = array of Arr1OAHCCircularRedirectException;
+  Arr3OAHCCircularRedirectException = array of Arr2OAHCCircularRedirectException;
+
+  AMAudioFormat = class;
+  Arr1AMAudioFormat = array of AMAudioFormat;
+  Arr2AMAudioFormat = array of Arr1AMAudioFormat;
+  Arr3AMAudioFormat = array of Arr2AMAudioFormat;
+
+  AWNumberPicker = class;
+  Arr1AWNumberPicker = array of AWNumberPicker;
+  Arr2AWNumberPicker = array of Arr1AWNumberPicker;
+  Arr3AWNumberPicker = array of Arr2AWNumberPicker;
+
+  AGGesture = class;
+  Arr1AGGesture = array of AGGesture;
+  Arr2AGGesture = array of Arr1AGGesture;
+  Arr3AGGesture = array of Arr2AGGesture;
+
+  OAHProtocolException = class;
+  Arr1OAHProtocolException = array of OAHProtocolException;
+  Arr2OAHProtocolException = array of Arr1OAHProtocolException;
+  Arr3OAHProtocolException = array of Arr2OAHProtocolException;
+
+  JIIOError = class;
+  Arr1JIIOError = array of JIIOError;
+  Arr2JIIOError = array of Arr1JIIOError;
+  Arr3JIIOError = array of Arr2JIIOError;
+
+  OXSEDefaultHandler2 = class;
+  Arr1OXSEDefaultHandler2 = array of OXSEDefaultHandler2;
+  Arr2OXSEDefaultHandler2 = array of Arr1OXSEDefaultHandler2;
+  Arr3OXSEDefaultHandler2 = array of Arr2OXSEDefaultHandler2;
+
+  AGPathEffect = class;
+  Arr1AGPathEffect = array of AGPathEffect;
+  Arr2AGPathEffect = array of Arr1AGPathEffect;
+  Arr3AGPathEffect = array of Arr2AGPathEffect;
+
+  OAHICRFC2965DomainAttributeHandler = class;
+  Arr1OAHICRFC2965DomainAttributeHandler = array of OAHICRFC2965DomainAttributeHandler;
+  Arr2OAHICRFC2965DomainAttributeHandler = array of Arr1OAHICRFC2965DomainAttributeHandler;
+  Arr3OAHICRFC2965DomainAttributeHandler = array of Arr2OAHICRFC2965DomainAttributeHandler;
+
+  OAHCPHttpClientParams = class;
+  Arr1OAHCPHttpClientParams = array of OAHCPHttpClientParams;
+  Arr2OAHCPHttpClientParams = array of Arr1OAHCPHttpClientParams;
+  Arr3OAHCPHttpClientParams = array of Arr2OAHCPHttpClientParams;
+
+  ATMReplacementTransformationMethod = class;
+  Arr1ATMReplacementTransformationMethod = array of ATMReplacementTransformationMethod;
+  Arr2ATMReplacementTransformationMethod = array of Arr1ATMReplacementTransformationMethod;
+  Arr3ATMReplacementTransformationMethod = array of Arr2ATMReplacementTransformationMethod;
+
+  JUCCyclicBarrier = class;
+  Arr1JUCCyclicBarrier = array of JUCCyclicBarrier;
+  Arr2JUCCyclicBarrier = array of Arr1JUCCyclicBarrier;
+  Arr3JUCCyclicBarrier = array of Arr2JUCCyclicBarrier;
+
+  OXSHParserAdapter = class;
+  Arr1OXSHParserAdapter = array of OXSHParserAdapter;
+  Arr2OXSHParserAdapter = array of Arr1OXSHParserAdapter;
+  Arr3OXSHParserAdapter = array of Arr2OXSHParserAdapter;
+
+  OAHPResponseConnControl = class;
+  Arr1OAHPResponseConnControl = array of OAHPResponseConnControl;
+  Arr2OAHPResponseConnControl = array of Arr1OAHPResponseConnControl;
+  Arr3OAHPResponseConnControl = array of Arr2OAHPResponseConnControl;
+
+  OAHIAbstractHttpServerConnection = class;
+  Arr1OAHIAbstractHttpServerConnection = array of OAHIAbstractHttpServerConnection;
+  Arr2OAHIAbstractHttpServerConnection = array of Arr1OAHIAbstractHttpServerConnection;
+  Arr3OAHIAbstractHttpServerConnection = array of Arr2OAHIAbstractHttpServerConnection;
+
+  ANProxy = class;
+  Arr1ANProxy = array of ANProxy;
+  Arr2ANProxy = array of Arr1ANProxy;
+  Arr3ANProxy = array of Arr2ANProxy;
+
+  ANWPWifiP2pDeviceList = class;
+  Arr1ANWPWifiP2pDeviceList = array of ANWPWifiP2pDeviceList;
+  Arr2ANWPWifiP2pDeviceList = array of Arr1ANWPWifiP2pDeviceList;
+  Arr3ANWPWifiP2pDeviceList = array of Arr2ANWPWifiP2pDeviceList;
+
+  ALGpsStatus = class;
+  Arr1ALGpsStatus = array of ALGpsStatus;
+  Arr2ALGpsStatus = array of Arr1ALGpsStatus;
+  Arr3ALGpsStatus = array of Arr2ALGpsStatus;
+
+  JUTooManyListenersException = class;
+  Arr1JUTooManyListenersException = array of JUTooManyListenersException;
+  Arr2JUTooManyListenersException = array of Arr1JUTooManyListenersException;
+  Arr3JUTooManyListenersException = array of Arr2JUTooManyListenersException;
+
+  JSCPKIXCertPathChecker = class;
+  Arr1JSCPKIXCertPathChecker = array of JSCPKIXCertPathChecker;
+  Arr2JSCPKIXCertPathChecker = array of Arr1JSCPKIXCertPathChecker;
+  Arr3JSCPKIXCertPathChecker = array of Arr2JSCPKIXCertPathChecker;
+
+  ACSyncContext = class;
+  Arr1ACSyncContext = array of ACSyncContext;
+  Arr2ACSyncContext = array of Arr1ACSyncContext;
+  Arr3ACSyncContext = array of Arr2ACSyncContext;
+
+  JSAPrivateCredentialPermission = class;
+  Arr1JSAPrivateCredentialPermission = array of JSAPrivateCredentialPermission;
+  Arr2JSAPrivateCredentialPermission = array of Arr1JSAPrivateCredentialPermission;
+  Arr3JSAPrivateCredentialPermission = array of Arr2JSAPrivateCredentialPermission;
+
+  AOSOnObbStateChangeListener = class;
+  Arr1AOSOnObbStateChangeListener = array of AOSOnObbStateChangeListener;
+  Arr2AOSOnObbStateChangeListener = array of Arr1AOSOnObbStateChangeListener;
+  Arr3AOSOnObbStateChangeListener = array of Arr2AOSOnObbStateChangeListener;
+
+  JSInvalidKeyException = class;
+  Arr1JSInvalidKeyException = array of JSInvalidKeyException;
+  Arr2JSInvalidKeyException = array of Arr1JSInvalidKeyException;
+  Arr3JSInvalidKeyException = array of Arr2JSInvalidKeyException;
+
+  JSCCRL = class;
+  Arr1JSCCRL = array of JSCCRL;
+  Arr2JSCCRL = array of Arr1JSCCRL;
+  Arr3JSCCRL = array of Arr2JSCCRL;
+
+  JSSignedObject = class;
+  Arr1JSSignedObject = array of JSSignedObject;
+  Arr2JSSignedObject = array of Arr1JSSignedObject;
+  Arr3JSSignedObject = array of Arr2JSSignedObject;
+
+  AGPathDashPathEffect = class;
+  Arr1AGPathDashPathEffect = array of AGPathDashPathEffect;
+  Arr2AGPathDashPathEffect = array of Arr1AGPathDashPathEffect;
+  Arr3AGPathDashPathEffect = array of Arr2AGPathDashPathEffect;
+
+  JXDDatatypeFactory = class;
+  Arr1JXDDatatypeFactory = array of JXDDatatypeFactory;
+  Arr2JXDDatatypeFactory = array of Arr1JXDDatatypeFactory;
+  Arr3JXDDatatypeFactory = array of Arr2JXDDatatypeFactory;
+
+  OAHIISocketOutputBuffer = class;
+  Arr1OAHIISocketOutputBuffer = array of OAHIISocketOutputBuffer;
+  Arr2OAHIISocketOutputBuffer = array of Arr1OAHIISocketOutputBuffer;
+  Arr3OAHIISocketOutputBuffer = array of Arr2OAHIISocketOutputBuffer;
+
+  AMAudioTrack = class;
+  Arr1AMAudioTrack = array of AMAudioTrack;
+  Arr2AMAudioTrack = array of Arr1AMAudioTrack;
+  Arr3AMAudioTrack = array of Arr2AMAudioTrack;
+
+  JNURLDecoder = class;
+  Arr1JNURLDecoder = array of JNURLDecoder;
+  Arr2JNURLDecoder = array of Arr1JNURLDecoder;
+  Arr3JNURLDecoder = array of Arr2JNURLDecoder;
+
+  AOHandler = class;
+  Arr1AOHandler = array of AOHandler;
+  Arr2AOHandler = array of Arr1AOHandler;
+  Arr3AOHandler = array of Arr2AOHandler;
+
+  JUCAAtomicReferenceArray = class;
+  Arr1JUCAAtomicReferenceArray = array of JUCAAtomicReferenceArray;
+  Arr2JUCAAtomicReferenceArray = array of Arr1JUCAAtomicReferenceArray;
+  Arr3JUCAAtomicReferenceArray = array of Arr2JUCAAtomicReferenceArray;
+
+  ARScriptC = class;
+  Arr1ARScriptC = array of ARScriptC;
+  Arr2ARScriptC = array of Arr1ARScriptC;
+  Arr3ARScriptC = array of Arr2ARScriptC;
+
+  JCKeyAgreement = class;
+  Arr1JCKeyAgreement = array of JCKeyAgreement;
+  Arr2JCKeyAgreement = array of Arr1JCKeyAgreement;
+  Arr3JCKeyAgreement = array of Arr2JCKeyAgreement;
+
+  JUCLAbstractQueuedSynchronizer = class;
+  Arr1JUCLAbstractQueuedSynchronizer = array of JUCLAbstractQueuedSynchronizer;
+  Arr2JUCLAbstractQueuedSynchronizer = array of Arr1JUCLAbstractQueuedSynchronizer;
+  Arr3JUCLAbstractQueuedSynchronizer = array of Arr2JUCLAbstractQueuedSynchronizer;
+
+  ACAsyncQueryHandler = class;
+  Arr1ACAsyncQueryHandler = array of ACAsyncQueryHandler;
+  Arr2ACAsyncQueryHandler = array of Arr1ACAsyncQueryHandler;
+  Arr3ACAsyncQueryHandler = array of Arr2ACAsyncQueryHandler;
+
+  JFAssertionFailedError = class;
+  Arr1JFAssertionFailedError = array of JFAssertionFailedError;
+  Arr2JFAssertionFailedError = array of Arr1JFAssertionFailedError;
+  Arr3JFAssertionFailedError = array of Arr2JFAssertionFailedError;
+
+  JSSDSAPrivateKeySpec = class;
+  Arr1JSSDSAPrivateKeySpec = array of JSSDSAPrivateKeySpec;
+  Arr2JSSDSAPrivateKeySpec = array of Arr1JSSDSAPrivateKeySpec;
+  Arr3JSSDSAPrivateKeySpec = array of Arr2JSSDSAPrivateKeySpec;
+
+  JCKeyGeneratorSpi = class;
+  Arr1JCKeyGeneratorSpi = array of JCKeyGeneratorSpi;
+  Arr2JCKeyGeneratorSpi = array of Arr1JCKeyGeneratorSpi;
+  Arr3JCKeyGeneratorSpi = array of Arr2JCKeyGeneratorSpi;
+
+  JUGregorianCalendar = class;
+  Arr1JUGregorianCalendar = array of JUGregorianCalendar;
+  Arr2JUGregorianCalendar = array of Arr1JUGregorianCalendar;
+  Arr3JUGregorianCalendar = array of Arr2JUGregorianCalendar;
+
+  JSCX509CertSelector = class;
+  Arr1JSCX509CertSelector = array of JSCX509CertSelector;
+  Arr2JSCX509CertSelector = array of Arr1JSCX509CertSelector;
+  Arr3JSCX509CertSelector = array of Arr2JSCX509CertSelector;
+
+  OAHICRequestWrapper = class;
+  Arr1OAHICRequestWrapper = array of OAHICRequestWrapper;
+  Arr2OAHICRequestWrapper = array of Arr1OAHICRequestWrapper;
+  Arr3OAHICRequestWrapper = array of Arr2OAHICRequestWrapper;
+
+  JSSECFieldFp = class;
+  Arr1JSSECFieldFp = array of JSSECFieldFp;
+  Arr2JSSECFieldFp = array of Arr1JSSECFieldFp;
+  Arr3JSSECFieldFp = array of Arr2JSSECFieldFp;
+
+  AMExifInterface = class;
+  Arr1AMExifInterface = array of AMExifInterface;
+  Arr2AMExifInterface = array of Arr1AMExifInterface;
+  Arr3AMExifInterface = array of Arr2AMExifInterface;
+
+  AABBackupDataOutput = class;
+  Arr1AABBackupDataOutput = array of AABBackupDataOutput;
+  Arr2AABBackupDataOutput = array of Arr1AABBackupDataOutput;
+  Arr3AABBackupDataOutput = array of Arr2AABBackupDataOutput;
+
+  AWAdapterView = class;
+  Arr1AWAdapterView = array of AWAdapterView;
+  Arr2AWAdapterView = array of Arr1AWAdapterView;
+  Arr3AWAdapterView = array of Arr2AWAdapterView;
+
+  ARScript = class;
+  Arr1ARScript = array of ARScript;
+  Arr2ARScript = array of Arr1ARScript;
+  Arr3ARScript = array of Arr2ARScript;
+
+  AVScaleGestureDetector = class;
+  Arr1AVScaleGestureDetector = array of AVScaleGestureDetector;
+  Arr2AVScaleGestureDetector = array of Arr1AVScaleGestureDetector;
+  Arr3AVScaleGestureDetector = array of Arr2AVScaleGestureDetector;
+
+  OXSHXMLFilterImpl = class;
+  Arr1OXSHXMLFilterImpl = array of OXSHXMLFilterImpl;
+  Arr2OXSHXMLFilterImpl = array of Arr1OXSHXMLFilterImpl;
+  Arr3OXSHXMLFilterImpl = array of Arr2OXSHXMLFilterImpl;
+
+  OXSHXMLReaderAdapter = class;
+  Arr1OXSHXMLReaderAdapter = array of OXSHXMLReaderAdapter;
+  Arr2OXSHXMLReaderAdapter = array of Arr1OXSHXMLReaderAdapter;
+  Arr3OXSHXMLReaderAdapter = array of Arr2OXSHXMLReaderAdapter;
+
+  JTChoiceFormat = class;
+  Arr1JTChoiceFormat = array of JTChoiceFormat;
+  Arr2JTChoiceFormat = array of Arr1JTChoiceFormat;
+  Arr3JTChoiceFormat = array of Arr2JTChoiceFormat;
+
+  AVDisplay = class;
+  Arr1AVDisplay = array of AVDisplay;
+  Arr2AVDisplay = array of Arr1AVDisplay;
+  Arr3AVDisplay = array of Arr2AVDisplay;
+
+  JIFileDescriptor = class;
+  Arr1JIFileDescriptor = array of JIFileDescriptor;
+  Arr2JIFileDescriptor = array of Arr1JIFileDescriptor;
+  Arr3JIFileDescriptor = array of Arr2JIFileDescriptor;
+
+  ATCellLocation = class;
+  Arr1ATCellLocation = array of ATCellLocation;
+  Arr2ATCellLocation = array of Arr1ATCellLocation;
+  Arr3ATCellLocation = array of Arr2ATCellLocation;
+
+  JSTime = class;
+  Arr1JSTime = array of JSTime;
+  Arr2JSTime = array of Arr1JSTime;
+  Arr3JSTime = array of Arr2JSTime;
+
+  JLAElementType = class;
+  Arr1JLAElementType = array of JLAElementType;
+  Arr2JLAElementType = array of Arr1JLAElementType;
+  Arr3JLAElementType = array of Arr2JLAElementType;
+
+  JSSRSAMultiPrimePrivateCrtKeySpec = class;
+  Arr1JSSRSAMultiPrimePrivateCrtKeySpec = array of JSSRSAMultiPrimePrivateCrtKeySpec;
+  Arr2JSSRSAMultiPrimePrivateCrtKeySpec = array of Arr1JSSRSAMultiPrimePrivateCrtKeySpec;
+  Arr3JSSRSAMultiPrimePrivateCrtKeySpec = array of Arr2JSSRSAMultiPrimePrivateCrtKeySpec;
+
+  ATMMockResources = class;
+  Arr1ATMMockResources = array of ATMMockResources;
+  Arr2ATMMockResources = array of Arr1ATMMockResources;
+  Arr3ATMMockResources = array of Arr2ATMMockResources;
+
+  AVAAccessibilityNodeInfo = class;
+  Arr1AVAAccessibilityNodeInfo = array of AVAAccessibilityNodeInfo;
+  Arr2AVAAccessibilityNodeInfo = array of Arr1AVAAccessibilityNodeInfo;
+  Arr3AVAAccessibilityNodeInfo = array of Arr2AVAAccessibilityNodeInfo;
+
+  ACSyncInfo = class;
+  Arr1ACSyncInfo = array of ACSyncInfo;
+  Arr2ACSyncInfo = array of Arr1ACSyncInfo;
+  Arr3ACSyncInfo = array of Arr2ACSyncInfo;
+
+  JUIllegalFormatException = class;
+  Arr1JUIllegalFormatException = array of JUIllegalFormatException;
+  Arr2JUIllegalFormatException = array of Arr1JUIllegalFormatException;
+  Arr3JUIllegalFormatException = array of Arr2JUIllegalFormatException;
+
+  ANVpnService = class;
+  Arr1ANVpnService = array of ANVpnService;
+  Arr2ANVpnService = array of Arr1ANVpnService;
+  Arr3ANVpnService = array of Arr2ANVpnService;
+
+  JXXXPathFactory = class;
+  Arr1JXXXPathFactory = array of JXXXPathFactory;
+  Arr2JXXXPathFactory = array of Arr1JXXXPathFactory;
+  Arr3JXXXPathFactory = array of Arr2JXXXPathFactory;
+
+  AWCompoundButton = class;
+  Arr1AWCompoundButton = array of AWCompoundButton;
+  Arr2AWCompoundButton = array of Arr1AWCompoundButton;
+  Arr3AWCompoundButton = array of Arr2AWCompoundButton;
+
+  AVAAccessibilityManager = class;
+  Arr1AVAAccessibilityManager = array of AVAAccessibilityManager;
+  Arr2AVAAccessibilityManager = array of Arr1AVAAccessibilityManager;
+  Arr3AVAAccessibilityManager = array of Arr2AVAAccessibilityManager;
+
+  ANDhcpInfo = class;
+  Arr1ANDhcpInfo = array of ANDhcpInfo;
+  Arr2ANDhcpInfo = array of Arr1ANDhcpInfo;
+  Arr3ANDhcpInfo = array of Arr2ANDhcpInfo;
+
+  JNPortUnreachableException = class;
+  Arr1JNPortUnreachableException = array of JNPortUnreachableException;
+  Arr2JNPortUnreachableException = array of Arr1JNPortUnreachableException;
+  Arr3JNPortUnreachableException = array of Arr2JNPortUnreachableException;
+
+  AADialog = class;
+  Arr1AADialog = array of AADialog;
+  Arr2AADialog = array of Arr1AADialog;
+  Arr3AADialog = array of Arr2AADialog;
+
+  JNCNotYetConnectedException = class;
+  Arr1JNCNotYetConnectedException = array of JNCNotYetConnectedException;
+  Arr2JNCNotYetConnectedException = array of Arr1JNCNotYetConnectedException;
+  Arr3JNCNotYetConnectedException = array of Arr2JNCNotYetConnectedException;
+
+  JSKeyStoreException = class;
+  Arr1JSKeyStoreException = array of JSKeyStoreException;
+  Arr2JSKeyStoreException = array of Arr1JSKeyStoreException;
+  Arr3JSKeyStoreException = array of Arr2JSKeyStoreException;
+
+  ATMMockContentProvider = class;
+  Arr1ATMMockContentProvider = array of ATMMockContentProvider;
+  Arr2ATMMockContentProvider = array of Arr1ATMMockContentProvider;
+  Arr3ATMMockContentProvider = array of Arr2ATMMockContentProvider;
+
+  AAAccessibilityService = class;
+  Arr1AAAccessibilityService = array of AAAccessibilityService;
+  Arr2AAAccessibilityService = array of Arr1AAAccessibilityService;
+  Arr3AAAccessibilityService = array of Arr2AAAccessibilityService;
+
+  OAHIDefaultHttpClientConnection = class;
+  Arr1OAHIDefaultHttpClientConnection = array of OAHIDefaultHttpClientConnection;
+  Arr2OAHIDefaultHttpClientConnection = array of Arr1OAHIDefaultHttpClientConnection;
+  Arr3OAHIDefaultHttpClientConnection = array of Arr2OAHIDefaultHttpClientConnection;
+
+  AGMatrix = class;
+  Arr1AGMatrix = array of AGMatrix;
+  Arr2AGMatrix = array of Arr1AGMatrix;
+  Arr3AGMatrix = array of Arr2AGMatrix;
+
+  AGLayerRasterizer = class;
+  Arr1AGLayerRasterizer = array of AGLayerRasterizer;
+  Arr2AGLayerRasterizer = array of Arr1AGLayerRasterizer;
+  Arr3AGLayerRasterizer = array of Arr2AGLayerRasterizer;
+
+  JUIllegalFormatWidthException = class;
+  Arr1JUIllegalFormatWidthException = array of JUIllegalFormatWidthException;
+  Arr2JUIllegalFormatWidthException = array of Arr1JUIllegalFormatWidthException;
+  Arr3JUIllegalFormatWidthException = array of Arr2JUIllegalFormatWidthException;
+
+  ALCriteria = class;
+  Arr1ALCriteria = array of ALCriteria;
+  Arr2ALCriteria = array of Arr1ALCriteria;
+  Arr3ALCriteria = array of Arr2ALCriteria;
+
+  JXDDuration = class;
+  Arr1JXDDuration = array of JXDDuration;
+  Arr2JXDDuration = array of Arr1JXDDuration;
+  Arr3JXDDuration = array of Arr2JXDDuration;
+
+  OAHCRRouteTracker = class;
+  Arr1OAHCRRouteTracker = array of OAHCRRouteTracker;
+  Arr2OAHCRRouteTracker = array of Arr1OAHCRRouteTracker;
+  Arr3OAHCRRouteTracker = array of Arr2OAHCRRouteTracker;
+
+  OAHIIAbstractSessionInputBuffer = class;
+  Arr1OAHIIAbstractSessionInputBuffer = array of OAHIIAbstractSessionInputBuffer;
+  Arr2OAHIIAbstractSessionInputBuffer = array of Arr1OAHIIAbstractSessionInputBuffer;
+  Arr3OAHIIAbstractSessionInputBuffer = array of Arr2OAHIIAbstractSessionInputBuffer;
+
+  JSqlTimestamp = class;
+  Arr1JSqlTimestamp = array of JSqlTimestamp;
+  Arr2JSqlTimestamp = array of Arr1JSqlTimestamp;
+  Arr3JSqlTimestamp = array of Arr2JSqlTimestamp;
+
+  AVViewStub = class;
+  Arr1AVViewStub = array of AVViewStub;
+  Arr2AVViewStub = array of Arr1AVViewStub;
+  Arr3AVViewStub = array of Arr2AVViewStub;
+
+  OAHABasicUserPrincipal = class;
+  Arr1OAHABasicUserPrincipal = array of OAHABasicUserPrincipal;
+  Arr2OAHABasicUserPrincipal = array of Arr1OAHABasicUserPrincipal;
+  Arr3OAHABasicUserPrincipal = array of Arr2OAHABasicUserPrincipal;
+
+  AGDInsetDrawable = class;
+  Arr1AGDInsetDrawable = array of AGDInsetDrawable;
+  Arr2AGDInsetDrawable = array of Arr1AGDInsetDrawable;
+  Arr3AGDInsetDrawable = array of Arr2AGDInsetDrawable;
+
+  ARProgramStore = class;
+  Arr1ARProgramStore = array of ARProgramStore;
+  Arr2ARProgramStore = array of Arr1ARProgramStore;
+  Arr3ARProgramStore = array of Arr2ARProgramStore;
+
+  AWViewSwitcher = class;
+  Arr1AWViewSwitcher = array of AWViewSwitcher;
+  Arr2AWViewSwitcher = array of Arr1AWViewSwitcher;
+  Arr3AWViewSwitcher = array of Arr2AWViewSwitcher;
+
+  OAHCHttpHostConnectException = class;
+  Arr1OAHCHttpHostConnectException = array of OAHCHttpHostConnectException;
+  Arr2OAHCHttpHostConnectException = array of Arr1OAHCHttpHostConnectException;
+  Arr3OAHCHttpHostConnectException = array of Arr2OAHCHttpHostConnectException;
+
+  ACPPermissionGroupInfo = class;
+  Arr1ACPPermissionGroupInfo = array of ACPPermissionGroupInfo;
+  Arr2ACPPermissionGroupInfo = array of Arr1ACPPermissionGroupInfo;
+  Arr3ACPPermissionGroupInfo = array of Arr2ACPPermissionGroupInfo;
+
+  AWDialerFilter = class;
+  Arr1AWDialerFilter = array of AWDialerFilter;
+  Arr2AWDialerFilter = array of Arr1AWDialerFilter;
+  Arr3AWDialerFilter = array of Arr2AWDialerFilter;
+
+  JNSSSLEngineResult = class;
+  Arr1JNSSSLEngineResult = array of JNSSSLEngineResult;
+  Arr2JNSSSLEngineResult = array of Arr1JNSSSLEngineResult;
+  Arr3JNSSSLEngineResult = array of Arr2JNSSSLEngineResult;
+
+  AGDSOvalShape = class;
+  Arr1AGDSOvalShape = array of AGDSOvalShape;
+  Arr2AGDSOvalShape = array of Arr1AGDSOvalShape;
+  Arr3AGDSOvalShape = array of Arr2AGDSOvalShape;
+
+  AGYuvImage = class;
+  Arr1AGYuvImage = array of AGYuvImage;
+  Arr2AGYuvImage = array of Arr1AGYuvImage;
+  Arr3AGYuvImage = array of Arr2AGYuvImage;
+
+  AWRadioGroup = class;
+  Arr1AWRadioGroup = array of AWRadioGroup;
+  Arr2AWRadioGroup = array of Arr1AWRadioGroup;
+  Arr3AWRadioGroup = array of Arr2AWRadioGroup;
+
+  JLVirtualMachineError = class;
+  Arr1JLVirtualMachineError = array of JLVirtualMachineError;
+  Arr2JLVirtualMachineError = array of Arr1JLVirtualMachineError;
+  Arr3JLVirtualMachineError = array of Arr2JLVirtualMachineError;
+
+  JSInvalidParameterException = class;
+  Arr1JSInvalidParameterException = array of JSInvalidParameterException;
+  Arr2JSInvalidParameterException = array of Arr1JSInvalidParameterException;
+  Arr3JSInvalidParameterException = array of Arr2JSInvalidParameterException;
+
+  OAHEByteArrayEntity = class;
+  Arr1OAHEByteArrayEntity = array of OAHEByteArrayEntity;
+  Arr2OAHEByteArrayEntity = array of Arr1OAHEByteArrayEntity;
+  Arr3OAHEByteArrayEntity = array of Arr2OAHEByteArrayEntity;
+
+  JUCDelayQueue = class;
+  Arr1JUCDelayQueue = array of JUCDelayQueue;
+  Arr2JUCDelayQueue = array of Arr1JUCDelayQueue;
+  Arr3JUCDelayQueue = array of Arr2JUCDelayQueue;
+
+  ARRenderScriptGL = class;
+  Arr1ARRenderScriptGL = array of ARRenderScriptGL;
+  Arr2ARRenderScriptGL = array of Arr1ARRenderScriptGL;
+  Arr3ARRenderScriptGL = array of Arr2ARRenderScriptGL;
+
+  AOBatteryManager = class;
+  Arr1AOBatteryManager = array of AOBatteryManager;
+  Arr2AOBatteryManager = array of Arr1AOBatteryManager;
+  Arr3AOBatteryManager = array of Arr2AOBatteryManager;
+
+  JLArithmeticException = class;
+  Arr1JLArithmeticException = array of JLArithmeticException;
+  Arr2JLArithmeticException = array of Arr1JLArithmeticException;
+  Arr3JLArithmeticException = array of Arr2JLArithmeticException;
+
+  AVTTextInfo = class;
+  Arr1AVTTextInfo = array of AVTTextInfo;
+  Arr2AVTTextInfo = array of Arr1AVTTextInfo;
+  Arr3AVTTextInfo = array of Arr2AVTTextInfo;
+
+  AWSeekBar = class;
+  Arr1AWSeekBar = array of AWSeekBar;
+  Arr2AWSeekBar = array of Arr1AWSeekBar;
+  Arr3AWSeekBar = array of Arr2AWSeekBar;
+
+  JSDigestInputStream = class;
+  Arr1JSDigestInputStream = array of JSDigestInputStream;
+  Arr2JSDigestInputStream = array of Arr1JSDigestInputStream;
+  Arr3JSDigestInputStream = array of Arr2JSDigestInputStream;
+
+  AAKeyguardManager = class;
+  Arr1AAKeyguardManager = array of AAKeyguardManager;
+  Arr2AAKeyguardManager = array of Arr1AAKeyguardManager;
+  Arr3AAKeyguardManager = array of Arr2AAKeyguardManager;
+
+  AVIInputMethodInfo = class;
+  Arr1AVIInputMethodInfo = array of AVIInputMethodInfo;
+  Arr2AVIInputMethodInfo = array of Arr1AVIInputMethodInfo;
+  Arr3AVIInputMethodInfo = array of Arr2AVIInputMethodInfo;
+
+  JIStringWriter = class;
+  Arr1JIStringWriter = array of JIStringWriter;
+  Arr2JIStringWriter = array of Arr1JIStringWriter;
+  Arr3JIStringWriter = array of Arr2JIStringWriter;
+
+  AVHapticFeedbackConstants = class;
+  Arr1AVHapticFeedbackConstants = array of AVHapticFeedbackConstants;
+  Arr2AVHapticFeedbackConstants = array of Arr1AVHapticFeedbackConstants;
+  Arr3AVHapticFeedbackConstants = array of Arr2AVHapticFeedbackConstants;
+
+  AVTouchDelegate = class;
+  Arr1AVTouchDelegate = array of AVTouchDelegate;
+  Arr2AVTouchDelegate = array of Arr1AVTouchDelegate;
+  Arr3AVTouchDelegate = array of Arr2AVTouchDelegate;
+
+  JIByteArrayOutputStream = class;
+  Arr1JIByteArrayOutputStream = array of JIByteArrayOutputStream;
+  Arr2JIByteArrayOutputStream = array of Arr1JIByteArrayOutputStream;
+  Arr3JIByteArrayOutputStream = array of Arr2JIByteArrayOutputStream;
+
+  JULinkedList = class;
+  Arr1JULinkedList = array of JULinkedList;
+  Arr2JULinkedList = array of Arr1JULinkedList;
+  Arr3JULinkedList = array of Arr2JULinkedList;
+
+  OAHICBestMatchSpec = class;
+  Arr1OAHICBestMatchSpec = array of OAHICBestMatchSpec;
+  Arr2OAHICBestMatchSpec = array of Arr1OAHICBestMatchSpec;
+  Arr3OAHICBestMatchSpec = array of Arr2OAHICBestMatchSpec;
+
+  JSAlgorithmParametersSpi = class;
+  Arr1JSAlgorithmParametersSpi = array of JSAlgorithmParametersSpi;
+  Arr2JSAlgorithmParametersSpi = array of Arr1JSAlgorithmParametersSpi;
+  Arr3JSAlgorithmParametersSpi = array of Arr2JSAlgorithmParametersSpi;
+
+  AVViewDebug = class;
+  Arr1AVViewDebug = array of AVViewDebug;
+  Arr2AVViewDebug = array of Arr1AVViewDebug;
+  Arr3AVViewDebug = array of Arr2AVViewDebug;
+
+  AMToneGenerator = class;
+  Arr1AMToneGenerator = array of AMToneGenerator;
+  Arr2AMToneGenerator = array of Arr1AMToneGenerator;
+  Arr3AMToneGenerator = array of Arr2AMToneGenerator;
+
+  OAHCSSchemeRegistry = class;
+  Arr1OAHCSSchemeRegistry = array of OAHCSSchemeRegistry;
+  Arr2OAHCSSchemeRegistry = array of Arr1OAHCSSchemeRegistry;
+  Arr3OAHCSSchemeRegistry = array of Arr2OAHCSSchemeRegistry;
+
+  ASTSpellCheckerService = class;
+  Arr1ASTSpellCheckerService = array of ASTSpellCheckerService;
+  Arr2ASTSpellCheckerService = array of Arr1ASTSpellCheckerService;
+  Arr3ASTSpellCheckerService = array of Arr2ASTSpellCheckerService;
+
+  AWSwitch = class;
+  Arr1AWSwitch = array of AWSwitch;
+  Arr2AWSwitch = array of Arr1AWSwitch;
+  Arr3AWSwitch = array of Arr2AWSwitch;
+
+  ADSQLException = class;
+  Arr1ADSQLException = array of ADSQLException;
+  Arr2ADSQLException = array of Arr1ADSQLException;
+  Arr3ADSQLException = array of Arr2ADSQLException;
+
+  AMAEnvironmentalReverb = class;
+  Arr1AMAEnvironmentalReverb = array of AMAEnvironmentalReverb;
+  Arr2AMAEnvironmentalReverb = array of Arr1AMAEnvironmentalReverb;
+  Arr3AMAEnvironmentalReverb = array of Arr2AMAEnvironmentalReverb;
+
+  AHUUsbInterface = class;
+  Arr1AHUUsbInterface = array of AHUUsbInterface;
+  Arr2AHUUsbInterface = array of Arr1AHUUsbInterface;
+  Arr3AHUUsbInterface = array of Arr2AHUUsbInterface;
+
+  AAAnimator = class;
+  Arr1AAAnimator = array of AAAnimator;
+  Arr2AAAnimator = array of Arr1AAAnimator;
+  Arr3AAAnimator = array of Arr2AAAnimator;
+
+  ATSingleLaunchActivityTestCase = class;
+  Arr1ATSingleLaunchActivityTestCase = array of ATSingleLaunchActivityTestCase;
+  Arr2ATSingleLaunchActivityTestCase = array of Arr1ATSingleLaunchActivityTestCase;
+  Arr3ATSingleLaunchActivityTestCase = array of Arr2ATSingleLaunchActivityTestCase;
+
+  OAHEStringEntity = class;
+  Arr1OAHEStringEntity = array of OAHEStringEntity;
+  Arr2OAHEStringEntity = array of Arr1OAHEStringEntity;
+  Arr3OAHEStringEntity = array of Arr2OAHEStringEntity;
+
+  AVIEditorInfo = class;
+  Arr1AVIEditorInfo = array of AVIEditorInfo;
+  Arr2AVIEditorInfo = array of Arr1AVIEditorInfo;
+  Arr3AVIEditorInfo = array of Arr2AVIEditorInfo;
+
+  AVATransformation = class;
+  Arr1AVATransformation = array of AVATransformation;
+  Arr2AVATransformation = array of Arr1AVATransformation;
+  Arr3AVATransformation = array of Arr2AVATransformation;
+
+  OAHIDefaultConnectionReuseStrategy = class;
+  Arr1OAHIDefaultConnectionReuseStrategy = array of OAHIDefaultConnectionReuseStrategy;
+  Arr2OAHIDefaultConnectionReuseStrategy = array of Arr1OAHIDefaultConnectionReuseStrategy;
+  Arr3OAHIDefaultConnectionReuseStrategy = array of Arr2OAHIDefaultConnectionReuseStrategy;
+
+  ADSSQLiteStatement = class;
+  Arr1ADSSQLiteStatement = array of ADSSQLiteStatement;
+  Arr2ADSSQLiteStatement = array of Arr1ADSSQLiteStatement;
+  Arr3ADSSQLiteStatement = array of Arr2ADSSQLiteStatement;
+
+  OAHCCookieIdentityComparator = class;
+  Arr1OAHCCookieIdentityComparator = array of OAHCCookieIdentityComparator;
+  Arr2OAHCCookieIdentityComparator = array of Arr1OAHCCookieIdentityComparator;
+  Arr3OAHCCookieIdentityComparator = array of Arr2OAHCCookieIdentityComparator;
+
+  JSKeyFactory = class;
+  Arr1JSKeyFactory = array of JSKeyFactory;
+  Arr2JSKeyFactory = array of Arr1JSKeyFactory;
+  Arr3JSKeyFactory = array of Arr2JSKeyFactory;
+
+  OAHCSPlainSocketFactory = class;
+  Arr1OAHCSPlainSocketFactory = array of OAHCSPlainSocketFactory;
+  Arr2OAHCSPlainSocketFactory = array of Arr1OAHCSPlainSocketFactory;
+  Arr3OAHCSPlainSocketFactory = array of Arr2OAHCSPlainSocketFactory;
+
+  JUCAAtomicInteger = class;
+  Arr1JUCAAtomicInteger = array of JUCAAtomicInteger;
+  Arr2JUCAAtomicInteger = array of Arr1JUCAAtomicInteger;
+  Arr3JUCAAtomicInteger = array of Arr2JUCAAtomicInteger;
+
+  JSSecureRandom = class;
+  Arr1JSSecureRandom = array of JSSecureRandom;
+  Arr2JSSecureRandom = array of Arr1JSSecureRandom;
+  Arr3JSSecureRandom = array of Arr2JSSecureRandom;
+
+  JMKEEGLSurface = class;
+  Arr1JMKEEGLSurface = array of JMKEEGLSurface;
+  Arr2JMKEEGLSurface = array of Arr1JMKEEGLSurface;
+  Arr3JMKEEGLSurface = array of Arr2JMKEEGLSurface;
+
+  AVTTextServicesManager = class;
+  Arr1AVTTextServicesManager = array of AVTTextServicesManager;
+  Arr2AVTTextServicesManager = array of Arr1AVTTextServicesManager;
+  Arr3AVTTextServicesManager = array of Arr2AVTTextServicesManager;
+
+  JUConcurrentModificationException = class;
+  Arr1JUConcurrentModificationException = array of JUConcurrentModificationException;
+  Arr2JUConcurrentModificationException = array of Arr1JUConcurrentModificationException;
+  Arr3JUConcurrentModificationException = array of Arr2JUConcurrentModificationException;
+
+  OAHPResponseContent = class;
+  Arr1OAHPResponseContent = array of OAHPResponseContent;
+  Arr2OAHPResponseContent = array of Arr1OAHPResponseContent;
+  Arr3OAHPResponseContent = array of Arr2OAHPResponseContent;
+
+  AGNinePatch = class;
+  Arr1AGNinePatch = array of AGNinePatch;
+  Arr2AGNinePatch = array of Arr1AGNinePatch;
+  Arr3AGNinePatch = array of Arr2AGNinePatch;
+
+  AVInputEvent = class;
+  Arr1AVInputEvent = array of AVInputEvent;
+  Arr2AVInputEvent = array of Arr1AVInputEvent;
+  Arr3AVInputEvent = array of Arr2AVInputEvent;
+
+  JIFilterReader = class;
+  Arr1JIFilterReader = array of JIFilterReader;
+  Arr2JIFilterReader = array of Arr1JIFilterReader;
+  Arr3JIFilterReader = array of Arr2JIFilterReader;
+
+  JSAccessController = class;
+  Arr1JSAccessController = array of JSAccessController;
+  Arr2JSAccessController = array of Arr1JSAccessController;
+  Arr3JSAccessController = array of Arr2JSAccessController;
+
+  JUCPriorityBlockingQueue = class;
+  Arr1JUCPriorityBlockingQueue = array of JUCPriorityBlockingQueue;
+  Arr2JUCPriorityBlockingQueue = array of Arr1JUCPriorityBlockingQueue;
+  Arr3JUCPriorityBlockingQueue = array of Arr2JUCPriorityBlockingQueue;
+
+  ANNfcManager = class;
+  Arr1ANNfcManager = array of ANNfcManager;
+  Arr2ANNfcManager = array of Arr1ANNfcManager;
+  Arr3ANNfcManager = array of Arr2ANNfcManager;
+
+  APUserDictionary = class;
+  Arr1APUserDictionary = array of APUserDictionary;
+  Arr2APUserDictionary = array of Arr1APUserDictionary;
+  Arr3APUserDictionary = array of Arr2APUserDictionary;
+
+  JXNQName = class;
+  Arr1JXNQName = array of JXNQName;
+  Arr2JXNQName = array of Arr1JXNQName;
+  Arr3JXNQName = array of Arr2JXNQName;
+
+  JTNormalizer = class;
+  Arr1JTNormalizer = array of JTNormalizer;
+  Arr2JTNormalizer = array of Arr1JTNormalizer;
+  Arr3JTNormalizer = array of Arr2JTNormalizer;
+
+  AWJsPromptResult = class;
+  Arr1AWJsPromptResult = array of AWJsPromptResult;
+  Arr2AWJsPromptResult = array of Arr1AWJsPromptResult;
+  Arr3AWJsPromptResult = array of Arr2AWJsPromptResult;
+
+  ARFloat4 = class;
+  Arr1ARFloat4 = array of ARFloat4;
+  Arr2ARFloat4 = array of Arr1ARFloat4;
+  Arr3ARFloat4 = array of Arr2ARFloat4;
+
+  ARFloat3 = class;
+  Arr1ARFloat3 = array of ARFloat3;
+  Arr2ARFloat3 = array of Arr1ARFloat3;
+  Arr3ARFloat3 = array of Arr2ARFloat3;
+
+  OAHICBasicCookieStore = class;
+  Arr1OAHICBasicCookieStore = array of OAHICBasicCookieStore;
+  Arr2OAHICBasicCookieStore = array of Arr1OAHICBasicCookieStore;
+  Arr3OAHICBasicCookieStore = array of Arr2OAHICBasicCookieStore;
+
+  ARFloat2 = class;
+  Arr1ARFloat2 = array of ARFloat2;
+  Arr2ARFloat2 = array of Arr1ARFloat2;
+  Arr3ARFloat2 = array of Arr2ARFloat2;
+
+  ALGeocoder = class;
+  Arr1ALGeocoder = array of ALGeocoder;
+  Arr2ALGeocoder = array of Arr1ALGeocoder;
+  Arr3ALGeocoder = array of Arr2ALGeocoder;
+
+  JMKEEGLConfig = class;
+  Arr1JMKEEGLConfig = array of JMKEEGLConfig;
+  Arr2JMKEEGLConfig = array of Arr1JMKEEGLConfig;
+  Arr3JMKEEGLConfig = array of Arr2JMKEEGLConfig;
+
+  JFTestResult = class;
+  Arr1JFTestResult = array of JFTestResult;
+  Arr2JFTestResult = array of Arr1JFTestResult;
+  Arr3JFTestResult = array of Arr2JFTestResult;
+
+  AAAuthenticatorDescription = class;
+  Arr1AAAuthenticatorDescription = array of AAAuthenticatorDescription;
+  Arr2AAAuthenticatorDescription = array of Arr1AAAuthenticatorDescription;
+  Arr3AAAuthenticatorDescription = array of Arr2AAAuthenticatorDescription;
+
+  JSACUnsupportedCallbackException = class;
+  Arr1JSACUnsupportedCallbackException = array of JSACUnsupportedCallbackException;
+  Arr2JSACUnsupportedCallbackException = array of Arr1JSACUnsupportedCallbackException;
+  Arr3JSACUnsupportedCallbackException = array of Arr2JSACUnsupportedCallbackException;
+
+  JFComparisonFailure = class;
+  Arr1JFComparisonFailure = array of JFComparisonFailure;
+  Arr2JFComparisonFailure = array of Arr1JFComparisonFailure;
+  Arr3JFComparisonFailure = array of Arr2JFComparisonFailure;
+
+  AOGLES10Ext = class;
+  Arr1AOGLES10Ext = array of AOGLES10Ext;
+  Arr2AOGLES10Ext = array of Arr1AOGLES10Ext;
+  Arr3AOGLES10Ext = array of Arr2AOGLES10Ext;
+
+  AAActionBar = class;
+  Arr1AAActionBar = array of AAActionBar;
+  Arr2AAActionBar = array of Arr1AAActionBar;
+  Arr3AAActionBar = array of Arr2AAActionBar;
+
+  APCheckBoxPreference = class;
+  Arr1APCheckBoxPreference = array of APCheckBoxPreference;
+  Arr2APCheckBoxPreference = array of Arr1APCheckBoxPreference;
+  Arr3APCheckBoxPreference = array of Arr2APCheckBoxPreference;
+
+  JUFormatter = class;
+  Arr1JUFormatter = array of JUFormatter;
+  Arr2JUFormatter = array of Arr1JUFormatter;
+  Arr3JUFormatter = array of Arr2JUFormatter;
+
+  AVSurface = class;
+  Arr1AVSurface = array of AVSurface;
+  Arr2AVSurface = array of Arr1AVSurface;
+  Arr3AVSurface = array of Arr2AVSurface;
+
+  ACIntent = class;
+  Arr1ACIntent = array of ACIntent;
+  Arr2ACIntent = array of Arr1ACIntent;
+  Arr3ACIntent = array of Arr2ACIntent;
+
+  OAHCPConnPerRouteBean = class;
+  Arr1OAHCPConnPerRouteBean = array of OAHCPConnPerRouteBean;
+  Arr2OAHCPConnPerRouteBean = array of Arr1OAHCPConnPerRouteBean;
+  Arr3OAHCPConnPerRouteBean = array of Arr2OAHCPConnPerRouteBean;
+
+  ANNfcEvent = class;
+  Arr1ANNfcEvent = array of ANNfcEvent;
+  Arr2ANNfcEvent = array of Arr1ANNfcEvent;
+  Arr3ANNfcEvent = array of Arr2ANNfcEvent;
+
+  JNNoRouteToHostException = class;
+  Arr1JNNoRouteToHostException = array of JNNoRouteToHostException;
+  Arr2JNNoRouteToHostException = array of Arr1JNNoRouteToHostException;
+  Arr3JNNoRouteToHostException = array of Arr2JNNoRouteToHostException;
+
+  JSCCertStoreException = class;
+  Arr1JSCCertStoreException = array of JSCCertStoreException;
+  Arr2JSCCertStoreException = array of Arr1JSCCertStoreException;
+  Arr3JSCCertStoreException = array of Arr2JSCCertStoreException;
+
+  JSDriverPropertyInfo = class;
+  Arr1JSDriverPropertyInfo = array of JSDriverPropertyInfo;
+  Arr2JSDriverPropertyInfo = array of Arr1JSDriverPropertyInfo;
+  Arr3JSDriverPropertyInfo = array of Arr2JSDriverPropertyInfo;
+
+  ANWPWifiP2pGroup = class;
+  Arr1ANWPWifiP2pGroup = array of ANWPWifiP2pGroup;
+  Arr2ANWPWifiP2pGroup = array of Arr1ANWPWifiP2pGroup;
+  Arr3ANWPWifiP2pGroup = array of Arr2ANWPWifiP2pGroup;
+
+  AVTSuggestionsInfo = class;
+  Arr1AVTSuggestionsInfo = array of AVTSuggestionsInfo;
+  Arr2AVTSuggestionsInfo = array of Arr1AVTSuggestionsInfo;
+  Arr3AVTSuggestionsInfo = array of Arr2AVTSuggestionsInfo;
+
+  AOMemoryFile = class;
+  Arr1AOMemoryFile = array of AOMemoryFile;
+  Arr2AOMemoryFile = array of Arr1AOMemoryFile;
+  Arr3AOMemoryFile = array of Arr2AOMemoryFile;
+
+  JCSIvParameterSpec = class;
+  Arr1JCSIvParameterSpec = array of JCSIvParameterSpec;
+  Arr2JCSIvParameterSpec = array of Arr1JCSIvParameterSpec;
+  Arr3JCSIvParameterSpec = array of Arr2JCSIvParameterSpec;
+
+  AGDPictureDrawable = class;
+  Arr1AGDPictureDrawable = array of AGDPictureDrawable;
+  Arr2AGDPictureDrawable = array of Arr1AGDPictureDrawable;
+  Arr3AGDPictureDrawable = array of Arr2AGDPictureDrawable;
+
+  JSCCertificateParsingException = class;
+  Arr1JSCCertificateParsingException = array of JSCCertificateParsingException;
+  Arr2JSCCertificateParsingException = array of Arr1JSCCertificateParsingException;
+  Arr3JSCCertificateParsingException = array of Arr2JSCCertificateParsingException;
+
+  ASSpeechRecognizer = class;
+  Arr1ASSpeechRecognizer = array of ASSpeechRecognizer;
+  Arr2ASSpeechRecognizer = array of Arr1ASSpeechRecognizer;
+  Arr3ASSpeechRecognizer = array of Arr2ASSpeechRecognizer;
+
+  AWMimeTypeMap = class;
+  Arr1AWMimeTypeMap = array of AWMimeTypeMap;
+  Arr2AWMimeTypeMap = array of Arr1AWMimeTypeMap;
+  Arr3AWMimeTypeMap = array of Arr2AWMimeTypeMap;
+
+  ACContentResolver = class;
+  Arr1ACContentResolver = array of ACContentResolver;
+  Arr2ACContentResolver = array of Arr1ACContentResolver;
+  Arr3ACContentResolver = array of Arr2ACContentResolver;
+
+  OAHCEofSensorInputStream = class;
+  Arr1OAHCEofSensorInputStream = array of OAHCEofSensorInputStream;
+  Arr2OAHCEofSensorInputStream = array of Arr1OAHCEofSensorInputStream;
+  Arr3OAHCEofSensorInputStream = array of Arr2OAHCEofSensorInputStream;
+
+  ATMPasswordTransformationMethod = class;
+  Arr1ATMPasswordTransformationMethod = array of ATMPasswordTransformationMethod;
+  Arr2ATMPasswordTransformationMethod = array of Arr1ATMPasswordTransformationMethod;
+  Arr3ATMPasswordTransformationMethod = array of Arr2ATMPasswordTransformationMethod;
+
+  AWViewFlipper = class;
+  Arr1AWViewFlipper = array of AWViewFlipper;
+  Arr2AWViewFlipper = array of Arr1AWViewFlipper;
+  Arr3AWViewFlipper = array of Arr2AWViewFlipper;
+
+  AMMtpDeviceInfo = class;
+  Arr1AMMtpDeviceInfo = array of AMMtpDeviceInfo;
+  Arr2AMMtpDeviceInfo = array of Arr1AMMtpDeviceInfo;
+  Arr3AMMtpDeviceInfo = array of Arr2AMMtpDeviceInfo;
+
+  JUCExecutionException = class;
+  Arr1JUCExecutionException = array of JUCExecutionException;
+  Arr2JUCExecutionException = array of Arr1JUCExecutionException;
+  Arr3JUCExecutionException = array of Arr2JUCExecutionException;
+
+  AWCheckBox = class;
+  Arr1AWCheckBox = array of AWCheckBox;
+  Arr2AWCheckBox = array of Arr1AWCheckBox;
+  Arr3AWCheckBox = array of Arr2AWCheckBox;
+
+  AMAudioManager = class;
+  Arr1AMAudioManager = array of AMAudioManager;
+  Arr2AMAudioManager = array of Arr1AMAudioManager;
+  Arr3AMAudioManager = array of Arr2AMAudioManager;
+
+  APListPreference = class;
+  Arr1APListPreference = array of APListPreference;
+  Arr2APListPreference = array of Arr1APListPreference;
+  Arr3APListPreference = array of Arr2APListPreference;
+
+  AMAVirtualizer = class;
+  Arr1AMAVirtualizer = array of AMAVirtualizer;
+  Arr2AMAVirtualizer = array of Arr1AMAVirtualizer;
+  Arr3AMAVirtualizer = array of Arr2AMAVirtualizer;
+
+  ATSDrawableMarginSpan = class;
+  Arr1ATSDrawableMarginSpan = array of ATSDrawableMarginSpan;
+  Arr2ATSDrawableMarginSpan = array of Arr1ATSDrawableMarginSpan;
+  Arr3ATSDrawableMarginSpan = array of Arr2ATSDrawableMarginSpan;
+
+  JNCServerSocketChannel = class;
+  Arr1JNCServerSocketChannel = array of JNCServerSocketChannel;
+  Arr2JNCServerSocketChannel = array of Arr1JNCServerSocketChannel;
+  Arr3JNCServerSocketChannel = array of Arr2JNCServerSocketChannel;
+
+  JUInputMismatchException = class;
+  Arr1JUInputMismatchException = array of JUInputMismatchException;
+  Arr2JUInputMismatchException = array of Arr1JUInputMismatchException;
+  Arr3JUInputMismatchException = array of Arr2JUInputMismatchException;
+
+  JUCConcurrentSkipListMap = class;
+  Arr1JUCConcurrentSkipListMap = array of JUCConcurrentSkipListMap;
+  Arr2JUCConcurrentSkipListMap = array of Arr1JUCConcurrentSkipListMap;
+  Arr3JUCConcurrentSkipListMap = array of Arr2JUCConcurrentSkipListMap;
+
+  JLNoSuchFieldException = class;
+  Arr1JLNoSuchFieldException = array of JLNoSuchFieldException;
+  Arr2JLNoSuchFieldException = array of Arr1JLNoSuchFieldException;
+  Arr3JLNoSuchFieldException = array of Arr2JLNoSuchFieldException;
+
+  JLAAnnotationTypeMismatchException = class;
+  Arr1JLAAnnotationTypeMismatchException = array of JLAAnnotationTypeMismatchException;
+  Arr2JLAAnnotationTypeMismatchException = array of Arr1JLAAnnotationTypeMismatchException;
+  Arr3JLAAnnotationTypeMismatchException = array of Arr2JLAAnnotationTypeMismatchException;
+
+  JxSCCertificateParsingException = class;
+  Arr1JxSCCertificateParsingException = array of JxSCCertificateParsingException;
+  Arr2JxSCCertificateParsingException = array of Arr1JxSCCertificateParsingException;
+  Arr3JxSCCertificateParsingException = array of Arr2JxSCCertificateParsingException;
+
+  ATServiceTestCase = class;
+  Arr1ATServiceTestCase = array of ATServiceTestCase;
+  Arr2ATServiceTestCase = array of Arr1ATServiceTestCase;
+  Arr3ATServiceTestCase = array of Arr2ATServiceTestCase;
+
+  JIObjectOutputStream = class;
+  Arr1JIObjectOutputStream = array of JIObjectOutputStream;
+  Arr2JIObjectOutputStream = array of Arr1JIObjectOutputStream;
+  Arr3JIObjectOutputStream = array of Arr2JIObjectOutputStream;
+
+  JSProviderException = class;
+  Arr1JSProviderException = array of JSProviderException;
+  Arr2JSProviderException = array of Arr1JSProviderException;
+  Arr3JSProviderException = array of Arr2JSProviderException;
+
+  ABBluetoothA2dp = class;
+  Arr1ABBluetoothA2dp = array of ABBluetoothA2dp;
+  Arr2ABBluetoothA2dp = array of Arr1ABBluetoothA2dp;
+  Arr3ABBluetoothA2dp = array of Arr2ABBluetoothA2dp;
+
+  JNSSSLProtocolException = class;
+  Arr1JNSSSLProtocolException = array of JNSSSLProtocolException;
+  Arr2JNSSSLProtocolException = array of Arr1JNSSSLProtocolException;
+  Arr3JNSSSLProtocolException = array of Arr2JNSSSLProtocolException;
+
+  JLIllegalAccessException = class;
+  Arr1JLIllegalAccessException = array of JLIllegalAccessException;
+  Arr2JLIllegalAccessException = array of Arr1JLIllegalAccessException;
+  Arr3JLIllegalAccessException = array of Arr2JLIllegalAccessException;
+
+  ACAsyncTaskLoader = class;
+  Arr1ACAsyncTaskLoader = array of ACAsyncTaskLoader;
+  Arr2ACAsyncTaskLoader = array of Arr1ACAsyncTaskLoader;
+  Arr3ACAsyncTaskLoader = array of Arr2ACAsyncTaskLoader;
+
+  JBIndexedPropertyChangeEvent = class;
+  Arr1JBIndexedPropertyChangeEvent = array of JBIndexedPropertyChangeEvent;
+  Arr2JBIndexedPropertyChangeEvent = array of Arr1JBIndexedPropertyChangeEvent;
+  Arr3JBIndexedPropertyChangeEvent = array of Arr2JBIndexedPropertyChangeEvent;
+
+  JNBufferOverflowException = class;
+  Arr1JNBufferOverflowException = array of JNBufferOverflowException;
+  Arr2JNBufferOverflowException = array of Arr1JNBufferOverflowException;
+  Arr3JNBufferOverflowException = array of Arr2JNBufferOverflowException;
+
+  JNSKeyStoreBuilderParameters = class;
+  Arr1JNSKeyStoreBuilderParameters = array of JNSKeyStoreBuilderParameters;
+  Arr2JNSKeyStoreBuilderParameters = array of Arr1JNSKeyStoreBuilderParameters;
+  Arr3JNSKeyStoreBuilderParameters = array of Arr2JNSKeyStoreBuilderParameters;
+
+  AGPixelXorXfermode = class;
+  Arr1AGPixelXorXfermode = array of AGPixelXorXfermode;
+  Arr2AGPixelXorXfermode = array of Arr1AGPixelXorXfermode;
+  Arr3AGPixelXorXfermode = array of Arr2AGPixelXorXfermode;
+
+  AVGestureDetector = class;
+  Arr1AVGestureDetector = array of AVGestureDetector;
+  Arr2AVGestureDetector = array of Arr1AVGestureDetector;
+  Arr3AVGestureDetector = array of Arr2AVGestureDetector;
+
+  AVACycleInterpolator = class;
+  Arr1AVACycleInterpolator = array of AVACycleInterpolator;
+  Arr2AVACycleInterpolator = array of Arr1AVACycleInterpolator;
+  Arr3AVACycleInterpolator = array of Arr2AVACycleInterpolator;
+
+  ADSSQLiteDoneException = class;
+  Arr1ADSSQLiteDoneException = array of ADSSQLiteDoneException;
+  Arr2ADSSQLiteDoneException = array of Arr1ADSSQLiteDoneException;
+  Arr3ADSSQLiteDoneException = array of Arr2ADSSQLiteDoneException;
+
+  OAHICNetscapeDraftHeaderParser = class;
+  Arr1OAHICNetscapeDraftHeaderParser = array of OAHICNetscapeDraftHeaderParser;
+  Arr2OAHICNetscapeDraftHeaderParser = array of Arr1OAHICNetscapeDraftHeaderParser;
+  Arr3OAHICNetscapeDraftHeaderParser = array of Arr2OAHICNetscapeDraftHeaderParser;
+
+  JLInstantiationError = class;
+  Arr1JLInstantiationError = array of JLInstantiationError;
+  Arr2JLInstantiationError = array of Arr1JLInstantiationError;
+  Arr3JLInstantiationError = array of Arr2JLInstantiationError;
+
+  AWAbsSeekBar = class;
+  Arr1AWAbsSeekBar = array of AWAbsSeekBar;
+  Arr2AWAbsSeekBar = array of Arr1AWAbsSeekBar;
+  Arr3AWAbsSeekBar = array of Arr2AWAbsSeekBar;
+
+  ALAddress = class;
+  Arr1ALAddress = array of ALAddress;
+  Arr2ALAddress = array of Arr1ALAddress;
+  Arr3ALAddress = array of Arr2ALAddress;
+
+  JTSimpleDateFormat = class;
+  Arr1JTSimpleDateFormat = array of JTSimpleDateFormat;
+  Arr2JTSimpleDateFormat = array of Arr1JTSimpleDateFormat;
+  Arr3JTSimpleDateFormat = array of Arr2JTSimpleDateFormat;
+
+  ATTouchUtils = class;
+  Arr1ATTouchUtils = array of ATTouchUtils;
+  Arr2ATTouchUtils = array of Arr1ATTouchUtils;
+  Arr3ATTouchUtils = array of Arr2ATTouchUtils;
+
+  OXSHLocatorImpl = class;
+  Arr1OXSHLocatorImpl = array of OXSHLocatorImpl;
+  Arr2OXSHLocatorImpl = array of Arr1OXSHLocatorImpl;
+  Arr3OXSHLocatorImpl = array of Arr2OXSHLocatorImpl;
+
+  ACClipboardManager = class;
+  Arr1ACClipboardManager = array of ACClipboardManager;
+  Arr2ACClipboardManager = array of Arr1ACClipboardManager;
+  Arr3ACClipboardManager = array of Arr2ACClipboardManager;
+
+  APPreferenceFragment = class;
+  Arr1APPreferenceFragment = array of APPreferenceFragment;
+  Arr2APPreferenceFragment = array of Arr1APPreferenceFragment;
+  Arr3APPreferenceFragment = array of Arr2APPreferenceFragment;
+
+  JLARetentionPolicy = class;
+  Arr1JLARetentionPolicy = array of JLARetentionPolicy;
+  Arr2JLARetentionPolicy = array of Arr1JLARetentionPolicy;
+  Arr3JLARetentionPolicy = array of Arr2JLARetentionPolicy;
+
+  ACSyncResult = class;
+  Arr1ACSyncResult = array of ACSyncResult;
+  Arr2ACSyncResult = array of Arr1ACSyncResult;
+  Arr3ACSyncResult = array of Arr2ACSyncResult;
+
+  AOStrictMode = class;
+  Arr1AOStrictMode = array of AOStrictMode;
+  Arr2AOStrictMode = array of Arr1AOStrictMode;
+  Arr3AOStrictMode = array of Arr2AOStrictMode;
+
+  JSCCertPathValidatorException = class;
+  Arr1JSCCertPathValidatorException = array of JSCCertPathValidatorException;
+  Arr2JSCCertPathValidatorException = array of Arr1JSCCertPathValidatorException;
+  Arr3JSCCertPathValidatorException = array of Arr2JSCCertPathValidatorException;
+
+  AVSoundEffectConstants = class;
+  Arr1AVSoundEffectConstants = array of AVSoundEffectConstants;
+  Arr2AVSoundEffectConstants = array of Arr1AVSoundEffectConstants;
+  Arr3AVSoundEffectConstants = array of Arr2AVSoundEffectConstants;
+
+  ACRAssetManager = class;
+  Arr1ACRAssetManager = array of ACRAssetManager;
+  Arr2ACRAssetManager = array of Arr1ACRAssetManager;
+  Arr3ACRAssetManager = array of Arr2ACRAssetManager;
+
+  ANTNfcV = class;
+  Arr1ANTNfcV = array of ANTNfcV;
+  Arr2ANTNfcV = array of Arr1ANTNfcV;
+  Arr3ANTNfcV = array of Arr2ANTNfcV;
+
+  JNSTrustManagerFactorySpi = class;
+  Arr1JNSTrustManagerFactorySpi = array of JNSTrustManagerFactorySpi;
+  Arr2JNSTrustManagerFactorySpi = array of Arr1JNSTrustManagerFactorySpi;
+  Arr3JNSTrustManagerFactorySpi = array of Arr2JNSTrustManagerFactorySpi;
+
+  JXPDocumentBuilderFactory = class;
+  Arr1JXPDocumentBuilderFactory = array of JXPDocumentBuilderFactory;
+  Arr2JXPDocumentBuilderFactory = array of Arr1JXPDocumentBuilderFactory;
+  Arr3JXPDocumentBuilderFactory = array of Arr2JXPDocumentBuilderFactory;
+
+  JMKEEGLDisplay = class;
+  Arr1JMKEEGLDisplay = array of JMKEEGLDisplay;
+  Arr2JMKEEGLDisplay = array of Arr1JMKEEGLDisplay;
+  Arr3JMKEEGLDisplay = array of Arr2JMKEEGLDisplay;
+
+  OAHMethodNotSupportedException = class;
+  Arr1OAHMethodNotSupportedException = array of OAHMethodNotSupportedException;
+  Arr2OAHMethodNotSupportedException = array of Arr1OAHMethodNotSupportedException;
+  Arr3OAHMethodNotSupportedException = array of Arr2OAHMethodNotSupportedException;
+
+  JNCConnectionPendingException = class;
+  Arr1JNCConnectionPendingException = array of JNCConnectionPendingException;
+  Arr2JNCConnectionPendingException = array of Arr1JNCConnectionPendingException;
+  Arr3JNCConnectionPendingException = array of Arr2JNCConnectionPendingException;
+
+  ADDrmEvent = class;
+  Arr1ADDrmEvent = array of ADDrmEvent;
+  Arr2ADDrmEvent = array of Arr1ADDrmEvent;
+  Arr3ADDrmEvent = array of Arr2ADDrmEvent;
+
+  JUDictionary = class;
+  Arr1JUDictionary = array of JUDictionary;
+  Arr2JUDictionary = array of Arr1JUDictionary;
+  Arr3JUDictionary = array of Arr2JUDictionary;
+
+  ATSyncBaseInstrumentation = class;
+  Arr1ATSyncBaseInstrumentation = array of ATSyncBaseInstrumentation;
+  Arr2ATSyncBaseInstrumentation = array of Arr1ATSyncBaseInstrumentation;
+  Arr3ATSyncBaseInstrumentation = array of Arr2ATSyncBaseInstrumentation;
+
+  AOParcelFileDescriptor = class;
+  Arr1AOParcelFileDescriptor = array of AOParcelFileDescriptor;
+  Arr2AOParcelFileDescriptor = array of Arr1AOParcelFileDescriptor;
+  Arr3AOParcelFileDescriptor = array of Arr2AOParcelFileDescriptor;
+
+  JIStreamTokenizer = class;
+  Arr1JIStreamTokenizer = array of JIStreamTokenizer;
+  Arr2JIStreamTokenizer = array of Arr1JIStreamTokenizer;
+  Arr3JIStreamTokenizer = array of Arr2JIStreamTokenizer;
+
+  APSyncStateContract = class;
+  Arr1APSyncStateContract = array of APSyncStateContract;
+  Arr2APSyncStateContract = array of Arr1APSyncStateContract;
+  Arr3APSyncStateContract = array of Arr2APSyncStateContract;
+
+  AGRegion = class;
+  Arr1AGRegion = array of AGRegion;
+  Arr2AGRegion = array of Arr1AGRegion;
+  Arr3AGRegion = array of Arr2AGRegion;
+
+  AUProperty = class;
+  Arr1AUProperty = array of AUProperty;
+  Arr2AUProperty = array of Arr1AUProperty;
+  Arr3AUProperty = array of Arr2AUProperty;
+
+  OAHICBasicSecureHandler = class;
+  Arr1OAHICBasicSecureHandler = array of OAHICBasicSecureHandler;
+  Arr2OAHICBasicSecureHandler = array of Arr1OAHICBasicSecureHandler;
+  Arr3OAHICBasicSecureHandler = array of Arr2OAHICBasicSecureHandler;
+
+  OAHPRequestConnControl = class;
+  Arr1OAHPRequestConnControl = array of OAHPRequestConnControl;
+  Arr2OAHPRequestConnControl = array of Arr1OAHPRequestConnControl;
+  Arr3OAHPRequestConnControl = array of Arr2OAHPRequestConnControl;
+
+  OAHICAbstractClientConnAdapter = class;
+  Arr1OAHICAbstractClientConnAdapter = array of OAHICAbstractClientConnAdapter;
+  Arr2OAHICAbstractClientConnAdapter = array of Arr1OAHICAbstractClientConnAdapter;
+  Arr3OAHICAbstractClientConnAdapter = array of Arr2OAHICAbstractClientConnAdapter;
+
+  OAHCPResponseProcessCookies = class;
+  Arr1OAHCPResponseProcessCookies = array of OAHCPResponseProcessCookies;
+  Arr2OAHCPResponseProcessCookies = array of Arr1OAHCPResponseProcessCookies;
+  Arr3OAHCPResponseProcessCookies = array of Arr2OAHCPResponseProcessCookies;
+
+  OAHIIHttpTransportMetricsImpl = class;
+  Arr1OAHIIHttpTransportMetricsImpl = array of OAHIIHttpTransportMetricsImpl;
+  Arr2OAHIIHttpTransportMetricsImpl = array of Arr1OAHIIHttpTransportMetricsImpl;
+  Arr3OAHIIHttpTransportMetricsImpl = array of Arr2OAHIIHttpTransportMetricsImpl;
+
+  JSMessageDigest = class;
+  Arr1JSMessageDigest = array of JSMessageDigest;
+  Arr2JSMessageDigest = array of Arr1JSMessageDigest;
+  Arr3JSMessageDigest = array of Arr2JSMessageDigest;
+
+  AGCanvas = class;
+  Arr1AGCanvas = array of AGCanvas;
+  Arr2AGCanvas = array of Arr1AGCanvas;
+  Arr3AGCanvas = array of Arr2AGCanvas;
+
+  OAHCPConnManagerParamBean = class;
+  Arr1OAHCPConnManagerParamBean = array of OAHCPConnManagerParamBean;
+  Arr2OAHCPConnManagerParamBean = array of Arr1OAHCPConnManagerParamBean;
+  Arr3OAHCPConnManagerParamBean = array of Arr2OAHCPConnManagerParamBean;
+
+  JNProxy = class;
+  Arr1JNProxy = array of JNProxy;
+  Arr2JNProxy = array of Arr1JNProxy;
+  Arr3JNProxy = array of Arr2JNProxy;
+
+  AOGLES20 = class;
+  Arr1AOGLES20 = array of AOGLES20;
+  Arr2AOGLES20 = array of Arr1AOGLES20;
+  Arr3AOGLES20 = array of Arr2AOGLES20;
+
+  AGInterpolator = class;
+  Arr1AGInterpolator = array of AGInterpolator;
+  Arr2AGInterpolator = array of Arr1AGInterpolator;
+  Arr3AGInterpolator = array of Arr2AGInterpolator;
+
+  AULogPrinter = class;
+  Arr1AULogPrinter = array of AULogPrinter;
+  Arr2AULogPrinter = array of Arr1AULogPrinter;
+  Arr3AULogPrinter = array of Arr2AULogPrinter;
+
+  JLProcess = class;
+  Arr1JLProcess = array of JLProcess;
+  Arr2JLProcess = array of Arr1JLProcess;
+  Arr3JLProcess = array of Arr2JLProcess;
+
+  ATURfc822Token = class;
+  Arr1ATURfc822Token = array of ATURfc822Token;
+  Arr2ATURfc822Token = array of Arr1ATURfc822Token;
+  Arr3ATURfc822Token = array of Arr2ATURfc822Token;
+
+  AVMenuInflater = class;
+  Arr1AVMenuInflater = array of AVMenuInflater;
+  Arr2AVMenuInflater = array of Arr1AVMenuInflater;
+  Arr3AVMenuInflater = array of Arr2AVMenuInflater;
+
+  JSInvalidAlgorithmParameterException = class;
+  Arr1JSInvalidAlgorithmParameterException = array of JSInvalidAlgorithmParameterException;
+  Arr2JSInvalidAlgorithmParameterException = array of Arr1JSInvalidAlgorithmParameterException;
+  Arr3JSInvalidAlgorithmParameterException = array of Arr2JSInvalidAlgorithmParameterException;
+
+  AVDragEvent = class;
+  Arr1AVDragEvent = array of AVDragEvent;
+  Arr2AVDragEvent = array of Arr1AVDragEvent;
+  Arr3AVDragEvent = array of Arr2AVDragEvent;
+
+  AUDisplayMetrics = class;
+  Arr1AUDisplayMetrics = array of AUDisplayMetrics;
+  Arr2AUDisplayMetrics = array of Arr1AUDisplayMetrics;
+  Arr3AUDisplayMetrics = array of Arr2AUDisplayMetrics;
+
+  ATComparisonFailure = class;
+  Arr1ATComparisonFailure = array of ATComparisonFailure;
+  Arr2ATComparisonFailure = array of Arr1ATComparisonFailure;
+  Arr3ATComparisonFailure = array of Arr2ATComparisonFailure;
+
+  JIDataInputStream = class;
+  Arr1JIDataInputStream = array of JIDataInputStream;
+  Arr2JIDataInputStream = array of Arr1JIDataInputStream;
+  Arr3JIDataInputStream = array of Arr2JIDataInputStream;
+
+  AGPath = class;
+  Arr1AGPath = array of AGPath;
+  Arr2AGPath = array of Arr1AGPath;
+  Arr3AGPath = array of Arr2AGPath;
+
+  OAHIIChunkedOutputStream = class;
+  Arr1OAHIIChunkedOutputStream = array of OAHIIChunkedOutputStream;
+  Arr2OAHIIChunkedOutputStream = array of Arr1OAHIIChunkedOutputStream;
+  Arr3OAHIIChunkedOutputStream = array of Arr2OAHIIChunkedOutputStream;
+
+  OAHIEnglishReasonPhraseCatalog = class;
+  Arr1OAHIEnglishReasonPhraseCatalog = array of OAHIEnglishReasonPhraseCatalog;
+  Arr2OAHIEnglishReasonPhraseCatalog = array of Arr1OAHIEnglishReasonPhraseCatalog;
+  Arr3OAHIEnglishReasonPhraseCatalog = array of Arr2OAHIEnglishReasonPhraseCatalog;
+
+  JIInputStreamReader = class;
+  Arr1JIInputStreamReader = array of JIInputStreamReader;
+  Arr2JIInputStreamReader = array of Arr1JIInputStreamReader;
+  Arr3JIInputStreamReader = array of Arr2JIInputStreamReader;
+
+  JCSDHParameterSpec = class;
+  Arr1JCSDHParameterSpec = array of JCSDHParameterSpec;
+  Arr2JCSDHParameterSpec = array of Arr1JCSDHParameterSpec;
+  Arr3JCSDHParameterSpec = array of Arr2JCSDHParameterSpec;
+
+  ATSRasterizerSpan = class;
+  Arr1ATSRasterizerSpan = array of ATSRasterizerSpan;
+  Arr2ATSRasterizerSpan = array of Arr1ATSRasterizerSpan;
+  Arr3ATSRasterizerSpan = array of Arr2ATSRasterizerSpan;
+
+  JIPrintWriter = class;
+  Arr1JIPrintWriter = array of JIPrintWriter;
+  Arr2JIPrintWriter = array of Arr1JIPrintWriter;
+  Arr3JIPrintWriter = array of Arr2JIPrintWriter;
+
+  AVAAnimationSet = class;
+  Arr1AVAAnimationSet = array of AVAAnimationSet;
+  Arr2AVAAnimationSet = array of Arr1AVAAnimationSet;
+  Arr3AVAAnimationSet = array of Arr2AVAAnimationSet;
+
+  ARMatrix4f = class;
+  Arr1ARMatrix4f = array of ARMatrix4f;
+  Arr2ARMatrix4f = array of Arr1ARMatrix4f;
+  Arr3ARMatrix4f = array of Arr2ARMatrix4f;
+
+  JSBatchUpdateException = class;
+  Arr1JSBatchUpdateException = array of JSBatchUpdateException;
+  Arr2JSBatchUpdateException = array of Arr1JSBatchUpdateException;
+  Arr3JSBatchUpdateException = array of Arr2JSBatchUpdateException;
+
+  JNSTrustManagerFactory = class;
+  Arr1JNSTrustManagerFactory = array of JNSTrustManagerFactory;
+  Arr2JNSTrustManagerFactory = array of Arr1JNSTrustManagerFactory;
+  Arr3JNSTrustManagerFactory = array of Arr2JNSTrustManagerFactory;
+
+  JXTSSAXSource = class;
+  Arr1JXTSSAXSource = array of JXTSSAXSource;
+  Arr2JXTSSAXSource = array of Arr1JXTSSAXSource;
+  Arr3JXTSSAXSource = array of Arr2JXTSSAXSource;
+
+  ATActivityInstrumentationTestCase = class;
+  Arr1ATActivityInstrumentationTestCase = array of ATActivityInstrumentationTestCase;
+  Arr2ATActivityInstrumentationTestCase = array of Arr1ATActivityInstrumentationTestCase;
+  Arr3ATActivityInstrumentationTestCase = array of Arr2ATActivityInstrumentationTestCase;
+
+  JIBufferedReader = class;
+  Arr1JIBufferedReader = array of JIBufferedReader;
+  Arr2JIBufferedReader = array of Arr1JIBufferedReader;
+  Arr3JIBufferedReader = array of Arr2JIBufferedReader;
+
+  JSUnrecoverableEntryException = class;
+  Arr1JSUnrecoverableEntryException = array of JSUnrecoverableEntryException;
+  Arr2JSUnrecoverableEntryException = array of Arr1JSUnrecoverableEntryException;
+  Arr3JSUnrecoverableEntryException = array of Arr2JSUnrecoverableEntryException;
+
+  APPreferenceScreen = class;
+  Arr1APPreferenceScreen = array of APPreferenceScreen;
+  Arr2APPreferenceScreen = array of Arr1APPreferenceScreen;
+  Arr3APPreferenceScreen = array of Arr2APPreferenceScreen;
+
+  OAHHttpException = class;
+  Arr1OAHHttpException = array of OAHHttpException;
+  Arr2OAHHttpException = array of Arr1OAHHttpException;
+  Arr3OAHHttpException = array of Arr2OAHHttpException;
+
+  OAHICDefaultProxyAuthenticationHandler = class;
+  Arr1OAHICDefaultProxyAuthenticationHandler = array of OAHICDefaultProxyAuthenticationHandler;
+  Arr2OAHICDefaultProxyAuthenticationHandler = array of Arr1OAHICDefaultProxyAuthenticationHandler;
+  Arr3OAHICDefaultProxyAuthenticationHandler = array of Arr2OAHICDefaultProxyAuthenticationHandler;
+
+  AVIInputMethodManager = class;
+  Arr1AVIInputMethodManager = array of AVIInputMethodManager;
+  Arr2AVIInputMethodManager = array of Arr1AVIInputMethodManager;
+  Arr3AVIInputMethodManager = array of Arr2AVIInputMethodManager;
+
+  JUZZipException = class;
+  Arr1JUZZipException = array of JUZZipException;
+  Arr2JUZZipException = array of Arr1JUZZipException;
+  Arr3JUZZipException = array of Arr2JUZZipException;
+
+  ARRSDriverException = class;
+  Arr1ARRSDriverException = array of ARRSDriverException;
+  Arr2ARRSDriverException = array of Arr1ARRSDriverException;
+  Arr3ARRSDriverException = array of Arr2ARRSDriverException;
+
+  ARMatrix3f = class;
+  Arr1ARMatrix3f = array of ARMatrix3f;
+  Arr2ARMatrix3f = array of Arr1ARMatrix3f;
+  Arr3ARMatrix3f = array of Arr2ARMatrix3f;
+
+  JSTypes = class;
+  Arr1JSTypes = array of JSTypes;
+  Arr2JSTypes = array of Arr1JSTypes;
+  Arr3JSTypes = array of Arr2JSTypes;
+
+  AGColorFilter = class;
+  Arr1AGColorFilter = array of AGColorFilter;
+  Arr2AGColorFilter = array of Arr1AGColorFilter;
+  Arr3AGColorFilter = array of Arr2AGColorFilter;
+
+  JULocale = class;
+  Arr1JULocale = array of JULocale;
+  Arr2JULocale = array of Arr1JULocale;
+  Arr3JULocale = array of Arr2JULocale;
+
+  AVAAnticipateInterpolator = class;
+  Arr1AVAAnticipateInterpolator = array of AVAAnticipateInterpolator;
+  Arr2AVAAnticipateInterpolator = array of Arr1AVAAnticipateInterpolator;
+  Arr3AVAAnticipateInterpolator = array of Arr2AVAAnticipateInterpolator;
+
+  ACMutableContextWrapper = class;
+  Arr1ACMutableContextWrapper = array of ACMutableContextWrapper;
+  Arr2ACMutableContextWrapper = array of Arr1ACMutableContextWrapper;
+  Arr3ACMutableContextWrapper = array of Arr2ACMutableContextWrapper;
+
+  AAFragmentTransaction = class;
+  Arr1AAFragmentTransaction = array of AAFragmentTransaction;
+  Arr2AAFragmentTransaction = array of Arr1AAFragmentTransaction;
+  Arr3AAFragmentTransaction = array of Arr2AAFragmentTransaction;
+
+  AGDSPathShape = class;
+  Arr1AGDSPathShape = array of AGDSPathShape;
+  Arr2AGDSPathShape = array of Arr1AGDSPathShape;
+  Arr3AGDSPathShape = array of Arr2AGDSPathShape;
+
+  JUCLinkedBlockingDeque = class;
+  Arr1JUCLinkedBlockingDeque = array of JUCLinkedBlockingDeque;
+  Arr2JUCLinkedBlockingDeque = array of Arr1JUCLinkedBlockingDeque;
+  Arr3JUCLinkedBlockingDeque = array of Arr2JUCLinkedBlockingDeque;
+
+  JMKEEGLContext = class;
+  Arr1JMKEEGLContext = array of JMKEEGLContext;
+  Arr2JMKEEGLContext = array of Arr1JMKEEGLContext;
+  Arr3JMKEEGLContext = array of Arr2JMKEEGLContext;
+
+  ADDrmRights = class;
+  Arr1ADDrmRights = array of ADDrmRights;
+  Arr2ADDrmRights = array of Arr1ADDrmRights;
+  Arr3ADDrmRights = array of Arr2ADDrmRights;
+
+  OAHCCookieSpecRegistry = class;
+  Arr1OAHCCookieSpecRegistry = array of OAHCCookieSpecRegistry;
+  Arr2OAHCCookieSpecRegistry = array of Arr1OAHCCookieSpecRegistry;
+  Arr3OAHCCookieSpecRegistry = array of Arr2OAHCCookieSpecRegistry;
+
+  JCExemptionMechanismException = class;
+  Arr1JCExemptionMechanismException = array of JCExemptionMechanismException;
+  Arr2JCExemptionMechanismException = array of Arr1JCExemptionMechanismException;
+  Arr3JCExemptionMechanismException = array of Arr2JCExemptionMechanismException;
+
+  AMMtpConstants = class;
+  Arr1AMMtpConstants = array of AMMtpConstants;
+  Arr2AMMtpConstants = array of Arr1AMMtpConstants;
+  Arr3AMMtpConstants = array of Arr2AMMtpConstants;
+
+  JTDateFormatSymbols = class;
+  Arr1JTDateFormatSymbols = array of JTDateFormatSymbols;
+  Arr2JTDateFormatSymbols = array of Arr1JTDateFormatSymbols;
+  Arr3JTDateFormatSymbols = array of Arr2JTDateFormatSymbols;
+
+  ATSAbsoluteSizeSpan = class;
+  Arr1ATSAbsoluteSizeSpan = array of ATSAbsoluteSizeSpan;
+  Arr2ATSAbsoluteSizeSpan = array of Arr1ATSAbsoluteSizeSpan;
+  Arr3ATSAbsoluteSizeSpan = array of Arr2ATSAbsoluteSizeSpan;
+
+  AUTimeUtils = class;
+  Arr1AUTimeUtils = array of AUTimeUtils;
+  Arr2AUTimeUtils = array of Arr1AUTimeUtils;
+  Arr3AUTimeUtils = array of Arr2AUTimeUtils;
+
+  ATSTypefaceSpan = class;
+  Arr1ATSTypefaceSpan = array of ATSTypefaceSpan;
+  Arr2ATSTypefaceSpan = array of Arr1ATSTypefaceSpan;
+  Arr3ATSTypefaceSpan = array of Arr2ATSTypefaceSpan;
+
+  JUObservable = class;
+  Arr1JUObservable = array of JUObservable;
+  Arr2JUObservable = array of Arr1JUObservable;
+  Arr3JUObservable = array of Arr2JUObservable;
+
+  JNCookieHandler = class;
+  Arr1JNCookieHandler = array of JNCookieHandler;
+  Arr2JNCookieHandler = array of Arr1JNCookieHandler;
+  Arr3JNCookieHandler = array of Arr2JNCookieHandler;
+
+  JUCCancellationException = class;
+  Arr1JUCCancellationException = array of JUCCancellationException;
+  Arr2JUCCancellationException = array of Arr1JUCCancellationException;
+  Arr3JUCCancellationException = array of Arr2JUCCancellationException;
+
+  OAHICBrowserCompatSpec = class;
+  Arr1OAHICBrowserCompatSpec = array of OAHICBrowserCompatSpec;
+  Arr2OAHICBrowserCompatSpec = array of Arr1OAHICBrowserCompatSpec;
+  Arr3OAHICBrowserCompatSpec = array of Arr2OAHICBrowserCompatSpec;
+
+  ATClipboardManager = class;
+  Arr1ATClipboardManager = array of ATClipboardManager;
+  Arr2ATClipboardManager = array of Arr1ATClipboardManager;
+  Arr3ATClipboardManager = array of Arr2ATClipboardManager;
+
+  OAHIIIdentityOutputStream = class;
+  Arr1OAHIIIdentityOutputStream = array of OAHIIIdentityOutputStream;
+  Arr2OAHIIIdentityOutputStream = array of Arr1OAHIIIdentityOutputStream;
+  Arr3OAHIIIdentityOutputStream = array of Arr2OAHIIIdentityOutputStream;
+
+  JNCChannels = class;
+  Arr1JNCChannels = array of JNCChannels;
+  Arr2JNCChannels = array of Arr1JNCChannels;
+  Arr3JNCChannels = array of Arr2JNCChannels;
+
+  JUAbstractQueue = class;
+  Arr1JUAbstractQueue = array of JUAbstractQueue;
+  Arr2JUAbstractQueue = array of Arr1JUAbstractQueue;
+  Arr3JUAbstractQueue = array of Arr2JUAbstractQueue;
+
+  OAHAAUTH = class;
+  Arr1OAHAAUTH = array of OAHAAUTH;
+  Arr2OAHAAUTH = array of Arr1OAHAAUTH;
+  Arr3OAHAAUTH = array of Arr2OAHAAUTH;
+
+  JTAttributedString = class;
+  Arr1JTAttributedString = array of JTAttributedString;
+  Arr2JTAttributedString = array of Arr1JTAttributedString;
+  Arr3JTAttributedString = array of Arr2JTAttributedString;
+
+  ATLayout = class;
+  Arr1ATLayout = array of ATLayout;
+  Arr2ATLayout = array of Arr1ATLayout;
+  Arr3ATLayout = array of Arr2ATLayout;
+
+  JNNetPermission = class;
+  Arr1JNNetPermission = array of JNNetPermission;
+  Arr2JNNetPermission = array of Arr1JNNetPermission;
+  Arr3JNNetPermission = array of Arr2JNNetPermission;
+
+  JUZDeflater = class;
+  Arr1JUZDeflater = array of JUZDeflater;
+  Arr2JUZDeflater = array of Arr1JUZDeflater;
+  Arr3JUZDeflater = array of Arr2JUZDeflater;
+
+  OAHICRFC2965VersionAttributeHandler = class;
+  Arr1OAHICRFC2965VersionAttributeHandler = array of OAHICRFC2965VersionAttributeHandler;
+  Arr2OAHICRFC2965VersionAttributeHandler = array of Arr1OAHICRFC2965VersionAttributeHandler;
+  Arr3OAHICRFC2965VersionAttributeHandler = array of Arr2OAHICRFC2965VersionAttributeHandler;
+
+  JCCipherInputStream = class;
+  Arr1JCCipherInputStream = array of JCCipherInputStream;
+  Arr2JCCipherInputStream = array of Arr1JCCipherInputStream;
+  Arr3JCCipherInputStream = array of Arr2JCCipherInputStream;
+
+  JNCSAbstractSelector = class;
+  Arr1JNCSAbstractSelector = array of JNCSAbstractSelector;
+  Arr2JNCSAbstractSelector = array of Arr1JNCSAbstractSelector;
+  Arr3JNCSAbstractSelector = array of Arr2JNCSAbstractSelector;
+
+  JSSigner = class;
+  Arr1JSSigner = array of JSSigner;
+  Arr2JSSigner = array of Arr1JSSigner;
+  Arr3JSSigner = array of Arr2JSSigner;
+
+  JTAnnotation = class;
+  Arr1JTAnnotation = array of JTAnnotation;
+  Arr2JTAnnotation = array of Arr1JTAnnotation;
+  Arr3JTAnnotation = array of Arr2JTAnnotation;
+
+  JUVector = class;
+  Arr1JUVector = array of JUVector;
+  Arr2JUVector = array of Arr1JUVector;
+  Arr3JUVector = array of Arr2JUVector;
+
+  AWDigitalClock = class;
+  Arr1AWDigitalClock = array of AWDigitalClock;
+  Arr2AWDigitalClock = array of Arr1AWDigitalClock;
+  Arr3AWDigitalClock = array of Arr2AWDigitalClock;
+
+  AUPrintStreamPrinter = class;
+  Arr1AUPrintStreamPrinter = array of AUPrintStreamPrinter;
+  Arr2AUPrintStreamPrinter = array of Arr1AUPrintStreamPrinter;
+  Arr3AUPrintStreamPrinter = array of Arr2AUPrintStreamPrinter;
+
+  JCSecretKeyFactorySpi = class;
+  Arr1JCSecretKeyFactorySpi = array of JCSecretKeyFactorySpi;
+  Arr2JCSecretKeyFactorySpi = array of Arr1JCSecretKeyFactorySpi;
+  Arr3JCSecretKeyFactorySpi = array of Arr2JCSecretKeyFactorySpi;
+
+  ATSBackgroundColorSpan = class;
+  Arr1ATSBackgroundColorSpan = array of ATSBackgroundColorSpan;
+  Arr2ATSBackgroundColorSpan = array of Arr1ATSBackgroundColorSpan;
+  Arr3ATSBackgroundColorSpan = array of Arr2ATSBackgroundColorSpan;
+
+  AWConsoleMessage = class;
+  Arr1AWConsoleMessage = array of AWConsoleMessage;
+  Arr2AWConsoleMessage = array of Arr1AWConsoleMessage;
+  Arr3AWConsoleMessage = array of Arr2AWConsoleMessage;
+
+  AVICorrectionInfo = class;
+  Arr1AVICorrectionInfo = array of AVICorrectionInfo;
+  Arr2AVICorrectionInfo = array of Arr1AVICorrectionInfo;
+  Arr3AVICorrectionInfo = array of Arr2AVICorrectionInfo;
+
+  JFTestSuite = class;
+  Arr1JFTestSuite = array of JFTestSuite;
+  Arr2JFTestSuite = array of Arr1JFTestSuite;
+  Arr3JFTestSuite = array of Arr2JFTestSuite;
+
+  ACContextWrapper = class;
+  Arr1ACContextWrapper = array of ACContextWrapper;
+  Arr2ACContextWrapper = array of Arr1ACContextWrapper;
+  Arr3ACContextWrapper = array of Arr2ACContextWrapper;
+
+  AMMediaScannerConnection = class;
+  Arr1AMMediaScannerConnection = array of AMMediaScannerConnection;
+  Arr2AMMediaScannerConnection = array of Arr1AMMediaScannerConnection;
+  Arr3AMMediaScannerConnection = array of Arr2AMMediaScannerConnection;
+
+  OAHMHeaderGroup = class;
+  Arr1OAHMHeaderGroup = array of OAHMHeaderGroup;
+  Arr2OAHMHeaderGroup = array of Arr1OAHMHeaderGroup;
+  Arr3OAHMHeaderGroup = array of Arr2OAHMHeaderGroup;
+
+  ACPeriodicSync = class;
+  Arr1ACPeriodicSync = array of ACPeriodicSync;
+  Arr2ACPeriodicSync = array of Arr1ACPeriodicSync;
+  Arr3ACPeriodicSync = array of Arr2ACPeriodicSync;
+
+  OAHCMHttpPut = class;
+  Arr1OAHCMHttpPut = array of OAHCMHttpPut;
+  Arr2OAHCMHttpPut = array of Arr1OAHCMHttpPut;
+  Arr3OAHCMHttpPut = array of Arr2OAHCMHttpPut;
+
+  AOGLES10 = class;
+  Arr1AOGLES10 = array of AOGLES10;
+  Arr2AOGLES10 = array of Arr1AOGLES10;
+  Arr3AOGLES10 = array of Arr2AOGLES10;
+
+  JSSEncodedKeySpec = class;
+  Arr1JSSEncodedKeySpec = array of JSSEncodedKeySpec;
+  Arr2JSSEncodedKeySpec = array of Arr1JSSEncodedKeySpec;
+  Arr3JSSEncodedKeySpec = array of Arr2JSSEncodedKeySpec;
+
+  AOGLES11 = class;
+  Arr1AOGLES11 = array of AOGLES11;
+  Arr2AOGLES11 = array of Arr1AOGLES11;
+  Arr3AOGLES11 = array of Arr2AOGLES11;
+
+  JIFilterInputStream = class;
+  Arr1JIFilterInputStream = array of JIFilterInputStream;
+  Arr2JIFilterInputStream = array of Arr1JIFilterInputStream;
+  Arr3JIFilterInputStream = array of Arr2JIFilterInputStream;
+
+  JUZCRC32 = class;
+  Arr1JUZCRC32 = array of JUZCRC32;
+  Arr2JUZCRC32 = array of Arr1JUZCRC32;
+  Arr3JUZCRC32 = array of Arr2JUZCRC32;
+
+  JSKeyFactorySpi = class;
+  Arr1JSKeyFactorySpi = array of JSKeyFactorySpi;
+  Arr2JSKeyFactorySpi = array of Arr1JSKeyFactorySpi;
+  Arr3JSKeyFactorySpi = array of Arr2JSKeyFactorySpi;
+
+  JUIllegalFormatPrecisionException = class;
+  Arr1JUIllegalFormatPrecisionException = array of JUIllegalFormatPrecisionException;
+  Arr2JUIllegalFormatPrecisionException = array of Arr1JUIllegalFormatPrecisionException;
+  Arr3JUIllegalFormatPrecisionException = array of Arr2JUIllegalFormatPrecisionException;
+
+  AWAnalogClock = class;
+  Arr1AWAnalogClock = array of AWAnalogClock;
+  Arr2AWAnalogClock = array of Arr1AWAnalogClock;
+  Arr3AWAnalogClock = array of Arr2AWAnalogClock;
+
+  JUCExchanger = class;
+  Arr1JUCExchanger = array of JUCExchanger;
+  Arr2JUCExchanger = array of Arr1JUCExchanger;
+  Arr3JUCExchanger = array of Arr2JUCExchanger;
+
+  OAHCSBrowserCompatHostnameVerifier = class;
+  Arr1OAHCSBrowserCompatHostnameVerifier = array of OAHCSBrowserCompatHostnameVerifier;
+  Arr2OAHCSBrowserCompatHostnameVerifier = array of Arr1OAHCSBrowserCompatHostnameVerifier;
+  Arr3OAHCSBrowserCompatHostnameVerifier = array of Arr2OAHCSBrowserCompatHostnameVerifier;
+
+  ATGSmsManager = class;
+  Arr1ATGSmsManager = array of ATGSmsManager;
+  Arr2ATGSmsManager = array of Arr1ATGSmsManager;
+  Arr3ATGSmsManager = array of Arr2ATGSmsManager;
+
+  JNCSSelectorProvider = class;
+  Arr1JNCSSelectorProvider = array of JNCSSelectorProvider;
+  Arr2JNCSSelectorProvider = array of Arr1JNCSSelectorProvider;
+  Arr3JNCSSelectorProvider = array of Arr2JNCSSelectorProvider;
+
+  ATMBaseMovementMethod = class;
+  Arr1ATMBaseMovementMethod = array of ATMBaseMovementMethod;
+  Arr2ATMBaseMovementMethod = array of Arr1ATMBaseMovementMethod;
+  Arr3ATMBaseMovementMethod = array of Arr2ATMBaseMovementMethod;
+
+  OAHICRedirectLocations = class;
+  Arr1OAHICRedirectLocations = array of OAHICRedirectLocations;
+  Arr2OAHICRedirectLocations = array of Arr1OAHICRedirectLocations;
+  Arr3OAHICRedirectLocations = array of Arr2OAHICRedirectLocations;
+
+  ATSImageSpan = class;
+  Arr1ATSImageSpan = array of ATSImageSpan;
+  Arr2ATSImageSpan = array of Arr1ATSImageSpan;
+  Arr3ATSImageSpan = array of Arr2ATSImageSpan;
+
+  ANTIsoDep = class;
+  Arr1ANTIsoDep = array of ANTIsoDep;
+  Arr2ANTIsoDep = array of Arr1ANTIsoDep;
+  Arr3ANTIsoDep = array of Arr2ANTIsoDep;
+
+  AWExpandableListView = class;
+  Arr1AWExpandableListView = array of AWExpandableListView;
+  Arr2AWExpandableListView = array of Arr1AWExpandableListView;
+  Arr3AWExpandableListView = array of Arr2AWExpandableListView;
+
+  JXTTransformerException = class;
+  Arr1JXTTransformerException = array of JXTTransformerException;
+  Arr2JXTTransformerException = array of Arr1JXTTransformerException;
+  Arr3JXTTransformerException = array of Arr2JXTTransformerException;
+
+  JCSRC5ParameterSpec = class;
+  Arr1JCSRC5ParameterSpec = array of JCSRC5ParameterSpec;
+  Arr2JCSRC5ParameterSpec = array of Arr1JCSRC5ParameterSpec;
+  Arr3JCSRC5ParameterSpec = array of Arr2JCSRC5ParameterSpec;
+
+  ACPPathPermission = class;
+  Arr1ACPPathPermission = array of ACPPathPermission;
+  Arr2ACPPathPermission = array of Arr1ACPPathPermission;
+  Arr3ACPPathPermission = array of Arr2ACPPathPermission;
+
+  JIInputStream = class;
+  Arr1JIInputStream = array of JIInputStream;
+  Arr2JIInputStream = array of Arr1JIInputStream;
+  Arr3JIInputStream = array of Arr2JIInputStream;
+
+  JLSecurityManager = class;
+  Arr1JLSecurityManager = array of JLSecurityManager;
+  Arr2JLSecurityManager = array of Arr1JLSecurityManager;
+  Arr3JLSecurityManager = array of Arr2JLSecurityManager;
+
+  ANRAudioStream = class;
+  Arr1ANRAudioStream = array of ANRAudioStream;
+  Arr2ANRAudioStream = array of Arr1ANRAudioStream;
+  Arr3ANRAudioStream = array of Arr2ANRAudioStream;
+
+  AGDColorDrawable = class;
+  Arr1AGDColorDrawable = array of AGDColorDrawable;
+  Arr2AGDColorDrawable = array of Arr1AGDColorDrawable;
+  Arr3AGDColorDrawable = array of Arr2AGDColorDrawable;
+
+  AGBlurMaskFilter = class;
+  Arr1AGBlurMaskFilter = array of AGBlurMaskFilter;
+  Arr2AGBlurMaskFilter = array of Arr1AGBlurMaskFilter;
+  Arr3AGBlurMaskFilter = array of Arr2AGBlurMaskFilter;
+
+  JNInetSocketAddress = class;
+  Arr1JNInetSocketAddress = array of JNInetSocketAddress;
+  Arr2JNInetSocketAddress = array of Arr1JNInetSocketAddress;
+  Arr3JNInetSocketAddress = array of Arr2JNInetSocketAddress;
+
+  JNHttpCookie = class;
+  Arr1JNHttpCookie = array of JNHttpCookie;
+  Arr2JNHttpCookie = array of Arr1JNHttpCookie;
+  Arr3JNHttpCookie = array of Arr2JNHttpCookie;
+
+  AOLooper = class;
+  Arr1AOLooper = array of AOLooper;
+  Arr2AOLooper = array of Arr1AOLooper;
+  Arr3AOLooper = array of Arr2AOLooper;
+
+  JLStackOverflowError = class;
+  Arr1JLStackOverflowError = array of JLStackOverflowError;
+  Arr2JLStackOverflowError = array of Arr1JLStackOverflowError;
+  Arr3JLStackOverflowError = array of Arr2JLStackOverflowError;
+
+  AMEEffect = class;
+  Arr1AMEEffect = array of AMEEffect;
+  Arr2AMEEffect = array of Arr1AMEEffect;
+  Arr3AMEEffect = array of Arr2AMEEffect;
+
+  JSPrivilegedActionException = class;
+  Arr1JSPrivilegedActionException = array of JSPrivilegedActionException;
+  Arr2JSPrivilegedActionException = array of Arr1JSPrivilegedActionException;
+  Arr3JSPrivilegedActionException = array of Arr2JSPrivilegedActionException;
+
+  AAExpandableListActivity = class;
+  Arr1AAExpandableListActivity = array of AAExpandableListActivity;
+  Arr2AAExpandableListActivity = array of Arr1AAExpandableListActivity;
+  Arr3AAExpandableListActivity = array of Arr2AAExpandableListActivity;
+
+  AWFilter = class;
+  Arr1AWFilter = array of AWFilter;
+  Arr2AWFilter = array of Arr1AWFilter;
+  Arr3AWFilter = array of Arr2AWFilter;
+
+  AWSearchView = class;
+  Arr1AWSearchView = array of AWSearchView;
+  Arr2AWSearchView = array of Arr1AWSearchView;
+  Arr3AWSearchView = array of Arr2AWSearchView;
+
+  AWSlidingDrawer = class;
+  Arr1AWSlidingDrawer = array of AWSlidingDrawer;
+  Arr2AWSlidingDrawer = array of Arr1AWSlidingDrawer;
+  Arr3AWSlidingDrawer = array of Arr2AWSlidingDrawer;
+
+  AWTableLayout = class;
+  Arr1AWTableLayout = array of AWTableLayout;
+  Arr2AWTableLayout = array of Arr1AWTableLayout;
+  Arr3AWTableLayout = array of Arr2AWTableLayout;
+
+  JSProvider = class;
+  Arr1JSProvider = array of JSProvider;
+  Arr2JSProvider = array of Arr1JSProvider;
+  Arr3JSProvider = array of Arr2JSProvider;
+
+  JxSCCertificate = class;
+  Arr1JxSCCertificate = array of JxSCCertificate;
+  Arr2JxSCCertificate = array of Arr1JxSCCertificate;
+  Arr3JxSCCertificate = array of Arr2JxSCCertificate;
+
+  OAHICBasicDomainHandler = class;
+  Arr1OAHICBasicDomainHandler = array of OAHICBasicDomainHandler;
+  Arr2OAHICBasicDomainHandler = array of Arr1OAHICBasicDomainHandler;
+  Arr3OAHICBasicDomainHandler = array of Arr2OAHICBasicDomainHandler;
+
+  JIBufferedWriter = class;
+  Arr1JIBufferedWriter = array of JIBufferedWriter;
+  Arr2JIBufferedWriter = array of Arr1JIBufferedWriter;
+  Arr3JIBufferedWriter = array of Arr2JIBufferedWriter;
+
+  ATMCharacterPickerDialog = class;
+  Arr1ATMCharacterPickerDialog = array of ATMCharacterPickerDialog;
+  Arr2ATMCharacterPickerDialog = array of Arr1ATMCharacterPickerDialog;
+  Arr3ATMCharacterPickerDialog = array of Arr2ATMCharacterPickerDialog;
+
+  JSCPKIXParameters = class;
+  Arr1JSCPKIXParameters = array of JSCPKIXParameters;
+  Arr2JSCPKIXParameters = array of Arr1JSCPKIXParameters;
+  Arr3JSCPKIXParameters = array of Arr2JSCPKIXParameters;
+
+  JUJPack200 = class;
+  Arr1JUJPack200 = array of JUJPack200;
+  Arr2JUJPack200 = array of Arr1JUJPack200;
+  Arr3JUJPack200 = array of Arr2JUJPack200;
+
+  JULLoggingPermission = class;
+  Arr1JULLoggingPermission = array of JULLoggingPermission;
+  Arr2JULLoggingPermission = array of Arr1JULLoggingPermission;
+  Arr3JULLoggingPermission = array of Arr2JULLoggingPermission;
+
+  JNResponseCache = class;
+  Arr1JNResponseCache = array of JNResponseCache;
+  Arr2JNResponseCache = array of Arr1JNResponseCache;
+  Arr3JNResponseCache = array of Arr2JNResponseCache;
+
+  ADContentObserver = class;
+  Arr1ADContentObserver = array of ADContentObserver;
+  Arr2ADContentObserver = array of Arr1ADContentObserver;
+  Arr3ADContentObserver = array of Arr2ADContentObserver;
+
+  AWLinearLayout = class;
+  Arr1AWLinearLayout = array of AWLinearLayout;
+  Arr2AWLinearLayout = array of Arr1AWLinearLayout;
+  Arr3AWLinearLayout = array of Arr2AWLinearLayout;
+
+  JUArrayList = class;
+  Arr1JUArrayList = array of JUArrayList;
+  Arr2JUArrayList = array of Arr1JUArrayList;
+  Arr3JUArrayList = array of Arr2JUArrayList;
+
+  JSANotOwnerException = class;
+  Arr1JSANotOwnerException = array of JSANotOwnerException;
+  Arr2JSANotOwnerException = array of Arr1JSANotOwnerException;
+  Arr3JSANotOwnerException = array of Arr2JSANotOwnerException;
+
+  JUZZipError = class;
+  Arr1JUZZipError = array of JUZZipError;
+  Arr2JUZZipError = array of Arr1JUZZipError;
+  Arr3JUZZipError = array of Arr2JUZZipError;
+
+  JSCodeSource = class;
+  Arr1JSCodeSource = array of JSCodeSource;
+  Arr2JSCodeSource = array of Arr1JSCodeSource;
+  Arr3JSCodeSource = array of Arr2JSCodeSource;
+
+  JINotActiveException = class;
+  Arr1JINotActiveException = array of JINotActiveException;
+  Arr2JINotActiveException = array of Arr1JINotActiveException;
+  Arr3JINotActiveException = array of Arr2JINotActiveException;
+
+  JIDataOutputStream = class;
+  Arr1JIDataOutputStream = array of JIDataOutputStream;
+  Arr2JIDataOutputStream = array of Arr1JIDataOutputStream;
+  Arr3JIDataOutputStream = array of Arr2JIDataOutputStream;
+
+  JCSDHGenParameterSpec = class;
+  Arr1JCSDHGenParameterSpec = array of JCSDHGenParameterSpec;
+  Arr2JCSDHGenParameterSpec = array of Arr1JCSDHGenParameterSpec;
+  Arr3JCSDHGenParameterSpec = array of Arr2JCSDHGenParameterSpec;
+
+  ACRObbInfo = class;
+  Arr1ACRObbInfo = array of ACRObbInfo;
+  Arr2ACRObbInfo = array of Arr1ACRObbInfo;
+  Arr3ACRObbInfo = array of Arr2ACRObbInfo;
+
+  AAArgbEvaluator = class;
+  Arr1AAArgbEvaluator = array of AAArgbEvaluator;
+  Arr2AAArgbEvaluator = array of Arr1AAArgbEvaluator;
+  Arr3AAArgbEvaluator = array of Arr2AAArgbEvaluator;
+
+  JSCX509CRLEntry = class;
+  Arr1JSCX509CRLEntry = array of JSCX509CRLEntry;
+  Arr2JSCX509CRLEntry = array of Arr1JSCX509CRLEntry;
+  Arr3JSCX509CRLEntry = array of Arr2JSCX509CRLEntry;
+
+  ANHHttpResponseCache = class;
+  Arr1ANHHttpResponseCache = array of ANHHttpResponseCache;
+  Arr2ANHHttpResponseCache = array of Arr1ANHHttpResponseCache;
+  Arr3ANHHttpResponseCache = array of Arr2ANHHttpResponseCache;
+
+  OAHIADigestScheme = class;
+  Arr1OAHIADigestScheme = array of OAHIADigestScheme;
+  Arr2OAHIADigestScheme = array of Arr1OAHIADigestScheme;
+  Arr3OAHIADigestScheme = array of Arr2OAHIADigestScheme;
+
+  AMMediaRecorder = class;
+  Arr1AMMediaRecorder = array of AMMediaRecorder;
+  Arr2AMMediaRecorder = array of Arr1AMMediaRecorder;
+  Arr3AMMediaRecorder = array of Arr2AMMediaRecorder;
+
+  OAHPHTTP = class;
+  Arr1OAHPHTTP = array of OAHPHTTP;
+  Arr2OAHPHTTP = array of Arr1OAHPHTTP;
+  Arr3OAHPHTTP = array of Arr2OAHPHTTP;
+
+  OAHICDefaultResponseParser = class;
+  Arr1OAHICDefaultResponseParser = array of OAHICDefaultResponseParser;
+  Arr2OAHICDefaultResponseParser = array of Arr1OAHICDefaultResponseParser;
+  Arr3OAHICDefaultResponseParser = array of Arr2OAHICDefaultResponseParser;
+
+  ANTagLostException = class;
+  Arr1ANTagLostException = array of ANTagLostException;
+  Arr2ANTagLostException = array of Arr1ANTagLostException;
+  Arr3ANTagLostException = array of Arr2ANTagLostException;
+
+  AAAccountAuthenticatorResponse = class;
+  Arr1AAAccountAuthenticatorResponse = array of AAAccountAuthenticatorResponse;
+  Arr2AAAccountAuthenticatorResponse = array of Arr1AAAccountAuthenticatorResponse;
+  Arr3AAAccountAuthenticatorResponse = array of Arr2AAAccountAuthenticatorResponse;
+
+  AUMonthDisplayHelper = class;
+  Arr1AUMonthDisplayHelper = array of AUMonthDisplayHelper;
+  Arr2AUMonthDisplayHelper = array of Arr1AUMonthDisplayHelper;
+  Arr3AUMonthDisplayHelper = array of Arr2AUMonthDisplayHelper;
+
+  ABBluetoothHealthCallback = class;
+  Arr1ABBluetoothHealthCallback = array of ABBluetoothHealthCallback;
+  Arr2ABBluetoothHealthCallback = array of Arr1ABBluetoothHealthCallback;
+  Arr3ABBluetoothHealthCallback = array of Arr2ABBluetoothHealthCallback;
+
+  ACPApplicationInfo = class;
+  Arr1ACPApplicationInfo = array of ACPApplicationInfo;
+  Arr2ACPApplicationInfo = array of Arr1ACPApplicationInfo;
+  Arr3ACPApplicationInfo = array of Arr2ACPApplicationInfo;
+
+  AAActivityGroup = class;
+  Arr1AAActivityGroup = array of AAActivityGroup;
+  Arr2AAActivityGroup = array of Arr1AAActivityGroup;
+  Arr3AAActivityGroup = array of Arr2AAActivityGroup;
+
+  OWDLLSException = class;
+  Arr1OWDLLSException = array of OWDLLSException;
+  Arr2OWDLLSException = array of Arr1OWDLLSException;
+  Arr3OWDLLSException = array of Arr2OWDLLSException;
+
+  ARRSInvalidStateException = class;
+  Arr1ARRSInvalidStateException = array of ARRSInvalidStateException;
+  Arr2ARRSInvalidStateException = array of Arr1ARRSInvalidStateException;
+  Arr3ARRSInvalidStateException = array of Arr2ARRSInvalidStateException;
+
+  OAHCClientProtocolException = class;
+  Arr1OAHCClientProtocolException = array of OAHCClientProtocolException;
+  Arr2OAHCClientProtocolException = array of Arr1OAHCClientProtocolException;
+  Arr3OAHCClientProtocolException = array of Arr2OAHCClientProtocolException;
+
+  ACPProviderInfo = class;
+  Arr1ACPProviderInfo = array of ACPProviderInfo;
+  Arr2ACPProviderInfo = array of Arr1ACPProviderInfo;
+  Arr3ACPProviderInfo = array of Arr2ACPProviderInfo;
+
+  JIBufferedInputStream = class;
+  Arr1JIBufferedInputStream = array of JIBufferedInputStream;
+  Arr2JIBufferedInputStream = array of Arr1JIBufferedInputStream;
+  Arr3JIBufferedInputStream = array of Arr2JIBufferedInputStream;
+
+  JLNoSuchMethodError = class;
+  Arr1JLNoSuchMethodError = array of JLNoSuchMethodError;
+  Arr2JLNoSuchMethodError = array of Arr1JLNoSuchMethodError;
+  Arr3JLNoSuchMethodError = array of Arr2JLNoSuchMethodError;
+
+  OAHCSScheme = class;
+  Arr1OAHCSScheme = array of OAHCSScheme;
+  Arr2OAHCSScheme = array of Arr1OAHCSScheme;
+  Arr3OAHCSScheme = array of Arr2OAHCSScheme;
+
+  ANSSipManager = class;
+  Arr1ANSSipManager = array of ANSSipManager;
+  Arr2ANSSipManager = array of Arr1ANSSipManager;
+  Arr3ANSSipManager = array of Arr2ANSSipManager;
+
+  AUAndroidRuntimeException = class;
+  Arr1AUAndroidRuntimeException = array of AUAndroidRuntimeException;
+  Arr2AUAndroidRuntimeException = array of Arr1AUAndroidRuntimeException;
+  Arr3AUAndroidRuntimeException = array of Arr2AUAndroidRuntimeException;
+
+  JXVSchemaFactoryLoader = class;
+  Arr1JXVSchemaFactoryLoader = array of JXVSchemaFactoryLoader;
+  Arr2JXVSchemaFactoryLoader = array of Arr1JXVSchemaFactoryLoader;
+  Arr3JXVSchemaFactoryLoader = array of Arr2JXVSchemaFactoryLoader;
+
+  JTRuleBasedCollator = class;
+  Arr1JTRuleBasedCollator = array of JTRuleBasedCollator;
+  Arr2JTRuleBasedCollator = array of Arr1JTRuleBasedCollator;
+  Arr3JTRuleBasedCollator = array of Arr2JTRuleBasedCollator;
+
+  AWCheckedTextView = class;
+  Arr1AWCheckedTextView = array of AWCheckedTextView;
+  Arr2AWCheckedTextView = array of Arr1AWCheckedTextView;
+  Arr3AWCheckedTextView = array of Arr2AWCheckedTextView;
+
+  AUTimeFormatException = class;
+  Arr1AUTimeFormatException = array of AUTimeFormatException;
+  Arr2AUTimeFormatException = array of Arr1AUTimeFormatException;
+  Arr3AUTimeFormatException = array of Arr2AUTimeFormatException;
+
+  ACContentUris = class;
+  Arr1ACContentUris = array of ACContentUris;
+  Arr2ACContentUris = array of Arr1ACContentUris;
+  Arr3ACContentUris = array of Arr2ACContentUris;
+
+  ANNfcAdapter = class;
+  Arr1ANNfcAdapter = array of ANNfcAdapter;
+  Arr2ANNfcAdapter = array of Arr1ANNfcAdapter;
+  Arr3ANNfcAdapter = array of Arr2ANNfcAdapter;
+
+  AUBase64 = class;
+  Arr1AUBase64 = array of AUBase64;
+  Arr2AUBase64 = array of Arr1AUBase64;
+  Arr3AUBase64 = array of Arr2AUBase64;
+
+  ARMatrix2f = class;
+  Arr1ARMatrix2f = array of ARMatrix2f;
+  Arr2ARMatrix2f = array of Arr1ARMatrix2f;
+  Arr3ARMatrix2f = array of Arr2ARMatrix2f;
+
+  AUPrintWriterPrinter = class;
+  Arr1AUPrintWriterPrinter = array of AUPrintWriterPrinter;
+  Arr2AUPrintWriterPrinter = array of Arr1AUPrintWriterPrinter;
+  Arr3AUPrintWriterPrinter = array of Arr2AUPrintWriterPrinter;
+
+  AWSimpleCursorTreeAdapter = class;
+  Arr1AWSimpleCursorTreeAdapter = array of AWSimpleCursorTreeAdapter;
+  Arr2AWSimpleCursorTreeAdapter = array of Arr1AWSimpleCursorTreeAdapter;
+  Arr3AWSimpleCursorTreeAdapter = array of Arr2AWSimpleCursorTreeAdapter;
+
+  JCSPBEParameterSpec = class;
+  Arr1JCSPBEParameterSpec = array of JCSPBEParameterSpec;
+  Arr2JCSPBEParameterSpec = array of Arr1JCSPBEParameterSpec;
+  Arr3JCSPBEParameterSpec = array of Arr2JCSPBEParameterSpec;
+
+  ADSSQLiteAccessPermException = class;
+  Arr1ADSSQLiteAccessPermException = array of ADSSQLiteAccessPermException;
+  Arr2ADSSQLiteAccessPermException = array of Arr1ADSSQLiteAccessPermException;
+  Arr3ADSSQLiteAccessPermException = array of Arr2ADSSQLiteAccessPermException;
+
+  JSASubjectDomainCombiner = class;
+  Arr1JSASubjectDomainCombiner = array of JSASubjectDomainCombiner;
+  Arr2JSASubjectDomainCombiner = array of Arr1JSASubjectDomainCombiner;
+  Arr3JSASubjectDomainCombiner = array of Arr2JSASubjectDomainCombiner;
+
+  OAHPHttpConnectionParams = class;
+  Arr1OAHPHttpConnectionParams = array of OAHPHttpConnectionParams;
+  Arr2OAHPHttpConnectionParams = array of Arr1OAHPHttpConnectionParams;
+  Arr3OAHPHttpConnectionParams = array of Arr2OAHPHttpConnectionParams;
+
+  AGTypeface = class;
+  Arr1AGTypeface = array of AGTypeface;
+  Arr2AGTypeface = array of Arr1AGTypeface;
+  Arr3AGTypeface = array of Arr2AGTypeface;
+
+  OAHUExceptionUtils = class;
+  Arr1OAHUExceptionUtils = array of OAHUExceptionUtils;
+  Arr2OAHUExceptionUtils = array of Arr1OAHUExceptionUtils;
+  Arr3OAHUExceptionUtils = array of Arr2OAHUExceptionUtils;
+
+  OAHICTAbstractConnPool = class;
+  Arr1OAHICTAbstractConnPool = array of OAHICTAbstractConnPool;
+  Arr2OAHICTAbstractConnPool = array of Arr1OAHICTAbstractConnPool;
+  Arr3OAHICTAbstractConnPool = array of Arr2OAHICTAbstractConnPool;
+
+  JSSInvalidParameterSpecException = class;
+  Arr1JSSInvalidParameterSpecException = array of JSSInvalidParameterSpecException;
+  Arr2JSSInvalidParameterSpecException = array of Arr1JSSInvalidParameterSpecException;
+  Arr3JSSInvalidParameterSpecException = array of Arr2JSSInvalidParameterSpecException;
+
+  AMCamcorderProfile = class;
+  Arr1AMCamcorderProfile = array of AMCamcorderProfile;
+  Arr2AMCamcorderProfile = array of Arr1AMCamcorderProfile;
+  Arr3AMCamcorderProfile = array of Arr2AMCamcorderProfile;
+
+  JXTSStreamSource = class;
+  Arr1JXTSStreamSource = array of JXTSStreamSource;
+  Arr2JXTSStreamSource = array of Arr1JXTSStreamSource;
+  Arr3JXTSStreamSource = array of Arr2JXTSStreamSource;
+
+  AONetworkOnMainThreadException = class;
+  Arr1AONetworkOnMainThreadException = array of AONetworkOnMainThreadException;
+  Arr2AONetworkOnMainThreadException = array of Arr1AONetworkOnMainThreadException;
+  Arr3AONetworkOnMainThreadException = array of Arr2AONetworkOnMainThreadException;
+
+  OAHICRFC2109SpecFactory = class;
+  Arr1OAHICRFC2109SpecFactory = array of OAHICRFC2109SpecFactory;
+  Arr2OAHICRFC2109SpecFactory = array of Arr1OAHICRFC2109SpecFactory;
+  Arr3OAHICRFC2109SpecFactory = array of Arr2OAHICRFC2109SpecFactory;
+
+  AVIInputConnectionWrapper = class;
+  Arr1AVIInputConnectionWrapper = array of AVIInputConnectionWrapper;
+  Arr2AVIInputConnectionWrapper = array of Arr1AVIInputConnectionWrapper;
+  Arr3AVIInputConnectionWrapper = array of Arr2AVIInputConnectionWrapper;
+
+  OAHIIHttpResponseWriter = class;
+  Arr1OAHIIHttpResponseWriter = array of OAHIIHttpResponseWriter;
+  Arr2OAHIIHttpResponseWriter = array of Arr1OAHIIHttpResponseWriter;
+  Arr3OAHIIHttpResponseWriter = array of Arr2OAHIIHttpResponseWriter;
+
+  JSADestroyFailedException = class;
+  Arr1JSADestroyFailedException = array of JSADestroyFailedException;
+  Arr2JSADestroyFailedException = array of Arr1JSADestroyFailedException;
+  Arr3JSADestroyFailedException = array of Arr2JSADestroyFailedException;
+
+  JSSECFieldF2m = class;
+  Arr1JSSECFieldF2m = array of JSSECFieldF2m;
+  Arr2JSSECFieldF2m = array of Arr1JSSECFieldF2m;
+  Arr3JSSECFieldF2m = array of Arr2JSSECFieldF2m;
+
+  JSSQLTimeoutException = class;
+  Arr1JSSQLTimeoutException = array of JSSQLTimeoutException;
+  Arr2JSSQLTimeoutException = array of Arr1JSSQLTimeoutException;
+  Arr3JSSQLTimeoutException = array of Arr2JSSQLTimeoutException;
+
+  ADSSQLiteCursor = class;
+  Arr1ADSSQLiteCursor = array of ADSSQLiteCursor;
+  Arr2ADSSQLiteCursor = array of Arr1ADSSQLiteCursor;
+  Arr3ADSSQLiteCursor = array of Arr2ADSSQLiteCursor;
+
+  JUServiceConfigurationError = class;
+  Arr1JUServiceConfigurationError = array of JUServiceConfigurationError;
+  Arr2JUServiceConfigurationError = array of Arr1JUServiceConfigurationError;
+  Arr3JUServiceConfigurationError = array of Arr2JUServiceConfigurationError;
+
+  OAHPBasicHttpParams = class;
+  Arr1OAHPBasicHttpParams = array of OAHPBasicHttpParams;
+  Arr2OAHPBasicHttpParams = array of Arr1OAHPBasicHttpParams;
+  Arr3OAHPBasicHttpParams = array of Arr2OAHPBasicHttpParams;
+
+  ATPhoneNumberUtils = class;
+  Arr1ATPhoneNumberUtils = array of ATPhoneNumberUtils;
+  Arr2ATPhoneNumberUtils = array of Arr1ATPhoneNumberUtils;
+  Arr3ATPhoneNumberUtils = array of Arr2ATPhoneNumberUtils;
+
+  JNLongBuffer = class;
+  Arr1JNLongBuffer = array of JNLongBuffer;
+  Arr2JNLongBuffer = array of Arr1JNLongBuffer;
+  Arr3JNLongBuffer = array of Arr2JNLongBuffer;
+
+  JXVSchemaFactory = class;
+  Arr1JXVSchemaFactory = array of JXVSchemaFactory;
+  Arr2JXVSchemaFactory = array of Arr1JXVSchemaFactory;
+  Arr3JXVSchemaFactory = array of Arr2JXVSchemaFactory;
+
+  JSUnresolvedPermission = class;
+  Arr1JSUnresolvedPermission = array of JSUnresolvedPermission;
+  Arr2JSUnresolvedPermission = array of Arr1JSUnresolvedPermission;
+  Arr3JSUnresolvedPermission = array of Arr2JSUnresolvedPermission;
+
+  APAlarmClock = class;
+  Arr1APAlarmClock = array of APAlarmClock;
+  Arr2APAlarmClock = array of Arr1APAlarmClock;
+  Arr3APAlarmClock = array of Arr2APAlarmClock;
+
+  AAAuthenticatorException = class;
+  Arr1AAAuthenticatorException = array of AAAuthenticatorException;
+  Arr2AAAuthenticatorException = array of Arr1AAAuthenticatorException;
+  Arr3AAAuthenticatorException = array of Arr2AAAuthenticatorException;
+
+  JIWriteAbortedException = class;
+  Arr1JIWriteAbortedException = array of JIWriteAbortedException;
+  Arr2JIWriteAbortedException = array of Arr1JIWriteAbortedException;
+  Arr3JIWriteAbortedException = array of Arr2JIWriteAbortedException;
+
+  JSCCertificateNotYetValidException = class;
+  Arr1JSCCertificateNotYetValidException = array of JSCCertificateNotYetValidException;
+  Arr2JSCCertificateNotYetValidException = array of Arr1JSCCertificateNotYetValidException;
+  Arr3JSCCertificateNotYetValidException = array of Arr2JSCCertificateNotYetValidException;
+
+  AHSensorManager = class;
+  Arr1AHSensorManager = array of AHSensorManager;
+  Arr2AHSensorManager = array of Arr1AHSensorManager;
+  Arr3AHSensorManager = array of Arr2AHSensorManager;
+
+  OAHMParserCursor = class;
+  Arr1OAHMParserCursor = array of OAHMParserCursor;
+  Arr2OAHMParserCursor = array of Arr1OAHMParserCursor;
+  Arr3OAHMParserCursor = array of Arr2OAHMParserCursor;
+
+  JLStackTraceElement = class;
+  Arr1JLStackTraceElement = array of JLStackTraceElement;
+  Arr2JLStackTraceElement = array of Arr1JLStackTraceElement;
+  Arr3JLStackTraceElement = array of Arr2JLStackTraceElement;
+
+  ANTNfcF = class;
+  Arr1ANTNfcF = array of ANTNfcF;
+  Arr2ANTNfcF = array of Arr1ANTNfcF;
+  Arr3ANTNfcF = array of Arr2ANTNfcF;
+
+  JNCFileChannel = class;
+  Arr1JNCFileChannel = array of JNCFileChannel;
+  Arr2JNCFileChannel = array of Arr1JNCFileChannel;
+  Arr3JNCFileChannel = array of Arr2JNCFileChannel;
+
+  AUEventLog = class;
+  Arr1AUEventLog = array of AUEventLog;
+  Arr2AUEventLog = array of Arr1AUEventLog;
+  Arr3AUEventLog = array of Arr2AUEventLog;
+
+  AGPoint = class;
+  Arr1AGPoint = array of AGPoint;
+  Arr2AGPoint = array of Arr1AGPoint;
+  Arr3AGPoint = array of Arr2AGPoint;
+
+  AASearchableInfo = class;
+  Arr1AASearchableInfo = array of AASearchableInfo;
+  Arr2AASearchableInfo = array of Arr1AASearchableInfo;
+  Arr3AASearchableInfo = array of Arr2AASearchableInfo;
+
+  ATMMockContext = class;
+  Arr1ATMMockContext = array of ATMMockContext;
+  Arr2ATMMockContext = array of Arr1ATMMockContext;
+  Arr3ATMMockContext = array of Arr2ATMMockContext;
+
+  OAHICAbstractCookieSpec = class;
+  Arr1OAHICAbstractCookieSpec = array of OAHICAbstractCookieSpec;
+  Arr2OAHICAbstractCookieSpec = array of Arr1OAHICAbstractCookieSpec;
+  Arr3OAHICAbstractCookieSpec = array of Arr2OAHICAbstractCookieSpec;
+
+  OAHAInvalidCredentialsException = class;
+  Arr1OAHAInvalidCredentialsException = array of OAHAInvalidCredentialsException;
+  Arr2OAHAInvalidCredentialsException = array of Arr1OAHAInvalidCredentialsException;
+  Arr3OAHAInvalidCredentialsException = array of Arr2OAHAInvalidCredentialsException;
+
+  OAHMBasicHeaderIterator = class;
+  Arr1OAHMBasicHeaderIterator = array of OAHMBasicHeaderIterator;
+  Arr2OAHMBasicHeaderIterator = array of Arr1OAHMBasicHeaderIterator;
+  Arr3OAHMBasicHeaderIterator = array of Arr2OAHMBasicHeaderIterator;
+
+  OJJSONException = class;
+  Arr1OJJSONException = array of OJJSONException;
+  Arr2OJJSONException = array of Arr1OJJSONException;
+  Arr3OJJSONException = array of Arr2OJJSONException;
+
+  ANTNfcA = class;
+  Arr1ANTNfcA = array of ANTNfcA;
+  Arr2ANTNfcA = array of Arr1ANTNfcA;
+  Arr3ANTNfcA = array of Arr2ANTNfcA;
+
+  ANTNfcB = class;
+  Arr1ANTNfcB = array of ANTNfcB;
+  Arr2ANTNfcB = array of Arr1ANTNfcB;
+  Arr3ANTNfcB = array of Arr2ANTNfcB;
+
+  JLNoSuchMethodException = class;
+  Arr1JLNoSuchMethodException = array of JLNoSuchMethodException;
+  Arr2JLNoSuchMethodException = array of Arr1JLNoSuchMethodException;
+  Arr3JLNoSuchMethodException = array of Arr2JLNoSuchMethodException;
+
+  OAHICAbstractPooledConnAdapter = class;
+  Arr1OAHICAbstractPooledConnAdapter = array of OAHICAbstractPooledConnAdapter;
+  Arr2OAHICAbstractPooledConnAdapter = array of Arr1OAHICAbstractPooledConnAdapter;
+  Arr3OAHICAbstractPooledConnAdapter = array of Arr2OAHICAbstractPooledConnAdapter;
+
+  JSCCertPath = class;
+  Arr1JSCCertPath = array of JSCCertPath;
+  Arr2JSCCertPath = array of Arr1JSCCertPath;
+  Arr3JSCCertPath = array of Arr2JSCCertPath;
+
+  JISyncFailedException = class;
+  Arr1JISyncFailedException = array of JISyncFailedException;
+  Arr2JISyncFailedException = array of Arr1JISyncFailedException;
+  Arr3JISyncFailedException = array of Arr2JISyncFailedException;
+
+  ALGpsSatellite = class;
+  Arr1ALGpsSatellite = array of ALGpsSatellite;
+  Arr2ALGpsSatellite = array of Arr1ALGpsSatellite;
+  Arr3ALGpsSatellite = array of Arr2ALGpsSatellite;
+
+  AUAndroidException = class;
+  Arr1AUAndroidException = array of AUAndroidException;
+  Arr2AUAndroidException = array of Arr1AUAndroidException;
+  Arr3AUAndroidException = array of Arr2AUAndroidException;
+
+  JIObjectInputStream = class;
+  Arr1JIObjectInputStream = array of JIObjectInputStream;
+  Arr2JIObjectInputStream = array of Arr1JIObjectInputStream;
+  Arr3JIObjectInputStream = array of Arr2JIObjectInputStream;
+
+  JTFormat = class;
+  Arr1JTFormat = array of JTFormat;
+  Arr2JTFormat = array of Arr1JTFormat;
+  Arr3JTFormat = array of Arr2JTFormat;
+
+  JSDigestException = class;
+  Arr1JSDigestException = array of JSDigestException;
+  Arr2JSDigestException = array of Arr1JSDigestException;
+  Arr3JSDigestException = array of Arr2JSDigestException;
+
+  JNSocket = class;
+  Arr1JNSocket = array of JNSocket;
+  Arr2JNSocket = array of Arr1JNSocket;
+  Arr3JNSocket = array of Arr2JNSocket;
+
+  OAHConnectionClosedException = class;
+  Arr1OAHConnectionClosedException = array of OAHConnectionClosedException;
+  Arr2OAHConnectionClosedException = array of Arr1OAHConnectionClosedException;
+  Arr3OAHConnectionClosedException = array of Arr2OAHConnectionClosedException;
+
+  AGDSShape = class;
+  Arr1AGDSShape = array of AGDSShape;
+  Arr2AGDSShape = array of Arr1AGDSShape;
+  Arr3AGDSShape = array of Arr2AGDSShape;
+
+  JRBaseTestRunner = class;
+  Arr1JRBaseTestRunner = array of JRBaseTestRunner;
+  Arr2JRBaseTestRunner = array of Arr1JRBaseTestRunner;
+  Arr3JRBaseTestRunner = array of Arr2JRBaseTestRunner;
+
+  JCSecretKeyFactory = class;
+  Arr1JCSecretKeyFactory = array of JCSecretKeyFactory;
+  Arr2JCSecretKeyFactory = array of Arr1JCSecretKeyFactory;
+  Arr3JCSecretKeyFactory = array of Arr2JCSecretKeyFactory;
+
+  AABBackupAgent = class;
+  Arr1AABBackupAgent = array of AABBackupAgent;
+  Arr2AABBackupAgent = array of Arr1AABBackupAgent;
+  Arr3AABBackupAgent = array of Arr2AABBackupAgent;
+
+  JSRowIdLifetime = class;
+  Arr1JSRowIdLifetime = array of JSRowIdLifetime;
+  Arr2JSRowIdLifetime = array of Arr1JSRowIdLifetime;
+  Arr3JSRowIdLifetime = array of Arr2JSRowIdLifetime;
+
+  AWMediaController = class;
+  Arr1AWMediaController = array of AWMediaController;
+  Arr2AWMediaController = array of Arr1AWMediaController;
+  Arr3AWMediaController = array of Arr2AWMediaController;
+
+  JSSRSAPrivateKeySpec = class;
+  Arr1JSSRSAPrivateKeySpec = array of JSSRSAPrivateKeySpec;
+  Arr2JSSRSAPrivateKeySpec = array of Arr1JSSRSAPrivateKeySpec;
+  Arr3JSSRSAPrivateKeySpec = array of Arr2JSSRSAPrivateKeySpec;
+
+  AALocalActivityManager = class;
+  Arr1AALocalActivityManager = array of AALocalActivityManager;
+  Arr2AALocalActivityManager = array of Arr1AALocalActivityManager;
+  Arr3AALocalActivityManager = array of Arr2AALocalActivityManager;
+
+  ATMoreAsserts = class;
+  Arr1ATMoreAsserts = array of ATMoreAsserts;
+  Arr2ATMoreAsserts = array of Arr1ATMoreAsserts;
+  Arr3ATMoreAsserts = array of Arr2ATMoreAsserts;
+
+  APPreferenceCategory = class;
+  Arr1APPreferenceCategory = array of APPreferenceCategory;
+  Arr2APPreferenceCategory = array of Arr1APPreferenceCategory;
+  Arr3APPreferenceCategory = array of Arr2APPreferenceCategory;
+
+  JUProperties = class;
+  Arr1JUProperties = array of JUProperties;
+  Arr2JUProperties = array of Arr1JUProperties;
+  Arr3JUProperties = array of Arr2JUProperties;
+
+  JILineNumberInputStream = class;
+  Arr1JILineNumberInputStream = array of JILineNumberInputStream;
+  Arr2JILineNumberInputStream = array of Arr1JILineNumberInputStream;
+  Arr3JILineNumberInputStream = array of Arr2JILineNumberInputStream;
+
+  JUResourceBundle = class;
+  Arr1JUResourceBundle = array of JUResourceBundle;
+  Arr2JUResourceBundle = array of Arr1JUResourceBundle;
+  Arr3JUResourceBundle = array of Arr2JUResourceBundle;
+
+  AMRingtone = class;
+  Arr1AMRingtone = array of AMRingtone;
+  Arr2AMRingtone = array of Arr1AMRingtone;
+  Arr3AMRingtone = array of Arr2AMRingtone;
+
+  JUCBrokenBarrierException = class;
+  Arr1JUCBrokenBarrierException = array of JUCBrokenBarrierException;
+  Arr2JUCBrokenBarrierException = array of Arr1JUCBrokenBarrierException;
+  Arr3JUCBrokenBarrierException = array of Arr2JUCBrokenBarrierException;
+
+  JUMissingFormatWidthException = class;
+  Arr1JUMissingFormatWidthException = array of JUMissingFormatWidthException;
+  Arr2JUMissingFormatWidthException = array of Arr1JUMissingFormatWidthException;
+  Arr3JUMissingFormatWidthException = array of Arr2JUMissingFormatWidthException;
+
+  AWSpinner = class;
+  Arr1AWSpinner = array of AWSpinner;
+  Arr2AWSpinner = array of Arr1AWSpinner;
+  Arr3AWSpinner = array of Arr2AWSpinner;
+
+  JUTreeSet = class;
+  Arr1JUTreeSet = array of JUTreeSet;
+  Arr2JUTreeSet = array of Arr1JUTreeSet;
+  Arr3JUTreeSet = array of Arr2JUTreeSet;
+
+  JULErrorManager = class;
+  Arr1JULErrorManager = array of JULErrorManager;
+  Arr2JULErrorManager = array of Arr1JULErrorManager;
+  Arr3JULErrorManager = array of Arr2JULErrorManager;
+
+  OAHICRFC2965DiscardAttributeHandler = class;
+  Arr1OAHICRFC2965DiscardAttributeHandler = array of OAHICRFC2965DiscardAttributeHandler;
+  Arr2OAHICRFC2965DiscardAttributeHandler = array of Arr1OAHICRFC2965DiscardAttributeHandler;
+  Arr3OAHICRFC2965DiscardAttributeHandler = array of Arr2OAHICRFC2965DiscardAttributeHandler;
+
+  JNCNotYetBoundException = class;
+  Arr1JNCNotYetBoundException = array of JNCNotYetBoundException;
+  Arr2JNCNotYetBoundException = array of Arr1JNCNotYetBoundException;
+  Arr3JNCNotYetBoundException = array of Arr2JNCNotYetBoundException;
+
+  AHSensorEvent = class;
+  Arr1AHSensorEvent = array of AHSensorEvent;
+  Arr2AHSensorEvent = array of Arr1AHSensorEvent;
+  Arr3AHSensorEvent = array of Arr2AHSensorEvent;
+
+  OAHCMHttpHead = class;
+  Arr1OAHCMHttpHead = array of OAHCMHttpHead;
+  Arr2OAHCMHttpHead = array of Arr1OAHCMHttpHead;
+  Arr3OAHCMHttpHead = array of Arr2OAHCMHttpHead;
+
+  OXSELocator2Impl = class;
+  Arr1OXSELocator2Impl = array of OXSELocator2Impl;
+  Arr2OXSELocator2Impl = array of Arr1OXSELocator2Impl;
+  Arr3OXSELocator2Impl = array of Arr2OXSELocator2Impl;
+
+  JxSCCertificateException = class;
+  Arr1JxSCCertificateException = array of JxSCCertificateException;
+  Arr2JxSCCertificateException = array of Arr1JxSCCertificateException;
+  Arr3JxSCCertificateException = array of Arr2JxSCCertificateException;
+
+  ADSSQLiteMisuseException = class;
+  Arr1ADSSQLiteMisuseException = array of ADSSQLiteMisuseException;
+  Arr2ADSSQLiteMisuseException = array of Arr1ADSSQLiteMisuseException;
+  Arr3ADSSQLiteMisuseException = array of Arr2ADSSQLiteMisuseException;
+
+  ADSSQLiteQueryBuilder = class;
+  Arr1ADSSQLiteQueryBuilder = array of ADSSQLiteQueryBuilder;
+  Arr2ADSSQLiteQueryBuilder = array of Arr1ADSSQLiteQueryBuilder;
+  Arr3ADSSQLiteQueryBuilder = array of Arr2ADSSQLiteQueryBuilder;
+
+  AWZoomControls = class;
+  Arr1AWZoomControls = array of AWZoomControls;
+  Arr2AWZoomControls = array of Arr1AWZoomControls;
+  Arr3AWZoomControls = array of Arr2AWZoomControls;
+
+  ASRecognizerIntent = class;
+  Arr1ASRecognizerIntent = array of ASRecognizerIntent;
+  Arr2ASRecognizerIntent = array of Arr1ASRecognizerIntent;
+  Arr3ASRecognizerIntent = array of Arr2ASRecognizerIntent;
+
+  AWPopupMenu = class;
+  Arr1AWPopupMenu = array of AWPopupMenu;
+  Arr2AWPopupMenu = array of Arr1AWPopupMenu;
+  Arr3AWPopupMenu = array of Arr2AWPopupMenu;
+
+  OAHICTBasicPoolEntry = class;
+  Arr1OAHICTBasicPoolEntry = array of OAHICTBasicPoolEntry;
+  Arr2OAHICTBasicPoolEntry = array of Arr1OAHICTBasicPoolEntry;
+  Arr3OAHICTBasicPoolEntry = array of Arr2OAHICTBasicPoolEntry;
+
+  AABFullBackupDataOutput = class;
+  Arr1AABFullBackupDataOutput = array of AABFullBackupDataOutput;
+  Arr2AABFullBackupDataOutput = array of Arr1AABFullBackupDataOutput;
+  Arr3AABFullBackupDataOutput = array of Arr2AABFullBackupDataOutput;
+
+  ACPPackageInfo = class;
+  Arr1ACPPackageInfo = array of ACPPackageInfo;
+  Arr2ACPPackageInfo = array of Arr1ACPPackageInfo;
+  Arr3ACPPackageInfo = array of Arr2ACPPackageInfo;
+
+  AOBinder = class;
+  Arr1AOBinder = array of AOBinder;
+  Arr2AOBinder = array of Arr1AOBinder;
+  Arr3AOBinder = array of Arr2AOBinder;
+
+  JCKeyGenerator = class;
+  Arr1JCKeyGenerator = array of JCKeyGenerator;
+  Arr2JCKeyGenerator = array of Arr1JCKeyGenerator;
+  Arr3JCKeyGenerator = array of Arr2JCKeyGenerator;
+
+  AOSystemClock = class;
+  Arr1AOSystemClock = array of AOSystemClock;
+  Arr2AOSystemClock = array of Arr1AOSystemClock;
+  Arr3AOSystemClock = array of Arr2AOSystemClock;
+
+  JUCTimeoutException = class;
+  Arr1JUCTimeoutException = array of JUCTimeoutException;
+  Arr2JUCTimeoutException = array of Arr1JUCTimeoutException;
+  Arr3JUCTimeoutException = array of Arr2JUCTimeoutException;
+
+  JXPSAXParser = class;
+  Arr1JXPSAXParser = array of JXPSAXParser;
+  Arr2JXPSAXParser = array of Arr1JXPSAXParser;
+  Arr3JXPSAXParser = array of Arr2JXPSAXParser;
+
+  JNURLClassLoader = class;
+  Arr1JNURLClassLoader = array of JNURLClassLoader;
+  Arr2JNURLClassLoader = array of Arr1JNURLClassLoader;
+  Arr3JNURLClassLoader = array of Arr2JNURLClassLoader;
+
+  ABBluetoothHeadset = class;
+  Arr1ABBluetoothHeadset = array of ABBluetoothHeadset;
+  Arr2ABBluetoothHeadset = array of Arr1ABBluetoothHeadset;
+  Arr3ABBluetoothHeadset = array of Arr2ABBluetoothHeadset;
+
+  JUZInflaterOutputStream = class;
+  Arr1JUZInflaterOutputStream = array of JUZInflaterOutputStream;
+  Arr2JUZInflaterOutputStream = array of Arr1JUZInflaterOutputStream;
+  Arr3JUZInflaterOutputStream = array of Arr2JUZInflaterOutputStream;
+
+  AIAbstractInputMethodService = class;
+  Arr1AIAbstractInputMethodService = array of AIAbstractInputMethodService;
+  Arr2AIAbstractInputMethodService = array of Arr1AIAbstractInputMethodService;
+  Arr3AIAbstractInputMethodService = array of Arr2AIAbstractInputMethodService;
+
+  JCSDHPublicKeySpec = class;
+  Arr1JCSDHPublicKeySpec = array of JCSDHPublicKeySpec;
+  Arr2JCSDHPublicKeySpec = array of Arr1JCSDHPublicKeySpec;
+  Arr3JCSDHPublicKeySpec = array of Arr2JCSDHPublicKeySpec;
+
+  ABBluetoothSocket = class;
+  Arr1ABBluetoothSocket = array of ABBluetoothSocket;
+  Arr2ABBluetoothSocket = array of Arr1ABBluetoothSocket;
+  Arr3ABBluetoothSocket = array of Arr2ABBluetoothSocket;
+
+  JUZAdler32 = class;
+  Arr1JUZAdler32 = array of JUZAdler32;
+  Arr2JUZAdler32 = array of Arr1JUZAdler32;
+  Arr3JUZAdler32 = array of Arr2JUZAdler32;
+
+  APTwoStatePreference = class;
+  Arr1APTwoStatePreference = array of APTwoStatePreference;
+  Arr2APTwoStatePreference = array of Arr1APTwoStatePreference;
+  Arr3APTwoStatePreference = array of Arr2APTwoStatePreference;
+
+  AWStackView = class;
+  Arr1AWStackView = array of AWStackView;
+  Arr2AWStackView = array of Arr1AWStackView;
+  Arr3AWStackView = array of Arr2AWStackView;
+
+  JIPipedWriter = class;
+  Arr1JIPipedWriter = array of JIPipedWriter;
+  Arr2JIPipedWriter = array of Arr1JIPipedWriter;
+  Arr3JIPipedWriter = array of Arr2JIPipedWriter;
+
+  AVIExtractedTextRequest = class;
+  Arr1AVIExtractedTextRequest = array of AVIExtractedTextRequest;
+  Arr2AVIExtractedTextRequest = array of Arr1AVIExtractedTextRequest;
+  Arr3AVIExtractedTextRequest = array of Arr2AVIExtractedTextRequest;
+
+  OAHPRequestDate = class;
+  Arr1OAHPRequestDate = array of OAHPRequestDate;
+  Arr2OAHPRequestDate = array of Arr1OAHPRequestDate;
+  Arr3OAHPRequestDate = array of Arr2OAHPRequestDate;
+
+  JSSQLFeatureNotSupportedException = class;
+  Arr1JSSQLFeatureNotSupportedException = array of JSSQLFeatureNotSupportedException;
+  Arr2JSSQLFeatureNotSupportedException = array of Arr1JSSQLFeatureNotSupportedException;
+  Arr3JSSQLFeatureNotSupportedException = array of Arr2JSSQLFeatureNotSupportedException;
+
+  JNCSelector = class;
+  Arr1JNCSelector = array of JNCSelector;
+  Arr2JNCSelector = array of Arr1JNCSelector;
+  Arr3JNCSelector = array of Arr2JNCSelector;
+
+  OAHICDefaultTargetAuthenticationHandler = class;
+  Arr1OAHICDefaultTargetAuthenticationHandler = array of OAHICDefaultTargetAuthenticationHandler;
+  Arr2OAHICDefaultTargetAuthenticationHandler = array of Arr1OAHICDefaultTargetAuthenticationHandler;
+  Arr3OAHICDefaultTargetAuthenticationHandler = array of Arr2OAHICDefaultTargetAuthenticationHandler;
+
+  JNCDatagramChannel = class;
+  Arr1JNCDatagramChannel = array of JNCDatagramChannel;
+  Arr2JNCDatagramChannel = array of Arr1JNCDatagramChannel;
+  Arr3JNCDatagramChannel = array of Arr2JNCDatagramChannel;
+
+  AVViewConfiguration = class;
+  Arr1AVViewConfiguration = array of AVViewConfiguration;
+  Arr2AVViewConfiguration = array of Arr1AVViewConfiguration;
+  Arr3AVViewConfiguration = array of Arr2AVViewConfiguration;
+
+  JXVValidator = class;
+  Arr1JXVValidator = array of JXVValidator;
+  Arr2JXVValidator = array of Arr1JXVValidator;
+  Arr3JXVValidator = array of Arr2JXVValidator;
+
+  OAHCBasicManagedEntity = class;
+  Arr1OAHCBasicManagedEntity = array of OAHCBasicManagedEntity;
+  Arr2OAHCBasicManagedEntity = array of Arr1OAHCBasicManagedEntity;
+  Arr3OAHCBasicManagedEntity = array of Arr2OAHCBasicManagedEntity;
+
+  OAHANTUserPrincipal = class;
+  Arr1OAHANTUserPrincipal = array of OAHANTUserPrincipal;
+  Arr2OAHANTUserPrincipal = array of Arr1OAHANTUserPrincipal;
+  Arr3OAHANTUserPrincipal = array of Arr2OAHANTUserPrincipal;
+
+  ATActivityTestCase = class;
+  Arr1ATActivityTestCase = array of ATActivityTestCase;
+  Arr2ATActivityTestCase = array of Arr1ATActivityTestCase;
+  Arr3ATActivityTestCase = array of Arr2ATActivityTestCase;
+
+  ADSSQLiteBlobTooBigException = class;
+  Arr1ADSSQLiteBlobTooBigException = array of ADSSQLiteBlobTooBigException;
+  Arr2ADSSQLiteBlobTooBigException = array of Arr1ADSSQLiteBlobTooBigException;
+  Arr3ADSSQLiteBlobTooBigException = array of Arr2ADSSQLiteBlobTooBigException;
+
+  ATMMockCursor = class;
+  Arr1ATMMockCursor = array of ATMMockCursor;
+  Arr2ATMMockCursor = array of Arr1ATMMockCursor;
+  Arr3ATMMockCursor = array of Arr2ATMMockCursor;
+
+  ATMMockDialogInterface = class;
+  Arr1ATMMockDialogInterface = array of ATMMockDialogInterface;
+  Arr2ATMMockDialogInterface = array of Arr1ATMMockDialogInterface;
+  Arr3ATMMockDialogInterface = array of Arr2ATMMockDialogInterface;
+
+  JNCIllegalSelectorException = class;
+  Arr1JNCIllegalSelectorException = array of JNCIllegalSelectorException;
+  Arr2JNCIllegalSelectorException = array of Arr1JNCIllegalSelectorException;
+  Arr3JNCIllegalSelectorException = array of Arr2JNCIllegalSelectorException;
+
+  AVIInputBinding = class;
+  Arr1AVIInputBinding = array of AVIInputBinding;
+  Arr2AVIInputBinding = array of Arr1AVIInputBinding;
+  Arr3AVIInputBinding = array of Arr2AVIInputBinding;
+
+  OAHEAbstractHttpEntity = class;
+  Arr1OAHEAbstractHttpEntity = array of OAHEAbstractHttpEntity;
+  Arr2OAHEAbstractHttpEntity = array of Arr1OAHEAbstractHttpEntity;
+  Arr3OAHEAbstractHttpEntity = array of Arr2OAHEAbstractHttpEntity;
+
+  ARRSRuntimeException = class;
+  Arr1ARRSRuntimeException = array of ARRSRuntimeException;
+  Arr2ARRSRuntimeException = array of Arr1ARRSRuntimeException;
+  Arr3ARRSRuntimeException = array of Arr2ARRSRuntimeException;
+
+  JXTSStreamResult = class;
+  Arr1JXTSStreamResult = array of JXTSStreamResult;
+  Arr2JXTSStreamResult = array of Arr1JXTSStreamResult;
+  Arr3JXTSStreamResult = array of Arr2JXTSStreamResult;
+
+  JNCSAbstractSelectableChannel = class;
+  Arr1JNCSAbstractSelectableChannel = array of JNCSAbstractSelectableChannel;
+  Arr2JNCSAbstractSelectableChannel = array of Arr1JNCSAbstractSelectableChannel;
+  Arr3JNCSAbstractSelectableChannel = array of Arr2JNCSAbstractSelectableChannel;
+
+  OAHICLoggingSessionOutputBuffer = class;
+  Arr1OAHICLoggingSessionOutputBuffer = array of OAHICLoggingSessionOutputBuffer;
+  Arr2OAHICLoggingSessionOutputBuffer = array of Arr1OAHICLoggingSessionOutputBuffer;
+  Arr3OAHICLoggingSessionOutputBuffer = array of Arr2OAHICLoggingSessionOutputBuffer;
+
+  ACClipDescription = class;
+  Arr1ACClipDescription = array of ACClipDescription;
+  Arr2ACClipDescription = array of Arr1ACClipDescription;
+  Arr3ACClipDescription = array of Arr2ACClipDescription;
+
+  ACRObbScanner = class;
+  Arr1ACRObbScanner = array of ACRObbScanner;
+  Arr2ACRObbScanner = array of Arr1ACRObbScanner;
+  Arr3ACRObbScanner = array of Arr2ACRObbScanner;
+
+  APVoicemailContract = class;
+  Arr1APVoicemailContract = array of APVoicemailContract;
+  Arr2APVoicemailContract = array of Arr1APVoicemailContract;
+  Arr3APVoicemailContract = array of Arr2APVoicemailContract;
+
+  JIConsole = class;
+  Arr1JIConsole = array of JIConsole;
+  Arr2JIConsole = array of Arr1JIConsole;
+  Arr3JIConsole = array of Arr2JIConsole;
+
+  AWHorizontalScrollView = class;
+  Arr1AWHorizontalScrollView = array of AWHorizontalScrollView;
+  Arr2AWHorizontalScrollView = array of Arr1AWHorizontalScrollView;
+  Arr3AWHorizontalScrollView = array of Arr2AWHorizontalScrollView;
+
+  ASRecognizerResultsIntent = class;
+  Arr1ASRecognizerResultsIntent = array of ASRecognizerResultsIntent;
+  Arr2ASRecognizerResultsIntent = array of Arr1ASRecognizerResultsIntent;
+  Arr3ASRecognizerResultsIntent = array of Arr2ASRecognizerResultsIntent;
+
+  ADDataSetObservable = class;
+  Arr1ADDataSetObservable = array of ADDataSetObservable;
+  Arr2ADDataSetObservable = array of Arr1ADDataSetObservable;
+  Arr3ADDataSetObservable = array of Arr2ADDataSetObservable;
+
+  JSSQLException = class;
+  Arr1JSSQLException = array of JSSQLException;
+  Arr2JSSQLException = array of Arr1JSSQLException;
+  Arr3JSSQLException = array of Arr2JSSQLException;
+
+  JXTTransformerFactoryConfigurationError = class;
+  Arr1JXTTransformerFactoryConfigurationError = array of JXTTransformerFactoryConfigurationError;
+  Arr2JXTTransformerFactoryConfigurationError = array of Arr1JXTTransformerFactoryConfigurationError;
+  Arr3JXTTransformerFactoryConfigurationError = array of Arr2JXTTransformerFactoryConfigurationError;
+
+  OAHICRFC2109DomainHandler = class;
+  Arr1OAHICRFC2109DomainHandler = array of OAHICRFC2109DomainHandler;
+  Arr2OAHICRFC2109DomainHandler = array of Arr1OAHICRFC2109DomainHandler;
+  Arr3OAHICRFC2109DomainHandler = array of Arr2OAHICRFC2109DomainHandler;
+
+  JNCNonReadableChannelException = class;
+  Arr1JNCNonReadableChannelException = array of JNCNonReadableChannelException;
+  Arr2JNCNonReadableChannelException = array of Arr1JNCNonReadableChannelException;
+  Arr3JNCNonReadableChannelException = array of Arr2JNCNonReadableChannelException;
+
+  AGGestureLibrary = class;
+  Arr1AGGestureLibrary = array of AGGestureLibrary;
+  Arr2AGGestureLibrary = array of Arr1AGGestureLibrary;
+  Arr3AGGestureLibrary = array of Arr2AGGestureLibrary;
+
+  JSSPKCS8EncodedKeySpec = class;
+  Arr1JSSPKCS8EncodedKeySpec = array of JSSPKCS8EncodedKeySpec;
+  Arr2JSSPKCS8EncodedKeySpec = array of Arr1JSSPKCS8EncodedKeySpec;
+  Arr3JSSPKCS8EncodedKeySpec = array of Arr2JSSPKCS8EncodedKeySpec;
+
+  JSCX509CRL = class;
+  Arr1JSCX509CRL = array of JSCX509CRL;
+  Arr2JSCX509CRL = array of Arr1JSCX509CRL;
+  Arr3JSCX509CRL = array of Arr2JSCX509CRL;
+
+  AVICompletionInfo = class;
+  Arr1AVICompletionInfo = array of AVICompletionInfo;
+  Arr2AVICompletionInfo = array of Arr1AVICompletionInfo;
+  Arr3AVICompletionInfo = array of Arr2AVICompletionInfo;
+
+  JUDuplicateFormatFlagsException = class;
+  Arr1JUDuplicateFormatFlagsException = array of JUDuplicateFormatFlagsException;
+  Arr2JUDuplicateFormatFlagsException = array of Arr1JUDuplicateFormatFlagsException;
+  Arr3JUDuplicateFormatFlagsException = array of Arr2JUDuplicateFormatFlagsException;
+
+  JIObjectStreamField = class;
+  Arr1JIObjectStreamField = array of JIObjectStreamField;
+  Arr2JIObjectStreamField = array of Arr1JIObjectStreamField;
+  Arr3JIObjectStreamField = array of Arr2JIObjectStreamField;
+
+  JxSCCertificateEncodingException = class;
+  Arr1JxSCCertificateEncodingException = array of JxSCCertificateEncodingException;
+  Arr2JxSCCertificateEncodingException = array of Arr1JxSCCertificateEncodingException;
+  Arr3JxSCCertificateEncodingException = array of Arr2JxSCCertificateEncodingException;
+
+  OAHEEntityTemplate = class;
+  Arr1OAHEEntityTemplate = array of OAHEEntityTemplate;
+  Arr2OAHEEntityTemplate = array of Arr1OAHEEntityTemplate;
+  Arr3OAHEEntityTemplate = array of Arr2OAHEEntityTemplate;
+
+  APCalendarContract = class;
+  Arr1APCalendarContract = array of APCalendarContract;
+  Arr2APCalendarContract = array of Arr1APCalendarContract;
+  Arr3APCalendarContract = array of Arr2APCalendarContract;
+
+  JXXXPathConstants = class;
+  Arr1JXXXPathConstants = array of JXXXPathConstants;
+  Arr2JXXXPathConstants = array of Arr1JXXXPathConstants;
+  Arr3JXXXPathConstants = array of Arr2JXXXPathConstants;
+
+  ATGGsmCellLocation = class;
+  Arr1ATGGsmCellLocation = array of ATGGsmCellLocation;
+  Arr2ATGGsmCellLocation = array of Arr1ATGGsmCellLocation;
+  Arr3ATGGsmCellLocation = array of Arr2ATGGsmCellLocation;
+
+  ADDrmManagerClient = class;
+  Arr1ADDrmManagerClient = array of ADDrmManagerClient;
+  Arr2ADDrmManagerClient = array of Arr1ADDrmManagerClient;
+  Arr3ADDrmManagerClient = array of Arr2ADDrmManagerClient;
+
+  AOGLUtils = class;
+  Arr1AOGLUtils = array of AOGLUtils;
+  Arr2AOGLUtils = array of Arr1AOGLUtils;
+  Arr3AOGLUtils = array of Arr2AOGLUtils;
+
+  AWCookieSyncManager = class;
+  Arr1AWCookieSyncManager = array of AWCookieSyncManager;
+  Arr2AWCookieSyncManager = array of Arr1AWCookieSyncManager;
+  Arr3AWCookieSyncManager = array of Arr2AWCookieSyncManager;
+
+  ANCredentials = class;
+  Arr1ANCredentials = array of ANCredentials;
+  Arr2ANCredentials = array of Arr1ANCredentials;
+  Arr3ANCredentials = array of Arr2ANCredentials;
+
+  ANLocalSocketAddress = class;
+  Arr1ANLocalSocketAddress = array of ANLocalSocketAddress;
+  Arr2ANLocalSocketAddress = array of Arr1ANLocalSocketAddress;
+  Arr3ANLocalSocketAddress = array of Arr2ANLocalSocketAddress;
+
+  JSRowSetEvent = class;
+  Arr1JSRowSetEvent = array of JSRowSetEvent;
+  Arr2JSRowSetEvent = array of Arr1JSRowSetEvent;
+  Arr3JSRowSetEvent = array of Arr2JSRowSetEvent;
+
+  AGMovie = class;
+  Arr1AGMovie = array of AGMovie;
+  Arr2AGMovie = array of Arr1AGMovie;
+  Arr3AGMovie = array of Arr2AGMovie;
+
+  OAHMBasicHeaderElement = class;
+  Arr1OAHMBasicHeaderElement = array of OAHMBasicHeaderElement;
+  Arr2OAHMBasicHeaderElement = array of Arr1OAHMBasicHeaderElement;
+  Arr3OAHMBasicHeaderElement = array of Arr2OAHMBasicHeaderElement;
+
+  AMAudioRecord = class;
+  Arr1AMAudioRecord = array of AMAudioRecord;
+  Arr2AMAudioRecord = array of Arr1AMAudioRecord;
+  Arr3AMAudioRecord = array of Arr2AMAudioRecord;
+
+  AAApplication = class;
+  Arr1AAApplication = array of AAApplication;
+  Arr2AAApplication = array of Arr1AAApplication;
+  Arr3AAApplication = array of Arr2AAApplication;
+
+  OAHCPCookiePolicy = class;
+  Arr1OAHCPCookiePolicy = array of OAHCPCookiePolicy;
+  Arr2OAHCPCookiePolicy = array of Arr1OAHCPCookiePolicy;
+  Arr3OAHCPCookiePolicy = array of Arr2OAHCPCookiePolicy;
+
+  JTParseException = class;
+  Arr1JTParseException = array of JTParseException;
+  Arr2JTParseException = array of Arr1JTParseException;
+  Arr3JTParseException = array of Arr2JTParseException;
+
+  ATSIconMarginSpan = class;
+  Arr1ATSIconMarginSpan = array of ATSIconMarginSpan;
+  Arr2ATSIconMarginSpan = array of Arr1ATSIconMarginSpan;
+  Arr3ATSIconMarginSpan = array of Arr2ATSIconMarginSpan;
+
+  OAHESerializableEntity = class;
+  Arr1OAHESerializableEntity = array of OAHESerializableEntity;
+  Arr2OAHESerializableEntity = array of Arr1OAHESerializableEntity;
+  Arr3OAHESerializableEntity = array of Arr2OAHESerializableEntity;
+
+  JSBasicPermission = class;
+  Arr1JSBasicPermission = array of JSBasicPermission;
+  Arr2JSBasicPermission = array of Arr1JSBasicPermission;
+  Arr3JSBasicPermission = array of Arr2JSBasicPermission;
+
+  ABBluetoothAssignedNumbers = class;
+  Arr1ABBluetoothAssignedNumbers = array of ABBluetoothAssignedNumbers;
+  Arr2ABBluetoothAssignedNumbers = array of Arr1ABBluetoothAssignedNumbers;
+  Arr3ABBluetoothAssignedNumbers = array of Arr2ABBluetoothAssignedNumbers;
+
+  OAHIEEntityDeserializer = class;
+  Arr1OAHIEEntityDeserializer = array of OAHIEEntityDeserializer;
+  Arr2OAHIEEntityDeserializer = array of Arr1OAHIEEntityDeserializer;
+  Arr3OAHIEEntityDeserializer = array of Arr2OAHIEEntityDeserializer;
+
+  AUTimingLogger = class;
+  Arr1AUTimingLogger = array of AUTimingLogger;
+  Arr2AUTimingLogger = array of Arr1AUTimingLogger;
+  Arr3AUTimingLogger = array of Arr2AUTimingLogger;
+
+  JSCCertificateExpiredException = class;
+  Arr1JSCCertificateExpiredException = array of JSCCertificateExpiredException;
+  Arr2JSCCertificateExpiredException = array of Arr1JSCCertificateExpiredException;
+  Arr3JSCCertificateExpiredException = array of Arr2JSCCertificateExpiredException;
+
+  ATServiceState = class;
+  Arr1ATServiceState = array of ATServiceState;
+  Arr2ATServiceState = array of Arr1ATServiceState;
+  Arr3ATServiceState = array of Arr2ATServiceState;
+
+  JNByteOrder = class;
+  Arr1JNByteOrder = array of JNByteOrder;
+  Arr2JNByteOrder = array of Arr1JNByteOrder;
+  Arr3JNByteOrder = array of Arr2JNByteOrder;
+
+  ATFFormatter = class;
+  Arr1ATFFormatter = array of ATFFormatter;
+  Arr2ATFFormatter = array of Arr1ATFFormatter;
+  Arr3ATFFormatter = array of Arr2ATFFormatter;
+
+  ACSyncStats = class;
+  Arr1ACSyncStats = array of ACSyncStats;
+  Arr2ACSyncStats = array of Arr1ACSyncStats;
+  Arr3ACSyncStats = array of Arr2ACSyncStats;
+
+  ATProviderTestCase2 = class;
+  Arr1ATProviderTestCase2 = array of ATProviderTestCase2;
+  Arr2ATProviderTestCase2 = array of Arr1ATProviderTestCase2;
+  Arr3ATProviderTestCase2 = array of Arr2ATProviderTestCase2;
+
+  JSCLDAPCertStoreParameters = class;
+  Arr1JSCLDAPCertStoreParameters = array of JSCLDAPCertStoreParameters;
+  Arr2JSCLDAPCertStoreParameters = array of Arr1JSCLDAPCertStoreParameters;
+  Arr3JSCLDAPCertStoreParameters = array of Arr2JSCLDAPCertStoreParameters;
+
+  ASTTextToSpeech = class;
+  Arr1ASTTextToSpeech = array of ASTTextToSpeech;
+  Arr2ASTTextToSpeech = array of Arr1ASTTextToSpeech;
+  Arr3ASTTextToSpeech = array of Arr2ASTTextToSpeech;
+
+  ATFDateFormat = class;
+  Arr1ATFDateFormat = array of ATFDateFormat;
+  Arr2ATFDateFormat = array of Arr1ATFDateFormat;
+  Arr3ATFDateFormat = array of Arr2ATFDateFormat;
+
+  JUJJarException = class;
+  Arr1JUJJarException = array of JUJJarException;
+  Arr2JUJJarException = array of Arr1JUJJarException;
+  Arr3JUJJarException = array of Arr2JUJJarException;
+
+  OAHICRFC2965CommentUrlAttributeHandler = class;
+  Arr1OAHICRFC2965CommentUrlAttributeHandler = array of OAHICRFC2965CommentUrlAttributeHandler;
+  Arr2OAHICRFC2965CommentUrlAttributeHandler = array of Arr1OAHICRFC2965CommentUrlAttributeHandler;
+  Arr3OAHICRFC2965CommentUrlAttributeHandler = array of Arr2OAHICRFC2965CommentUrlAttributeHandler;
+
+  OAHICTWaitingThread = class;
+  Arr1OAHICTWaitingThread = array of OAHICTWaitingThread;
+  Arr2OAHICTWaitingThread = array of Arr1OAHICTWaitingThread;
+  Arr3OAHICTWaitingThread = array of Arr2OAHICTWaitingThread;
+
+  JSKeyStore = class;
+  Arr1JSKeyStore = array of JSKeyStore;
+  Arr2JSKeyStore = array of Arr1JSKeyStore;
+  Arr3JSKeyStore = array of Arr2JSKeyStore;
+
+  AGDScaleDrawable = class;
+  Arr1AGDScaleDrawable = array of AGDScaleDrawable;
+  Arr2AGDScaleDrawable = array of Arr1AGDScaleDrawable;
+  Arr3AGDScaleDrawable = array of Arr2AGDScaleDrawable;
+
+  JBPropertyChangeEvent = class;
+  Arr1JBPropertyChangeEvent = array of JBPropertyChangeEvent;
+  Arr2JBPropertyChangeEvent = array of Arr1JBPropertyChangeEvent;
+  Arr3JBPropertyChangeEvent = array of Arr2JBPropertyChangeEvent;
+
+  ACContentProviderClient = class;
+  Arr1ACContentProviderClient = array of ACContentProviderClient;
+  Arr2ACContentProviderClient = array of Arr1ACContentProviderClient;
+  Arr3ACContentProviderClient = array of Arr2ACContentProviderClient;
+
+  JIReader = class;
+  Arr1JIReader = array of JIReader;
+  Arr2JIReader = array of Arr1JIReader;
+  Arr3JIReader = array of Arr2JIReader;
+
+  ATSEasyEditSpan = class;
+  Arr1ATSEasyEditSpan = array of ATSEasyEditSpan;
+  Arr2ATSEasyEditSpan = array of Arr1ATSEasyEditSpan;
+  Arr3ATSEasyEditSpan = array of Arr2ATSEasyEditSpan;
+
+  AABBackupDataInput = class;
+  Arr1AABBackupDataInput = array of AABBackupDataInput;
+  Arr2AABBackupDataInput = array of Arr1AABBackupDataInput;
+  Arr3AABBackupDataInput = array of Arr2AABBackupDataInput;
+
+  ADDatabaseUtils = class;
+  Arr1ADDatabaseUtils = array of ADDatabaseUtils;
+  Arr2ADDatabaseUtils = array of Arr1ADDatabaseUtils;
+  Arr3ADDatabaseUtils = array of Arr2ADDatabaseUtils;
+
+  OAHICBasicClientCookie = class;
+  Arr1OAHICBasicClientCookie = array of OAHICBasicClientCookie;
+  Arr2OAHICBasicClientCookie = array of Arr1OAHICBasicClientCookie;
+  Arr3OAHICBasicClientCookie = array of Arr2OAHICBasicClientCookie;
+
+  AAListFragment = class;
+  Arr1AAListFragment = array of AAListFragment;
+  Arr2AAListFragment = array of Arr1AAListFragment;
+  Arr3AAListFragment = array of Arr2AAListFragment;
+
+  JSKeyPairGeneratorSpi = class;
+  Arr1JSKeyPairGeneratorSpi = array of JSKeyPairGeneratorSpi;
+  Arr2JSKeyPairGeneratorSpi = array of Arr1JSKeyPairGeneratorSpi;
+  Arr3JSKeyPairGeneratorSpi = array of Arr2JSKeyPairGeneratorSpi;
+
+  AWSimpleAdapter = class;
+  Arr1AWSimpleAdapter = array of AWSimpleAdapter;
+  Arr2AWSimpleAdapter = array of Arr1AWSimpleAdapter;
+  Arr3AWSimpleAdapter = array of Arr2AWSimpleAdapter;
+
+  AUPair = class;
+  Arr1AUPair = array of AUPair;
+  Arr2AUPair = array of Arr1AUPair;
+  Arr3AUPair = array of Arr2AUPair;
+
+  ACPConfigurationInfo = class;
+  Arr1ACPConfigurationInfo = array of ACPConfigurationInfo;
+  Arr2ACPConfigurationInfo = array of Arr1ACPConfigurationInfo;
+  Arr3ACPConfigurationInfo = array of Arr2ACPConfigurationInfo;
+
+  AGGestureOverlayView = class;
+  Arr1AGGestureOverlayView = array of AGGestureOverlayView;
+  Arr2AGGestureOverlayView = array of Arr1AGGestureOverlayView;
+  Arr3AGGestureOverlayView = array of Arr2AGGestureOverlayView;
+
+  AHUUsbDevice = class;
+  Arr1AHUUsbDevice = array of AHUUsbDevice;
+  Arr2AHUUsbDevice = array of Arr1AHUUsbDevice;
+  Arr3AHUUsbDevice = array of Arr2AHUUsbDevice;
+
+  ANParseException = class;
+  Arr1ANParseException = array of ANParseException;
+  Arr2ANParseException = array of Arr1ANParseException;
+  Arr3ANParseException = array of Arr2ANParseException;
+
+  JNSSSLKeyException = class;
+  Arr1JNSSSLKeyException = array of JNSSSLKeyException;
+  Arr2JNSSSLKeyException = array of Arr1JNSSSLKeyException;
+  Arr3JNSSSLKeyException = array of Arr2JNSSSLKeyException;
+
+  AHUUsbAccessory = class;
+  Arr1AHUUsbAccessory = array of AHUUsbAccessory;
+  Arr2AHUUsbAccessory = array of Arr1AHUUsbAccessory;
+  Arr3AHUUsbAccessory = array of Arr2AHUUsbAccessory;
+
+  AVAbsSavedState = class;
+  Arr1AVAbsSavedState = array of AVAbsSavedState;
+  Arr2AVAbsSavedState = array of Arr1AVAbsSavedState;
+  Arr3AVAbsSavedState = array of Arr2AVAbsSavedState;
+
+  JXPSAXParserFactory = class;
+  Arr1JXPSAXParserFactory = array of JXPSAXParserFactory;
+  Arr2JXPSAXParserFactory = array of Arr1JXPSAXParserFactory;
+  Arr3JXPSAXParserFactory = array of Arr2JXPSAXParserFactory;
+
+  AVAAnticipateOvershootInterpolator = class;
+  Arr1AVAAnticipateOvershootInterpolator = array of AVAAnticipateOvershootInterpolator;
+  Arr2AVAAnticipateOvershootInterpolator = array of Arr1AVAAnticipateOvershootInterpolator;
+  Arr3AVAAnticipateOvershootInterpolator = array of Arr2AVAAnticipateOvershootInterpolator;
+
+  JLInheritableThreadLocal = class;
+  Arr1JLInheritableThreadLocal = array of JLInheritableThreadLocal;
+  Arr2JLInheritableThreadLocal = array of Arr1JLInheritableThreadLocal;
+  Arr3JLInheritableThreadLocal = array of Arr2JLInheritableThreadLocal;
+
+  AAOperationCanceledException = class;
+  Arr1AAOperationCanceledException = array of AAOperationCanceledException;
+  Arr2AAOperationCanceledException = array of Arr1AAOperationCanceledException;
+  Arr3AAOperationCanceledException = array of Arr2AAOperationCanceledException;
+
+  AMAPresetReverb = class;
+  Arr1AMAPresetReverb = array of AMAPresetReverb;
+  Arr2AMAPresetReverb = array of Arr1AMAPresetReverb;
+  Arr3AMAPresetReverb = array of Arr2AMAPresetReverb;
+
+  JULMemoryHandler = class;
+  Arr1JULMemoryHandler = array of JULMemoryHandler;
+  Arr2JULMemoryHandler = array of Arr1JULMemoryHandler;
+  Arr3JULMemoryHandler = array of Arr2JULMemoryHandler;
+
+  ATPhoneNumberFormattingTextWatcher = class;
+  Arr1ATPhoneNumberFormattingTextWatcher = array of ATPhoneNumberFormattingTextWatcher;
+  Arr2ATPhoneNumberFormattingTextWatcher = array of Arr1ATPhoneNumberFormattingTextWatcher;
+  Arr3ATPhoneNumberFormattingTextWatcher = array of Arr2ATPhoneNumberFormattingTextWatcher;
+
+  JUZGZIPInputStream = class;
+  Arr1JUZGZIPInputStream = array of JUZGZIPInputStream;
+  Arr2JUZGZIPInputStream = array of Arr1JUZGZIPInputStream;
+  Arr3JUZGZIPInputStream = array of Arr2JUZGZIPInputStream;
+
+  OAHICDefaultConnectionKeepAliveStrategy = class;
+  Arr1OAHICDefaultConnectionKeepAliveStrategy = array of OAHICDefaultConnectionKeepAliveStrategy;
+  Arr2OAHICDefaultConnectionKeepAliveStrategy = array of Arr1OAHICDefaultConnectionKeepAliveStrategy;
+  Arr3OAHICDefaultConnectionKeepAliveStrategy = array of Arr2OAHICDefaultConnectionKeepAliveStrategy;
+
+  JCMacSpi = class;
+  Arr1JCMacSpi = array of JCMacSpi;
+  Arr2JCMacSpi = array of Arr1JCMacSpi;
+  Arr3JCMacSpi = array of Arr2JCMacSpi;
+
+  ANSSipErrorCode = class;
+  Arr1ANSSipErrorCode = array of ANSSipErrorCode;
+  Arr2ANSSipErrorCode = array of Arr1ANSSipErrorCode;
+  Arr3ANSSipErrorCode = array of Arr2ANSSipErrorCode;
+
+  ASElement = class;
+  Arr1ASElement = array of ASElement;
+  Arr2ASElement = array of Arr1ASElement;
+  Arr3ASElement = array of Arr2ASElement;
+
+  JNFloatBuffer = class;
+  Arr1JNFloatBuffer = array of JNFloatBuffer;
+  Arr2JNFloatBuffer = array of Arr1JNFloatBuffer;
+  Arr3JNFloatBuffer = array of Arr2JNFloatBuffer;
+
+  ANWPWifiP2pManager = class;
+  Arr1ANWPWifiP2pManager = array of ANWPWifiP2pManager;
+  Arr2ANWPWifiP2pManager = array of Arr1ANWPWifiP2pManager;
+  Arr3ANWPWifiP2pManager = array of Arr2ANWPWifiP2pManager;
+
+  JNURI = class;
+  Arr1JNURI = array of JNURI;
+  Arr2JNURI = array of Arr1JNURI;
+  Arr3JNURI = array of Arr2JNURI;
+
+  AAProgressDialog = class;
+  Arr1AAProgressDialog = array of AAProgressDialog;
+  Arr2AAProgressDialog = array of Arr1AAProgressDialog;
+  Arr3AAProgressDialog = array of Arr2AAProgressDialog;
+
+  JSSECParameterSpec = class;
+  Arr1JSSECParameterSpec = array of JSSECParameterSpec;
+  Arr2JSSECParameterSpec = array of Arr1JSSECParameterSpec;
+  Arr3JSSECParameterSpec = array of Arr2JSSECParameterSpec;
+
+  JUPInvalidPreferencesFormatException = class;
+  Arr1JUPInvalidPreferencesFormatException = array of JUPInvalidPreferencesFormatException;
+  Arr2JUPInvalidPreferencesFormatException = array of Arr1JUPInvalidPreferencesFormatException;
+  Arr3JUPInvalidPreferencesFormatException = array of Arr2JUPInvalidPreferencesFormatException;
+
+  JNURL = class;
+  Arr1JNURL = array of JNURL;
+  Arr2JNURL = array of Arr1JNURL;
+  Arr3JNURL = array of Arr2JNURL;
+
+  JIUTFDataFormatException = class;
+  Arr1JIUTFDataFormatException = array of JIUTFDataFormatException;
+  Arr2JIUTFDataFormatException = array of Arr1JIUTFDataFormatException;
+  Arr3JIUTFDataFormatException = array of Arr2JIUTFDataFormatException;
+
+  JLThread = class;
+  Arr1JLThread = array of JLThread;
+  Arr2JLThread = array of Arr1JLThread;
+  Arr3JLThread = array of Arr2JLThread;
+
+  ACContentProviderResult = class;
+  Arr1ACContentProviderResult = array of ACContentProviderResult;
+  Arr2ACContentProviderResult = array of Arr1ACContentProviderResult;
+  Arr3ACContentProviderResult = array of Arr2ACContentProviderResult;
+
+  OAHCSAllowAllHostnameVerifier = class;
+  Arr1OAHCSAllowAllHostnameVerifier = array of OAHCSAllowAllHostnameVerifier;
+  Arr2OAHCSAllowAllHostnameVerifier = array of Arr1OAHCSAllowAllHostnameVerifier;
+  Arr3OAHCSAllowAllHostnameVerifier = array of Arr2OAHCSAllowAllHostnameVerifier;
+
+  AABBackupAgentHelper = class;
+  Arr1AABBackupAgentHelper = array of AABBackupAgentHelper;
+  Arr2AABBackupAgentHelper = array of Arr1AABBackupAgentHelper;
+  Arr3AABBackupAgentHelper = array of Arr2AABBackupAgentHelper;
+
+  JMRoundingMode = class;
+  Arr1JMRoundingMode = array of JMRoundingMode;
+  Arr2JMRoundingMode = array of Arr1JMRoundingMode;
+  Arr3JMRoundingMode = array of Arr2JMRoundingMode;
+
+  OXVXmlPullParserFactory = class;
+  Arr1OXVXmlPullParserFactory = array of OXVXmlPullParserFactory;
+  Arr2OXVXmlPullParserFactory = array of Arr1OXVXmlPullParserFactory;
+  Arr3OXVXmlPullParserFactory = array of Arr2OXVXmlPullParserFactory;
+
+  JSStatementEvent = class;
+  Arr1JSStatementEvent = array of JSStatementEvent;
+  Arr2JSStatementEvent = array of Arr1JSStatementEvent;
+  Arr3JSStatementEvent = array of Arr2JSStatementEvent;
+
+  OAHCMHttpGet = class;
+  Arr1OAHCMHttpGet = array of OAHCMHttpGet;
+  Arr2OAHCMHttpGet = array of Arr1OAHCMHttpGet;
+  Arr3OAHCMHttpGet = array of Arr2OAHCMHttpGet;
+
+  ADMergeCursor = class;
+  Arr1ADMergeCursor = array of ADMergeCursor;
+  Arr2ADMergeCursor = array of Arr1ADMergeCursor;
+  Arr3ADMergeCursor = array of Arr2ADMergeCursor;
+
+  OAHCSAbstractVerifier = class;
+  Arr1OAHCSAbstractVerifier = array of OAHCSAbstractVerifier;
+  Arr2OAHCSAbstractVerifier = array of Arr1OAHCSAbstractVerifier;
+  Arr3OAHCSAbstractVerifier = array of Arr2OAHCSAbstractVerifier;
+
+  ANWPWifiP2pDevice = class;
+  Arr1ANWPWifiP2pDevice = array of ANWPWifiP2pDevice;
+  Arr2ANWPWifiP2pDevice = array of Arr1ANWPWifiP2pDevice;
+  Arr3ANWPWifiP2pDevice = array of Arr2ANWPWifiP2pDevice;
+
+  AULog = class;
+  Arr1AULog = array of AULog;
+  Arr2AULog = array of Arr1AULog;
+  Arr3AULog = array of Arr2AULog;
+
+  JUIllegalFormatCodePointException = class;
+  Arr1JUIllegalFormatCodePointException = array of JUIllegalFormatCodePointException;
+  Arr2JUIllegalFormatCodePointException = array of Arr1JUIllegalFormatCodePointException;
+  Arr3JUIllegalFormatCodePointException = array of Arr2JUIllegalFormatCodePointException;
+
+  JSCCollectionCertStoreParameters = class;
+  Arr1JSCCollectionCertStoreParameters = array of JSCCollectionCertStoreParameters;
+  Arr2JSCCollectionCertStoreParameters = array of Arr1JSCCollectionCertStoreParameters;
+  Arr3JSCCollectionCertStoreParameters = array of Arr2JSCCollectionCertStoreParameters;
+
+  AVALayoutAnimationController = class;
+  Arr1AVALayoutAnimationController = array of AVALayoutAnimationController;
+  Arr2AVALayoutAnimationController = array of Arr1AVALayoutAnimationController;
+  Arr3AVALayoutAnimationController = array of Arr2AVALayoutAnimationController;
+
+  JUTimer = class;
+  Arr1JUTimer = array of JUTimer;
+  Arr2JUTimer = array of Arr1JUTimer;
+  Arr3JUTimer = array of Arr2JUTimer;
+
+  ADSSQLiteDatabase = class;
+  Arr1ADSSQLiteDatabase = array of ADSSQLiteDatabase;
+  Arr2ADSSQLiteDatabase = array of Arr1ADSSQLiteDatabase;
+  Arr3ADSSQLiteDatabase = array of Arr2ADSSQLiteDatabase;
+
+  AAWallpaperManager = class;
+  Arr1AAWallpaperManager = array of AAWallpaperManager;
+  Arr2AAWallpaperManager = array of Arr1AAWallpaperManager;
+  Arr3AAWallpaperManager = array of Arr2AAWallpaperManager;
+
+  AOSStorageManager = class;
+  Arr1AOSStorageManager = array of AOSStorageManager;
+  Arr2AOSStorageManager = array of Arr1AOSStorageManager;
+  Arr3AOSStorageManager = array of Arr2AOSStorageManager;
+
+  JCNullCipher = class;
+  Arr1JCNullCipher = array of JCNullCipher;
+  Arr2JCNullCipher = array of Arr1JCNullCipher;
+  Arr3JCNullCipher = array of Arr2JCNullCipher;
+
+  AGEmbossMaskFilter = class;
+  Arr1AGEmbossMaskFilter = array of AGEmbossMaskFilter;
+  Arr2AGEmbossMaskFilter = array of Arr1AGEmbossMaskFilter;
+  Arr3AGEmbossMaskFilter = array of Arr2AGEmbossMaskFilter;
+
+  APBrowser = class;
+  Arr1APBrowser = array of APBrowser;
+  Arr2APBrowser = array of Arr1APBrowser;
+  Arr3APBrowser = array of Arr2APBrowser;
+
+  JNSocketTimeoutException = class;
+  Arr1JNSocketTimeoutException = array of JNSocketTimeoutException;
+  Arr2JNSocketTimeoutException = array of Arr1JNSocketTimeoutException;
+  Arr3JNSocketTimeoutException = array of Arr2JNSocketTimeoutException;
+
+  AGColor = class;
+  Arr1AGColor = array of AGColor;
+  Arr2AGColor = array of Arr1AGColor;
+  Arr3AGColor = array of Arr2AGColor;
+
+  ATSRelativeSizeSpan = class;
+  Arr1ATSRelativeSizeSpan = array of ATSRelativeSizeSpan;
+  Arr2ATSRelativeSizeSpan = array of Arr1ATSRelativeSizeSpan;
+  Arr3ATSRelativeSizeSpan = array of Arr2ATSRelativeSizeSpan;
+
+  AGDGradientDrawable = class;
+  Arr1AGDGradientDrawable = array of AGDGradientDrawable;
+  Arr2AGDGradientDrawable = array of Arr1AGDGradientDrawable;
+  Arr3AGDGradientDrawable = array of Arr2AGDGradientDrawable;
+
+  JTParsePosition = class;
+  Arr1JTParsePosition = array of JTParsePosition;
+  Arr2JTParsePosition = array of Arr1JTParsePosition;
+  Arr3JTParsePosition = array of Arr2JTParsePosition;
+
+  OAHICTConnPoolByRoute = class;
+  Arr1OAHICTConnPoolByRoute = array of OAHICTConnPoolByRoute;
+  Arr2OAHICTConnPoolByRoute = array of Arr1OAHICTConnPoolByRoute;
+  Arr3OAHICTConnPoolByRoute = array of Arr2OAHICTConnPoolByRoute;
+
+  OWDDOMException = class;
+  Arr1OWDDOMException = array of OWDDOMException;
+  Arr2OWDDOMException = array of Arr1OWDDOMException;
+  Arr3OWDDOMException = array of Arr2OWDDOMException;
+
+  ARProgram = class;
+  Arr1ARProgram = array of ARProgram;
+  Arr2ARProgram = array of Arr1ARProgram;
+  Arr3ARProgram = array of Arr2ARProgram;
+
+  OAHIEEntitySerializer = class;
+  Arr1OAHIEEntitySerializer = array of OAHIEEntitySerializer;
+  Arr2OAHIEEntitySerializer = array of Arr1OAHIEEntitySerializer;
+  Arr3OAHIEEntitySerializer = array of Arr2OAHIEEntitySerializer;
+
+  JLUnsatisfiedLinkError = class;
+  Arr1JLUnsatisfiedLinkError = array of JLUnsatisfiedLinkError;
+  Arr2JLUnsatisfiedLinkError = array of Arr1JLUnsatisfiedLinkError;
+  Arr3JLUnsatisfiedLinkError = array of Arr2JLUnsatisfiedLinkError;
+
+  ACPPackageItemInfo = class;
+  Arr1ACPPackageItemInfo = array of ACPPackageItemInfo;
+  Arr2ACPPackageItemInfo = array of Arr1ACPPackageItemInfo;
+  Arr3ACPPackageItemInfo = array of Arr2ACPPackageItemInfo;
+
+  OAHEHttpEntityWrapper = class;
+  Arr1OAHEHttpEntityWrapper = array of OAHEHttpEntityWrapper;
+  Arr2OAHEHttpEntityWrapper = array of Arr1OAHEHttpEntityWrapper;
+  Arr3OAHEHttpEntityWrapper = array of Arr2OAHEHttpEntityWrapper;
+
+  AAValueAnimator = class;
+  Arr1AAValueAnimator = array of AAValueAnimator;
+  Arr2AAValueAnimator = array of Arr1AAValueAnimator;
+  Arr3AAValueAnimator = array of Arr2AAValueAnimator;
+
+  JSSQLNonTransientConnectionException = class;
+  Arr1JSSQLNonTransientConnectionException = array of JSSQLNonTransientConnectionException;
+  Arr2JSSQLNonTransientConnectionException = array of Arr1JSSQLNonTransientConnectionException;
+  Arr3JSSQLNonTransientConnectionException = array of Arr2JSSQLNonTransientConnectionException;
+
+  ALLocation = class;
+  Arr1ALLocation = array of ALLocation;
+  Arr2ALLocation = array of Arr1ALLocation;
+  Arr3ALLocation = array of Arr2ALLocation;
+
+  ADSSQLiteDatabaseLockedException = class;
+  Arr1ADSSQLiteDatabaseLockedException = array of ADSSQLiteDatabaseLockedException;
+  Arr2ADSSQLiteDatabaseLockedException = array of Arr1ADSSQLiteDatabaseLockedException;
+  Arr3ADSSQLiteDatabaseLockedException = array of Arr2ADSSQLiteDatabaseLockedException;
+
+  JIUnsupportedEncodingException = class;
+  Arr1JIUnsupportedEncodingException = array of JIUnsupportedEncodingException;
+  Arr2JIUnsupportedEncodingException = array of Arr1JIUnsupportedEncodingException;
+  Arr3JIUnsupportedEncodingException = array of Arr2JIUnsupportedEncodingException;
+
+  JSKeyRep = class;
+  Arr1JSKeyRep = array of JSKeyRep;
+  Arr2JSKeyRep = array of Arr1JSKeyRep;
+  Arr3JSKeyRep = array of Arr2JSKeyRep;
+
+  JSDataTruncation = class;
+  Arr1JSDataTruncation = array of JSDataTruncation;
+  Arr2JSDataTruncation = array of Arr1JSDataTruncation;
+  Arr3JSDataTruncation = array of Arr2JSDataTruncation;
+
+  ACAbstractThreadedSyncAdapter = class;
+  Arr1ACAbstractThreadedSyncAdapter = array of ACAbstractThreadedSyncAdapter;
+  Arr2ACAbstractThreadedSyncAdapter = array of Arr1ACAbstractThreadedSyncAdapter;
+  Arr3ACAbstractThreadedSyncAdapter = array of Arr2ACAbstractThreadedSyncAdapter;
+
+  JSSQLWarning = class;
+  Arr1JSSQLWarning = array of JSSQLWarning;
+  Arr2JSSQLWarning = array of Arr1JSSQLWarning;
+  Arr3JSSQLWarning = array of Arr2JSSQLWarning;
+
+  ADCursorWrapper = class;
+  Arr1ADCursorWrapper = array of ADCursorWrapper;
+  Arr2ADCursorWrapper = array of Arr1ADCursorWrapper;
+  Arr3ADCursorWrapper = array of Arr2ADCursorWrapper;
+
+  AGImageFormat = class;
+  Arr1AGImageFormat = array of AGImageFormat;
+  Arr2AGImageFormat = array of Arr1AGImageFormat;
+  Arr3AGImageFormat = array of Arr2AGImageFormat;
+
+  ATSDynamicDrawableSpan = class;
+  Arr1ATSDynamicDrawableSpan = array of ATSDynamicDrawableSpan;
+  Arr2ATSDynamicDrawableSpan = array of Arr1ATSDynamicDrawableSpan;
+  Arr3ATSDynamicDrawableSpan = array of Arr2ATSDynamicDrawableSpan;
+
+  AGPointF = class;
+  Arr1AGPointF = array of AGPointF;
+  Arr2AGPointF = array of Arr1AGPointF;
+  Arr3AGPointF = array of Arr2AGPointF;
+
+  OAHIIChunkedInputStream = class;
+  Arr1OAHIIChunkedInputStream = array of OAHIIChunkedInputStream;
+  Arr2OAHIIChunkedInputStream = array of Arr1OAHIIChunkedInputStream;
+  Arr3OAHIIChunkedInputStream = array of Arr2OAHIIChunkedInputStream;
+
+  AR = class;
+  Arr1AR = array of AR;
+  Arr2AR = array of Arr1AR;
+  Arr3AR = array of Arr2AR;
+
+  ATTextPaint = class;
+  Arr1ATTextPaint = array of ATTextPaint;
+  Arr2ATTextPaint = array of Arr1ATTextPaint;
+  Arr3ATTextPaint = array of Arr2ATTextPaint;
+
+  OAHICNetscapeDomainHandler = class;
+  Arr1OAHICNetscapeDomainHandler = array of OAHICNetscapeDomainHandler;
+  Arr2OAHICNetscapeDomainHandler = array of Arr1OAHICNetscapeDomainHandler;
+  Arr3OAHICNetscapeDomainHandler = array of Arr2OAHICNetscapeDomainHandler;
+
+  JIPushbackReader = class;
+  Arr1JIPushbackReader = array of JIPushbackReader;
+  Arr2JIPushbackReader = array of Arr1JIPushbackReader;
+  Arr3JIPushbackReader = array of Arr2JIPushbackReader;
+
+  AAAnimatorSet = class;
+  Arr1AAAnimatorSet = array of AAAnimatorSet;
+  Arr2AAAnimatorSet = array of Arr1AAAnimatorSet;
+  Arr3AAAnimatorSet = array of Arr2AAAnimatorSet;
+
+  ADProcessedData = class;
+  Arr1ADProcessedData = array of ADProcessedData;
+  Arr2ADProcessedData = array of Arr1ADProcessedData;
+  Arr3ADProcessedData = array of Arr2ADProcessedData;
+
+  ATMTextKeyListener = class;
+  Arr1ATMTextKeyListener = array of ATMTextKeyListener;
+  Arr2ATMTextKeyListener = array of Arr1ATMTextKeyListener;
+  Arr3ATMTextKeyListener = array of Arr2ATMTextKeyListener;
+
+  ARRSIllegalArgumentException = class;
+  Arr1ARRSIllegalArgumentException = array of ARRSIllegalArgumentException;
+  Arr2ARRSIllegalArgumentException = array of Arr1ARRSIllegalArgumentException;
+  Arr3ARRSIllegalArgumentException = array of Arr2ARRSIllegalArgumentException;
+
+  JTNumberFormat = class;
+  Arr1JTNumberFormat = array of JTNumberFormat;
+  Arr2JTNumberFormat = array of Arr1JTNumberFormat;
+  Arr3JTNumberFormat = array of Arr2JTNumberFormat;
+
+  JSSX509EncodedKeySpec = class;
+  Arr1JSSX509EncodedKeySpec = array of JSSX509EncodedKeySpec;
+  Arr2JSSX509EncodedKeySpec = array of Arr1JSSX509EncodedKeySpec;
+  Arr3JSSX509EncodedKeySpec = array of Arr2JSSX509EncodedKeySpec;
+
+  ACEntity = class;
+  Arr1ACEntity = array of ACEntity;
+  Arr2ACEntity = array of Arr1ACEntity;
+  Arr3ACEntity = array of Arr2ACEntity;
+
+  JUCArrayBlockingQueue = class;
+  Arr1JUCArrayBlockingQueue = array of JUCArrayBlockingQueue;
+  Arr2JUCArrayBlockingQueue = array of Arr1JUCArrayBlockingQueue;
+  Arr3JUCArrayBlockingQueue = array of Arr2JUCArrayBlockingQueue;
+
+  OAHCEUrlEncodedFormEntity = class;
+  Arr1OAHCEUrlEncodedFormEntity = array of OAHCEUrlEncodedFormEntity;
+  Arr2OAHCEUrlEncodedFormEntity = array of Arr1OAHCEUrlEncodedFormEntity;
+  Arr3OAHCEUrlEncodedFormEntity = array of Arr2OAHCEUrlEncodedFormEntity;
+
+  OAHHttpHost = class;
+  Arr1OAHHttpHost = array of OAHHttpHost;
+  Arr2OAHHttpHost = array of Arr1OAHHttpHost;
+  Arr3OAHHttpHost = array of Arr2OAHHttpHost;
+
+  JSAuthProvider = class;
+  Arr1JSAuthProvider = array of JSAuthProvider;
+  Arr2JSAuthProvider = array of Arr1JSAuthProvider;
+  Arr3JSAuthProvider = array of Arr2JSAuthProvider;
+
+  OAHUCharArrayBuffer = class;
+  Arr1OAHUCharArrayBuffer = array of OAHUCharArrayBuffer;
+  Arr2OAHUCharArrayBuffer = array of Arr1OAHUCharArrayBuffer;
+  Arr3OAHUCharArrayBuffer = array of Arr2OAHUCharArrayBuffer;
+
+  JLRModifier = class;
+  Arr1JLRModifier = array of JLRModifier;
+  Arr2JLRModifier = array of Arr1JLRModifier;
+  Arr3JLRModifier = array of Arr2JLRModifier;
+
+  AALayoutTransition = class;
+  Arr1AALayoutTransition = array of AALayoutTransition;
+  Arr2AALayoutTransition = array of Arr1AALayoutTransition;
+  Arr3AALayoutTransition = array of Arr2AALayoutTransition;
+
+  ADSSQLiteTableLockedException = class;
+  Arr1ADSSQLiteTableLockedException = array of ADSSQLiteTableLockedException;
+  Arr2ADSSQLiteTableLockedException = array of Arr1ADSSQLiteTableLockedException;
+  Arr3ADSSQLiteTableLockedException = array of Arr2ADSSQLiteTableLockedException;
+
+  JIFileInputStream = class;
+  Arr1JIFileInputStream = array of JIFileInputStream;
+  Arr2JIFileInputStream = array of Arr1JIFileInputStream;
+  Arr3JIFileInputStream = array of Arr2JIFileInputStream;
+
+  AGRasterizer = class;
+  Arr1AGRasterizer = array of AGRasterizer;
+  Arr2AGRasterizer = array of Arr1AGRasterizer;
+  Arr3AGRasterizer = array of Arr2AGRasterizer;
+
+  AWWebHistoryItem = class;
+  Arr1AWWebHistoryItem = array of AWWebHistoryItem;
+  Arr2AWWebHistoryItem = array of Arr1AWWebHistoryItem;
+  Arr3AWWebHistoryItem = array of Arr2AWWebHistoryItem;
+
+  OAHICBestMatchSpecFactory = class;
+  Arr1OAHICBestMatchSpecFactory = array of OAHICBestMatchSpecFactory;
+  Arr2OAHICBestMatchSpecFactory = array of Arr1OAHICBestMatchSpecFactory;
+  Arr3OAHICBestMatchSpecFactory = array of Arr2OAHICBestMatchSpecFactory;
+
+  ATMDialerKeyListener = class;
+  Arr1ATMDialerKeyListener = array of ATMDialerKeyListener;
+  Arr2ATMDialerKeyListener = array of Arr1ATMDialerKeyListener;
+  Arr3ATMDialerKeyListener = array of Arr2ATMDialerKeyListener;
+
+  JULLevel = class;
+  Arr1JULLevel = array of JULLevel;
+  Arr2JULLevel = array of Arr1JULLevel;
+  Arr3JULLevel = array of Arr2JULLevel;
+
+  OAHCMHttpTrace = class;
+  Arr1OAHCMHttpTrace = array of OAHCMHttpTrace;
+  Arr2OAHCMHttpTrace = array of Arr1OAHCMHttpTrace;
+  Arr3OAHCMHttpTrace = array of Arr2OAHCMHttpTrace;
+
+  AAAppWidgetHostView = class;
+  Arr1AAAppWidgetHostView = array of AAAppWidgetHostView;
+  Arr2AAAppWidgetHostView = array of Arr1AAAppWidgetHostView;
+  Arr3AAAppWidgetHostView = array of Arr2AAAppWidgetHostView;
+
+  JNSKeyManagerFactory = class;
+  Arr1JNSKeyManagerFactory = array of JNSKeyManagerFactory;
+  Arr2JNSKeyManagerFactory = array of Arr1JNSKeyManagerFactory;
+  Arr3JNSKeyManagerFactory = array of Arr2JNSKeyManagerFactory;
+
+  JLRGenericSignatureFormatError = class;
+  Arr1JLRGenericSignatureFormatError = array of JLRGenericSignatureFormatError;
+  Arr2JLRGenericSignatureFormatError = array of Arr1JLRGenericSignatureFormatError;
+  Arr3JLRGenericSignatureFormatError = array of Arr2JLRGenericSignatureFormatError;
+
+  JNSSSLEngine = class;
+  Arr1JNSSSLEngine = array of JNSSSLEngine;
+  Arr2JNSSSLEngine = array of Arr1JNSSSLEngine;
+  Arr3JNSSSLEngine = array of Arr2JNSSSLEngine;
+
+  OAHICEntityEnclosingRequestWrapper = class;
+  Arr1OAHICEntityEnclosingRequestWrapper = array of OAHICEntityEnclosingRequestWrapper;
+  Arr2OAHICEntityEnclosingRequestWrapper = array of Arr1OAHICEntityEnclosingRequestWrapper;
+  Arr3OAHICEntityEnclosingRequestWrapper = array of Arr2OAHICEntityEnclosingRequestWrapper;
+
+  ADDataSetObserver = class;
+  Arr1ADDataSetObserver = array of ADDataSetObserver;
+  Arr2ADDataSetObserver = array of Arr1ADDataSetObserver;
+  Arr3ADDataSetObserver = array of Arr2ADDataSetObserver;
+
+  JNSocketAddress = class;
+  Arr1JNSocketAddress = array of JNSocketAddress;
+  Arr2JNSocketAddress = array of Arr1JNSocketAddress;
+  Arr3JNSocketAddress = array of Arr2JNSocketAddress;
+
+  ACContentProvider = class;
+  Arr1ACContentProvider = array of ACContentProvider;
+  Arr2ACContentProvider = array of Arr1ACContentProvider;
+  Arr3ACContentProvider = array of Arr2ACContentProvider;
+
+  JSSRSAPrivateCrtKeySpec = class;
+  Arr1JSSRSAPrivateCrtKeySpec = array of JSSRSAPrivateCrtKeySpec;
+  Arr2JSSRSAPrivateCrtKeySpec = array of Arr1JSSRSAPrivateCrtKeySpec;
+  Arr3JSSRSAPrivateCrtKeySpec = array of Arr2JSSRSAPrivateCrtKeySpec;
+
+  ANFormatException = class;
+  Arr1ANFormatException = array of ANFormatException;
+  Arr2ANFormatException = array of Arr1ANFormatException;
+  Arr3ANFormatException = array of Arr2ANFormatException;
+
+  JUInvalidPropertiesFormatException = class;
+  Arr1JUInvalidPropertiesFormatException = array of JUInvalidPropertiesFormatException;
+  Arr2JUInvalidPropertiesFormatException = array of Arr1JUInvalidPropertiesFormatException;
+  Arr3JUInvalidPropertiesFormatException = array of Arr2JUInvalidPropertiesFormatException;
+
+  JNSSSLException = class;
+  Arr1JNSSSLException = array of JNSSSLException;
+  Arr2JNSSSLException = array of Arr1JNSSSLException;
+  Arr3JNSSSLException = array of Arr2JNSSSLException;
+
+  OAHCMalformedCookieException = class;
+  Arr1OAHCMalformedCookieException = array of OAHCMalformedCookieException;
+  Arr2OAHCMalformedCookieException = array of Arr1OAHCMalformedCookieException;
+  Arr3OAHCMalformedCookieException = array of Arr2OAHCMalformedCookieException;
+
+  OAHUByteArrayBuffer = class;
+  Arr1OAHUByteArrayBuffer = array of OAHUByteArrayBuffer;
+  Arr2OAHUByteArrayBuffer = array of Arr1OAHUByteArrayBuffer;
+  Arr3OAHUByteArrayBuffer = array of Arr2OAHUByteArrayBuffer;
+
+  ARRSTextureView = class;
+  Arr1ARRSTextureView = array of ARRSTextureView;
+  Arr2ARRSTextureView = array of Arr1ARRSTextureView;
+  Arr3ARRSTextureView = array of Arr2ARRSTextureView;
+
+  JCSRC2ParameterSpec = class;
+  Arr1JCSRC2ParameterSpec = array of JCSRC2ParameterSpec;
+  Arr2JCSRC2ParameterSpec = array of Arr1JCSRC2ParameterSpec;
+  Arr3JCSRC2ParameterSpec = array of Arr2JCSRC2ParameterSpec;
+
+  OAHMBasicRequestLine = class;
+  Arr1OAHMBasicRequestLine = array of OAHMBasicRequestLine;
+  Arr2OAHMBasicRequestLine = array of Arr1OAHMBasicRequestLine;
+  Arr3OAHMBasicRequestLine = array of Arr2OAHMBasicRequestLine;
+
+  JULLogRecord = class;
+  Arr1JULLogRecord = array of JULLogRecord;
+  Arr2JULLogRecord = array of Arr1JULLogRecord;
+  Arr3JULLogRecord = array of Arr2JULLogRecord;
+
+  AMSoundPool = class;
+  Arr1AMSoundPool = array of AMSoundPool;
+  Arr2AMSoundPool = array of Arr1AMSoundPool;
+  Arr3AMSoundPool = array of Arr2AMSoundPool;
+
+  JNCOverlappingFileLockException = class;
+  Arr1JNCOverlappingFileLockException = array of JNCOverlappingFileLockException;
+  Arr2JNCOverlappingFileLockException = array of Arr1JNCOverlappingFileLockException;
+  Arr3JNCOverlappingFileLockException = array of Arr2JNCOverlappingFileLockException;
+
+  JSSignature = class;
+  Arr1JSSignature = array of JSSignature;
+  Arr2JSSignature = array of Arr1JSSignature;
+  Arr3JSSignature = array of Arr2JSSignature;
+
+  AOGLException = class;
+  Arr1AOGLException = array of AOGLException;
+  Arr2AOGLException = array of Arr1AOGLException;
+  Arr3AOGLException = array of Arr2AOGLException;
+
+  JUCAAtomicMarkableReference = class;
+  Arr1JUCAAtomicMarkableReference = array of JUCAAtomicMarkableReference;
+  Arr2JUCAAtomicMarkableReference = array of Arr1JUCAAtomicMarkableReference;
+  Arr3JUCAAtomicMarkableReference = array of Arr2JUCAAtomicMarkableReference;
+
+  JNCFileLock = class;
+  Arr1JNCFileLock = array of JNCFileLock;
+  Arr2JNCFileLock = array of Arr1JNCFileLock;
+  Arr3JNCFileLock = array of Arr2JNCFileLock;
+
+  JLRSoftReference = class;
+  Arr1JLRSoftReference = array of JLRSoftReference;
+  Arr2JLRSoftReference = array of Arr1JLRSoftReference;
+  Arr3JLRSoftReference = array of Arr2JLRSoftReference;
+
+  OXSHNamespaceSupport = class;
+  Arr1OXSHNamespaceSupport = array of OXSHNamespaceSupport;
+  Arr2OXSHNamespaceSupport = array of Arr1OXSHNamespaceSupport;
+  Arr3OXSHNamespaceSupport = array of Arr2OXSHNamespaceSupport;
+
+  AUSparseArray = class;
+  Arr1AUSparseArray = array of AUSparseArray;
+  Arr2AUSparseArray = array of Arr1AUSparseArray;
+  Arr3AUSparseArray = array of Arr2AUSparseArray;
+
+  JUCAAtomicLong = class;
+  Arr1JUCAAtomicLong = array of JUCAAtomicLong;
+  Arr2JUCAAtomicLong = array of Arr1JUCAAtomicLong;
+  Arr3JUCAAtomicLong = array of Arr2JUCAAtomicLong;
+
+  AWDateSorter = class;
+  Arr1AWDateSorter = array of AWDateSorter;
+  Arr2AWDateSorter = array of Arr1AWDateSorter;
+  Arr3AWDateSorter = array of Arr2AWDateSorter;
+
+  AVLayoutInflater = class;
+  Arr1AVLayoutInflater = array of AVLayoutInflater;
+  Arr2AVLayoutInflater = array of Arr1AVLayoutInflater;
+  Arr3AVLayoutInflater = array of Arr2AVLayoutInflater;
+
+  JCSDESedeKeySpec = class;
+  Arr1JCSDESedeKeySpec = array of JCSDESedeKeySpec;
+  Arr2JCSDESedeKeySpec = array of Arr1JCSDESedeKeySpec;
+  Arr3JCSDESedeKeySpec = array of Arr2JCSDESedeKeySpec;
+
+  JCShortBufferException = class;
+  Arr1JCShortBufferException = array of JCShortBufferException;
+  Arr2JCShortBufferException = array of Arr1JCShortBufferException;
+  Arr3JCShortBufferException = array of Arr2JCShortBufferException;
+
+  ARFieldPacker = class;
+  Arr1ARFieldPacker = array of ARFieldPacker;
+  Arr2ARFieldPacker = array of Arr1ARFieldPacker;
+  Arr3ARFieldPacker = array of Arr2ARFieldPacker;
+
+  JUCollections = class;
+  Arr1JUCollections = array of JUCollections;
+  Arr2JUCollections = array of Arr1JUCollections;
+  Arr3JUCollections = array of Arr2JUCollections;
+
+  AGSumPathEffect = class;
+  Arr1AGSumPathEffect = array of AGSumPathEffect;
+  Arr2AGSumPathEffect = array of Arr1AGSumPathEffect;
+  Arr3AGSumPathEffect = array of Arr2AGSumPathEffect;
+
+  JULSimpleFormatter = class;
+  Arr1JULSimpleFormatter = array of JULSimpleFormatter;
+  Arr2JULSimpleFormatter = array of Arr1JULSimpleFormatter;
+  Arr3JULSimpleFormatter = array of Arr2JULSimpleFormatter;
+
+  AABFileBackupHelperBase = class;
+  Arr1AABFileBackupHelperBase = array of AABFileBackupHelperBase;
+  Arr2AABFileBackupHelperBase = array of Arr1AABFileBackupHelperBase;
+  Arr3AABFileBackupHelperBase = array of Arr2AABFileBackupHelperBase;
+
+  AGComposePathEffect = class;
+  Arr1AGComposePathEffect = array of AGComposePathEffect;
+  Arr2AGComposePathEffect = array of Arr1AGComposePathEffect;
+  Arr3AGComposePathEffect = array of Arr2AGComposePathEffect;
+
+  AAActivityManager = class;
+  Arr1AAActivityManager = array of AAActivityManager;
+  Arr2AAActivityManager = array of Arr1AAActivityManager;
+  Arr3AAActivityManager = array of Arr2AAActivityManager;
+
+  ATSignalStrength = class;
+  Arr1ATSignalStrength = array of ATSignalStrength;
+  Arr2ATSignalStrength = array of Arr1ATSignalStrength;
+  Arr3ATSignalStrength = array of Arr2ATSignalStrength;
+
+  JULHandler = class;
+  Arr1JULHandler = array of JULHandler;
+  Arr2JULHandler = array of Arr1JULHandler;
+  Arr3JULHandler = array of Arr2JULHandler;
+
+  ATSSuperscriptSpan = class;
+  Arr1ATSSuperscriptSpan = array of ATSSuperscriptSpan;
+  Arr2ATSSuperscriptSpan = array of Arr1ATSSuperscriptSpan;
+  Arr3ATSSuperscriptSpan = array of Arr2ATSSuperscriptSpan;
+
+  JSCCertPathValidator = class;
+  Arr1JSCCertPathValidator = array of JSCCertPathValidator;
+  Arr2JSCCertPathValidator = array of Arr1JSCCertPathValidator;
+  Arr3JSCCertPathValidator = array of Arr2JSCCertPathValidator;
+
+  OAHICTWaitingThreadAborter = class;
+  Arr1OAHICTWaitingThreadAborter = array of OAHICTWaitingThreadAborter;
+  Arr2OAHICTWaitingThreadAborter = array of Arr1OAHICTWaitingThreadAborter;
+  Arr3OAHICTWaitingThreadAborter = array of Arr2OAHICTWaitingThreadAborter;
+
+  JSDriverManager = class;
+  Arr1JSDriverManager = array of JSDriverManager;
+  Arr2JSDriverManager = array of Arr1JSDriverManager;
+  Arr3JSDriverManager = array of Arr2JSDriverManager;
+
+  ATMNumberKeyListener = class;
+  Arr1ATMNumberKeyListener = array of ATMNumberKeyListener;
+  Arr2ATMNumberKeyListener = array of Arr1ATMNumberKeyListener;
+  Arr3ATMNumberKeyListener = array of Arr2ATMNumberKeyListener;
+
+  JSSQLNonTransientException = class;
+  Arr1JSSQLNonTransientException = array of JSSQLNonTransientException;
+  Arr2JSSQLNonTransientException = array of Arr1JSSQLNonTransientException;
+  Arr3JSSQLNonTransientException = array of Arr2JSSQLNonTransientException;
+
+  OAHICProxySelectorRoutePlanner = class;
+  Arr1OAHICProxySelectorRoutePlanner = array of OAHICProxySelectorRoutePlanner;
+  Arr2OAHICProxySelectorRoutePlanner = array of Arr1OAHICProxySelectorRoutePlanner;
+  Arr3OAHICProxySelectorRoutePlanner = array of Arr2OAHICProxySelectorRoutePlanner;
+
+  JULLogger = class;
+  Arr1JULLogger = array of JULLogger;
+  Arr2JULLogger = array of Arr1JULLogger;
+  Arr3JULLogger = array of Arr2JULLogger;
+
+  AVAOvershootInterpolator = class;
+  Arr1AVAOvershootInterpolator = array of AVAOvershootInterpolator;
+  Arr2AVAOvershootInterpolator = array of Arr1AVAOvershootInterpolator;
+  Arr3AVAOvershootInterpolator = array of Arr2AVAOvershootInterpolator;
+
+  JIInterruptedIOException = class;
+  Arr1JIInterruptedIOException = array of JIInterruptedIOException;
+  Arr2JIInterruptedIOException = array of Arr1JIInterruptedIOException;
+  Arr3JIInterruptedIOException = array of Arr2JIInterruptedIOException;
+
+  JLNegativeArraySizeException = class;
+  Arr1JLNegativeArraySizeException = array of JLNegativeArraySizeException;
+  Arr2JLNegativeArraySizeException = array of Arr1JLNegativeArraySizeException;
+  Arr3JLNegativeArraySizeException = array of Arr2JLNegativeArraySizeException;
+
+  JIPipedInputStream = class;
+  Arr1JIPipedInputStream = array of JIPipedInputStream;
+  Arr2JIPipedInputStream = array of Arr1JIPipedInputStream;
+  Arr3JIPipedInputStream = array of Arr2JIPipedInputStream;
+
+  JSSQLIntegrityConstraintViolationException = class;
+  Arr1JSSQLIntegrityConstraintViolationException = array of JSSQLIntegrityConstraintViolationException;
+  Arr2JSSQLIntegrityConstraintViolationException = array of Arr1JSSQLIntegrityConstraintViolationException;
+  Arr3JSSQLIntegrityConstraintViolationException = array of Arr2JSSQLIntegrityConstraintViolationException;
+
+  OJJSONTokener = class;
+  Arr1OJJSONTokener = array of OJJSONTokener;
+  Arr2OJJSONTokener = array of Arr1OJJSONTokener;
+  Arr3OJJSONTokener = array of Arr2OJJSONTokener;
+
+  ANSSipException = class;
+  Arr1ANSSipException = array of ANSSipException;
+  Arr2ANSSipException = array of Arr1ANSSipException;
+  Arr3ANSSipException = array of Arr2ANSSipException;
+
+  JUTimeZone = class;
+  Arr1JUTimeZone = array of JUTimeZone;
+  Arr2JUTimeZone = array of Arr1JUTimeZone;
+  Arr3JUTimeZone = array of Arr2JUTimeZone;
+
+  OAHMBasicHeaderValueParser = class;
+  Arr1OAHMBasicHeaderValueParser = array of OAHMBasicHeaderValueParser;
+  Arr2OAHMBasicHeaderValueParser = array of Arr1OAHMBasicHeaderValueParser;
+  Arr3OAHMBasicHeaderValueParser = array of Arr2OAHMBasicHeaderValueParser;
+
+  OAHCPConnRouteParamBean = class;
+  Arr1OAHCPConnRouteParamBean = array of OAHCPConnRouteParamBean;
+  Arr2OAHCPConnRouteParamBean = array of Arr1OAHCPConnRouteParamBean;
+  Arr3OAHCPConnRouteParamBean = array of Arr2OAHCPConnRouteParamBean;
+
+  ACRResources = class;
+  Arr1ACRResources = array of ACRResources;
+  Arr2ACRResources = array of Arr1ACRResources;
+  Arr3ACRResources = array of Arr2ACRResources;
+
+  OXSEAttributes2Impl = class;
+  Arr1OXSEAttributes2Impl = array of OXSEAttributes2Impl;
+  Arr2OXSEAttributes2Impl = array of Arr1OXSEAttributes2Impl;
+  Arr3OXSEAttributes2Impl = array of Arr2OXSEAttributes2Impl;
+
+  JNCAlreadyConnectedException = class;
+  Arr1JNCAlreadyConnectedException = array of JNCAlreadyConnectedException;
+  Arr2JNCAlreadyConnectedException = array of Arr1JNCAlreadyConnectedException;
+  Arr3JNCAlreadyConnectedException = array of Arr2JNCAlreadyConnectedException;
+
+  ADDrmSupportInfo = class;
+  Arr1ADDrmSupportInfo = array of ADDrmSupportInfo;
+  Arr2ADDrmSupportInfo = array of Arr1ADDrmSupportInfo;
+  Arr3ADDrmSupportInfo = array of Arr2ADDrmSupportInfo;
+
+  ATSelection = class;
+  Arr1ATSelection = array of ATSelection;
+  Arr2ATSelection = array of Arr1ATSelection;
+  Arr3ATSelection = array of Arr2ATSelection;
+
+  JUPPreferences = class;
+  Arr1JUPPreferences = array of JUPPreferences;
+  Arr2JUPPreferences = array of Arr1JUPPreferences;
+  Arr3JUPPreferences = array of Arr2JUPPreferences;
+
+  JXTTransformer = class;
+  Arr1JXTTransformer = array of JXTTransformer;
+  Arr2JXTTransformer = array of Arr1JXTTransformer;
+  Arr3JXTTransformer = array of Arr2JXTTransformer;
+
+  AGGesturePoint = class;
+  Arr1AGGesturePoint = array of AGGesturePoint;
+  Arr2AGGesturePoint = array of Arr1AGGesturePoint;
+  Arr3AGGesturePoint = array of Arr2AGGesturePoint;
+
+  ADSSQLiteAbortException = class;
+  Arr1ADSSQLiteAbortException = array of ADSSQLiteAbortException;
+  Arr2ADSSQLiteAbortException = array of Arr1ADSSQLiteAbortException;
+  Arr3ADSSQLiteAbortException = array of Arr2ADSSQLiteAbortException;
+
+  ACPActivityInfo = class;
+  Arr1ACPActivityInfo = array of ACPActivityInfo;
+  Arr2ACPActivityInfo = array of Arr1ACPActivityInfo;
+  Arr3ACPActivityInfo = array of Arr2ACPActivityInfo;
+
+  JNProtocolException = class;
+  Arr1JNProtocolException = array of JNProtocolException;
+  Arr2JNProtocolException = array of Arr1JNProtocolException;
+  Arr3JNProtocolException = array of Arr2JNProtocolException;
+
+  APContacts = class;
+  Arr1APContacts = array of APContacts;
+  Arr2APContacts = array of Arr1APContacts;
+  Arr3APContacts = array of Arr2APContacts;
+
+  JNDatagramSocket = class;
+  Arr1JNDatagramSocket = array of JNDatagramSocket;
+  Arr2JNDatagramSocket = array of Arr1JNDatagramSocket;
+  Arr3JNDatagramSocket = array of Arr2JNDatagramSocket;
+
+  JNCSelectionKey = class;
+  Arr1JNCSelectionKey = array of JNCSelectionKey;
+  Arr2JNCSelectionKey = array of Arr1JNCSelectionKey;
+  Arr3JNCSelectionKey = array of Arr2JNCSelectionKey;
+
+  ACActivityNotFoundException = class;
+  Arr1ACActivityNotFoundException = array of ACActivityNotFoundException;
+  Arr2ACActivityNotFoundException = array of Arr1ACActivityNotFoundException;
+  Arr3ACActivityNotFoundException = array of Arr2ACActivityNotFoundException;
+
+  ANWSupplicantState = class;
+  Arr1ANWSupplicantState = array of ANWSupplicantState;
+  Arr2ANWSupplicantState = array of Arr1ANWSupplicantState;
+  Arr3ANWSupplicantState = array of Arr2ANWSupplicantState;
+
+  JSSMGF1ParameterSpec = class;
+  Arr1JSSMGF1ParameterSpec = array of JSSMGF1ParameterSpec;
+  Arr2JSSMGF1ParameterSpec = array of Arr1JSSMGF1ParameterSpec;
+  Arr3JSSMGF1ParameterSpec = array of Arr2JSSMGF1ParameterSpec;
+
+  OAHMBasicLineParser = class;
+  Arr1OAHMBasicLineParser = array of OAHMBasicLineParser;
+  Arr2OAHMBasicLineParser = array of Arr1OAHMBasicLineParser;
+  Arr3OAHMBasicLineParser = array of Arr2OAHMBasicLineParser;
+
+  AAListActivity = class;
+  Arr1AAListActivity = array of AAListActivity;
+  Arr2AAListActivity = array of Arr1AAListActivity;
+  Arr3AAListActivity = array of Arr2AAListActivity;
+
+  ADSSQLiteCantOpenDatabaseException = class;
+  Arr1ADSSQLiteCantOpenDatabaseException = array of ADSSQLiteCantOpenDatabaseException;
+  Arr2ADSSQLiteCantOpenDatabaseException = array of Arr1ADSSQLiteCantOpenDatabaseException;
+  Arr3ADSSQLiteCantOpenDatabaseException = array of Arr2ADSSQLiteCantOpenDatabaseException;
+
+  ATSmsMessage = class;
+  Arr1ATSmsMessage = array of ATSmsMessage;
+  Arr2ATSmsMessage = array of Arr1ATSmsMessage;
+  Arr3ATSmsMessage = array of Arr2ATSmsMessage;
+
+  ATMQwertyKeyListener = class;
+  Arr1ATMQwertyKeyListener = array of ATMQwertyKeyListener;
+  Arr2ATMQwertyKeyListener = array of Arr1ATMQwertyKeyListener;
+  Arr3ATMQwertyKeyListener = array of Arr2ATMQwertyKeyListener;
+
+  ABBluetoothDevice = class;
+  Arr1ABBluetoothDevice = array of ABBluetoothDevice;
+  Arr2ABBluetoothDevice = array of Arr1ABBluetoothDevice;
+  Arr3ABBluetoothDevice = array of Arr2ABBluetoothDevice;
+
+  JIOptionalDataException = class;
+  Arr1JIOptionalDataException = array of JIOptionalDataException;
+  Arr2JIOptionalDataException = array of Arr1JIOptionalDataException;
+  Arr3JIOptionalDataException = array of Arr2JIOptionalDataException;
+
+  JUScanner = class;
+  Arr1JUScanner = array of JUScanner;
+  Arr2JUScanner = array of Arr1JUScanner;
+  Arr3JUScanner = array of Arr2JUScanner;
+
+  AVActionMode = class;
+  Arr1AVActionMode = array of AVActionMode;
+  Arr2AVActionMode = array of Arr1AVActionMode;
+  Arr3AVActionMode = array of Arr2AVActionMode;
+
+  ATFDateUtils = class;
+  Arr1ATFDateUtils = array of ATFDateUtils;
+  Arr2ATFDateUtils = array of Arr1ATFDateUtils;
+  Arr3ATFDateUtils = array of Arr2ATFDateUtils;
+
+  AULruCache = class;
+  Arr1AULruCache = array of AULruCache;
+  Arr2AULruCache = array of Arr1AULruCache;
+  Arr3AULruCache = array of Arr2AULruCache;
+
+  OXSHParserFactory = class;
+  Arr1OXSHParserFactory = array of OXSHParserFactory;
+  Arr2OXSHParserFactory = array of Arr1OXSHParserFactory;
+  Arr3OXSHParserFactory = array of Arr2OXSHParserFactory;
+
+  OAHICSingleClientConnManager = class;
+  Arr1OAHICSingleClientConnManager = array of OAHICSingleClientConnManager;
+  Arr2OAHICSingleClientConnManager = array of Arr1OAHICSingleClientConnManager;
+  Arr3OAHICSingleClientConnManager = array of Arr2OAHICSingleClientConnManager;
+
+  AAObjectAnimator = class;
+  Arr1AAObjectAnimator = array of AAObjectAnimator;
+  Arr2AAObjectAnimator = array of Arr1AAObjectAnimator;
+  Arr3AAObjectAnimator = array of Arr2AAObjectAnimator;
+
+  JNSocketFactory = class;
+  Arr1JNSocketFactory = array of JNSocketFactory;
+  Arr2JNSocketFactory = array of Arr1JNSocketFactory;
+  Arr3JNSocketFactory = array of Arr2JNSocketFactory;
+
+  APDialogPreference = class;
+  Arr1APDialogPreference = array of APDialogPreference;
+  Arr2APDialogPreference = array of Arr1APDialogPreference;
+  Arr3APDialogPreference = array of Arr2APDialogPreference;
+
+  JSAccessControlException = class;
+  Arr1JSAccessControlException = array of JSAccessControlException;
+  Arr2JSAccessControlException = array of Arr1JSAccessControlException;
+  Arr3JSAccessControlException = array of Arr2JSAccessControlException;
+
+  JNUnknownHostException = class;
+  Arr1JNUnknownHostException = array of JNUnknownHostException;
+  Arr2JNUnknownHostException = array of Arr1JNUnknownHostException;
+  Arr3JNUnknownHostException = array of Arr2JNUnknownHostException;
+
+  JIFileReader = class;
+  Arr1JIFileReader = array of JIFileReader;
+  Arr2JIFileReader = array of Arr1JIFileReader;
+  Arr3JIFileReader = array of Arr2JIFileReader;
+
+  JSSQLTransactionRollbackException = class;
+  Arr1JSSQLTransactionRollbackException = array of JSSQLTransactionRollbackException;
+  Arr2JSSQLTransactionRollbackException = array of Arr1JSSQLTransactionRollbackException;
+  Arr3JSSQLTransactionRollbackException = array of Arr2JSSQLTransactionRollbackException;
+
+  JUCAbstractExecutorService = class;
+  Arr1JUCAbstractExecutorService = array of JUCAbstractExecutorService;
+  Arr2JUCAbstractExecutorService = array of Arr1JUCAbstractExecutorService;
+  Arr3JUCAbstractExecutorService = array of Arr2JUCAbstractExecutorService;
+
+  ABBluetoothClass = class;
+  Arr1ABBluetoothClass = array of ABBluetoothClass;
+  Arr2ABBluetoothClass = array of Arr1ABBluetoothClass;
+  Arr3ABBluetoothClass = array of Arr2ABBluetoothClass;
+
+  AWVideoView = class;
+  Arr1AWVideoView = array of AWVideoView;
+  Arr2AWVideoView = array of Arr1AWVideoView;
+  Arr3AWVideoView = array of Arr2AWVideoView;
+
+  JUFormatFlagsConversionMismatchException = class;
+  Arr1JUFormatFlagsConversionMismatchException = array of JUFormatFlagsConversionMismatchException;
+  Arr2JUFormatFlagsConversionMismatchException = array of Arr1JUFormatFlagsConversionMismatchException;
+  Arr3JUFormatFlagsConversionMismatchException = array of Arr2JUFormatFlagsConversionMismatchException;
+
+  ATApplicationTestCase = class;
+  Arr1ATApplicationTestCase = array of ATApplicationTestCase;
+  Arr2ATApplicationTestCase = array of Arr1ATApplicationTestCase;
+  Arr3ATApplicationTestCase = array of Arr2ATApplicationTestCase;
+
+  JNAuthenticator = class;
+  Arr1JNAuthenticator = array of JNAuthenticator;
+  Arr2JNAuthenticator = array of Arr1JNAuthenticator;
+  Arr3JNAuthenticator = array of Arr2JNAuthenticator;
+
+  JSPolicySpi = class;
+  Arr1JSPolicySpi = array of JSPolicySpi;
+  Arr2JSPolicySpi = array of Arr1JSPolicySpi;
+  Arr3JSPolicySpi = array of Arr2JSPolicySpi;
+
+  JLRReflectPermission = class;
+  Arr1JLRReflectPermission = array of JLRReflectPermission;
+  Arr2JLRReflectPermission = array of Arr1JLRReflectPermission;
+  Arr3JLRReflectPermission = array of Arr2JLRReflectPermission;
+
+  ARProgramVertexFixedFunction = class;
+  Arr1ARProgramVertexFixedFunction = array of ARProgramVertexFixedFunction;
+  Arr2ARProgramVertexFixedFunction = array of Arr1ARProgramVertexFixedFunction;
+  Arr3ARProgramVertexFixedFunction = array of Arr2ARProgramVertexFixedFunction;
+
+  JCSPSource = class;
+  Arr1JCSPSource = array of JCSPSource;
+  Arr2JCSPSource = array of Arr1JCSPSource;
+  Arr3JCSPSource = array of Arr2JCSPSource;
+
+  AVViewPropertyAnimator = class;
+  Arr1AVViewPropertyAnimator = array of AVViewPropertyAnimator;
+  Arr2AVViewPropertyAnimator = array of Arr1AVViewPropertyAnimator;
+  Arr3AVViewPropertyAnimator = array of Arr2AVViewPropertyAnimator;
+
+  JUZGZIPOutputStream = class;
+  Arr1JUZGZIPOutputStream = array of JUZGZIPOutputStream;
+  Arr2JUZGZIPOutputStream = array of Arr1JUZGZIPOutputStream;
+  Arr3JUZGZIPOutputStream = array of Arr2JUZGZIPOutputStream;
+
+  ANWWifiInfo = class;
+  Arr1ANWWifiInfo = array of ANWWifiInfo;
+  Arr2ANWWifiInfo = array of Arr1ANWWifiInfo;
+  Arr3ANWWifiInfo = array of Arr2ANWWifiInfo;
+
+  JSPermissionCollection = class;
+  Arr1JSPermissionCollection = array of JSPermissionCollection;
+  Arr2JSPermissionCollection = array of Arr1JSPermissionCollection;
+  Arr3JSPermissionCollection = array of Arr2JSPermissionCollection;
+
+  ATSBulletSpan = class;
+  Arr1ATSBulletSpan = array of ATSBulletSpan;
+  Arr2ATSBulletSpan = array of Arr1ATSBulletSpan;
+  Arr3ATSBulletSpan = array of Arr2ATSBulletSpan;
+
+  JSSQLSyntaxErrorException = class;
+  Arr1JSSQLSyntaxErrorException = array of JSSQLSyntaxErrorException;
+  Arr2JSSQLSyntaxErrorException = array of Arr1JSSQLSyntaxErrorException;
+  Arr3JSSQLSyntaxErrorException = array of Arr2JSSQLSyntaxErrorException;
+
+  JSPolicy = class;
+  Arr1JSPolicy = array of JSPolicy;
+  Arr2JSPolicy = array of Arr1JSPolicy;
+  Arr3JSPolicy = array of Arr2JSPolicy;
+
+  JNSKeyManagerFactorySpi = class;
+  Arr1JNSKeyManagerFactorySpi = array of JNSKeyManagerFactorySpi;
+  Arr2JNSKeyManagerFactorySpi = array of Arr1JNSKeyManagerFactorySpi;
+  Arr3JNSKeyManagerFactorySpi = array of Arr2JNSKeyManagerFactorySpi;
+
+  AGDTransitionDrawable = class;
+  Arr1AGDTransitionDrawable = array of AGDTransitionDrawable;
+  Arr2AGDTransitionDrawable = array of Arr1AGDTransitionDrawable;
+  Arr3AGDTransitionDrawable = array of Arr2AGDTransitionDrawable;
+
+  OAHICBasicResponseHandler = class;
+  Arr1OAHICBasicResponseHandler = array of OAHICBasicResponseHandler;
+  Arr2OAHICBasicResponseHandler = array of Arr1OAHICBasicResponseHandler;
+  Arr3OAHICBasicResponseHandler = array of Arr2OAHICBasicResponseHandler;
+
+  JSAlgorithmParameterGenerator = class;
+  Arr1JSAlgorithmParameterGenerator = array of JSAlgorithmParameterGenerator;
+  Arr2JSAlgorithmParameterGenerator = array of Arr1JSAlgorithmParameterGenerator;
+  Arr3JSAlgorithmParameterGenerator = array of Arr2JSAlgorithmParameterGenerator;
+
+  AVTSpellCheckerInfo = class;
+  Arr1AVTSpellCheckerInfo = array of AVTSpellCheckerInfo;
+  Arr2AVTSpellCheckerInfo = array of Arr1AVTSpellCheckerInfo;
+  Arr3AVTSpellCheckerInfo = array of Arr2AVTSpellCheckerInfo;
+
+  AWSpace = class;
+  Arr1AWSpace = array of AWSpace;
+  Arr2AWSpace = array of Arr1AWSpace;
+  Arr3AWSpace = array of Arr2AWSpace;
+
+  JLSecurityException = class;
+  Arr1JLSecurityException = array of JLSecurityException;
+  Arr2JLSecurityException = array of Arr1JLSecurityException;
+  Arr3JLSecurityException = array of Arr2JLSecurityException;
+
+  JLNullPointerException = class;
+  Arr1JLNullPointerException = array of JLNullPointerException;
+  Arr2JLNullPointerException = array of Arr1JLNullPointerException;
+  Arr3JLNullPointerException = array of Arr2JLNullPointerException;
+
+  ARFileA3D = class;
+  Arr1ARFileA3D = array of ARFileA3D;
+  Arr2ARFileA3D = array of Arr1ARFileA3D;
+  Arr3ARFileA3D = array of Arr2ARFileA3D;
+
+  ADDrmInfo = class;
+  Arr1ADDrmInfo = array of ADDrmInfo;
+  Arr2ADDrmInfo = array of Arr1ADDrmInfo;
+  Arr3ADDrmInfo = array of Arr2ADDrmInfo;
+
+  JULLogManager = class;
+  Arr1JULLogManager = array of JULLogManager;
+  Arr2JULLogManager = array of Arr1JULLogManager;
+  Arr3JULLogManager = array of Arr2JULLogManager;
+
+  AAFragment = class;
+  Arr1AAFragment = array of AAFragment;
+  Arr2AAFragment = array of Arr1AAFragment;
+  Arr3AAFragment = array of Arr2AAFragment;
+
+  AWDatePicker = class;
+  Arr1AWDatePicker = array of AWDatePicker;
+  Arr2AWDatePicker = array of Arr1AWDatePicker;
+  Arr3AWDatePicker = array of Arr2AWDatePicker;
+
+  OAHCNonRepeatableRequestException = class;
+  Arr1OAHCNonRepeatableRequestException = array of OAHCNonRepeatableRequestException;
+  Arr2OAHCNonRepeatableRequestException = array of Arr1OAHCNonRepeatableRequestException;
+  Arr3OAHCNonRepeatableRequestException = array of Arr2OAHCNonRepeatableRequestException;
+
+  AGLightingColorFilter = class;
+  Arr1AGLightingColorFilter = array of AGLightingColorFilter;
+  Arr2AGLightingColorFilter = array of Arr1AGLightingColorFilter;
+  Arr3AGLightingColorFilter = array of Arr2AGLightingColorFilter;
+
+  AWHeaderViewListAdapter = class;
+  Arr1AWHeaderViewListAdapter = array of AWHeaderViewListAdapter;
+  Arr2AWHeaderViewListAdapter = array of Arr1AWHeaderViewListAdapter;
+  Arr3AWHeaderViewListAdapter = array of Arr2AWHeaderViewListAdapter;
+
+  AGPathMeasure = class;
+  Arr1AGPathMeasure = array of AGPathMeasure;
+  Arr2AGPathMeasure = array of Arr1AGPathMeasure;
+  Arr3AGPathMeasure = array of Arr2AGPathMeasure;
+
+  OAHICAbstractPoolEntry = class;
+  Arr1OAHICAbstractPoolEntry = array of OAHICAbstractPoolEntry;
+  Arr2OAHICAbstractPoolEntry = array of Arr1OAHICAbstractPoolEntry;
+  Arr3OAHICAbstractPoolEntry = array of Arr2OAHICAbstractPoolEntry;
+
+  ACContentQueryMap = class;
+  Arr1ACContentQueryMap = array of ACContentQueryMap;
+  Arr2ACContentQueryMap = array of Arr1ACContentQueryMap;
+  Arr3ACContentQueryMap = array of Arr2ACContentQueryMap;
+
+  JIPushbackInputStream = class;
+  Arr1JIPushbackInputStream = array of JIPushbackInputStream;
+  Arr2JIPushbackInputStream = array of Arr1JIPushbackInputStream;
+  Arr3JIPushbackInputStream = array of Arr2JIPushbackInputStream;
+
+  ANUrlQuerySanitizer = class;
+  Arr1ANUrlQuerySanitizer = array of ANUrlQuerySanitizer;
+  Arr2ANUrlQuerySanitizer = array of Arr1ANUrlQuerySanitizer;
+  Arr3ANUrlQuerySanitizer = array of Arr2ANUrlQuerySanitizer;
+
+  AVTSpellCheckerSession = class;
+  Arr1AVTSpellCheckerSession = array of AVTSpellCheckerSession;
+  Arr2AVTSpellCheckerSession = array of Arr1AVTSpellCheckerSession;
+  Arr3AVTSpellCheckerSession = array of Arr2AVTSpellCheckerSession;
+
+  JUPropertyResourceBundle = class;
+  Arr1JUPropertyResourceBundle = array of JUPropertyResourceBundle;
+  Arr2JUPropertyResourceBundle = array of Arr1JUPropertyResourceBundle;
+  Arr3JUPropertyResourceBundle = array of Arr2JUPropertyResourceBundle;
+
+  JUJJarEntry = class;
+  Arr1JUJJarEntry = array of JUJJarEntry;
+  Arr2JUJJarEntry = array of Arr1JUJJarEntry;
+  Arr3JUJJarEntry = array of Arr2JUJJarEntry;
+
+  OAHICLoggingSessionInputBuffer = class;
+  Arr1OAHICLoggingSessionInputBuffer = array of OAHICLoggingSessionInputBuffer;
+  Arr2OAHICLoggingSessionInputBuffer = array of Arr1OAHICLoggingSessionInputBuffer;
+  Arr3OAHICLoggingSessionInputBuffer = array of Arr2OAHICLoggingSessionInputBuffer;
+
+  OAHMBasicLineFormatter = class;
+  Arr1OAHMBasicLineFormatter = array of OAHMBasicLineFormatter;
+  Arr2OAHMBasicLineFormatter = array of Arr1OAHMBasicLineFormatter;
+  Arr3OAHMBasicLineFormatter = array of Arr2OAHMBasicLineFormatter;
+
+  ADSSQLiteDatatypeMismatchException = class;
+  Arr1ADSSQLiteDatatypeMismatchException = array of ADSSQLiteDatatypeMismatchException;
+  Arr2ADSSQLiteDatatypeMismatchException = array of Arr1ADSSQLiteDatatypeMismatchException;
+  Arr3ADSSQLiteDatatypeMismatchException = array of Arr2ADSSQLiteDatatypeMismatchException;
+
+  ATSUnderlineSpan = class;
+  Arr1ATSUnderlineSpan = array of ATSUnderlineSpan;
+  Arr2ATSUnderlineSpan = array of Arr1ATSUnderlineSpan;
+  Arr3ATSUnderlineSpan = array of Arr2ATSUnderlineSpan;
+
+  JLClassFormatError = class;
+  Arr1JLClassFormatError = array of JLClassFormatError;
+  Arr2JLClassFormatError = array of Arr1JLClassFormatError;
+  Arr3JLClassFormatError = array of Arr2JLClassFormatError;
+
+  OAHICRFC2965PortAttributeHandler = class;
+  Arr1OAHICRFC2965PortAttributeHandler = array of OAHICRFC2965PortAttributeHandler;
+  Arr2OAHICRFC2965PortAttributeHandler = array of Arr1OAHICRFC2965PortAttributeHandler;
+  Arr3OAHICRFC2965PortAttributeHandler = array of Arr2OAHICRFC2965PortAttributeHandler;
+
+  APSwitchPreference = class;
+  Arr1APSwitchPreference = array of APSwitchPreference;
+  Arr2APSwitchPreference = array of Arr1APSwitchPreference;
+  Arr3APSwitchPreference = array of Arr2APSwitchPreference;
+
+  OAHPHttpRequestExecutor = class;
+  Arr1OAHPHttpRequestExecutor = array of OAHPHttpRequestExecutor;
+  Arr2OAHPHttpRequestExecutor = array of Arr1OAHPHttpRequestExecutor;
+  Arr3OAHPHttpRequestExecutor = array of Arr2OAHPHttpRequestExecutor;
+
+  JUZDeflaterInputStream = class;
+  Arr1JUZDeflaterInputStream = array of JUZDeflaterInputStream;
+  Arr2JUZDeflaterInputStream = array of Arr1JUZDeflaterInputStream;
+  Arr3JUZDeflaterInputStream = array of Arr2JUZDeflaterInputStream;
+
+  JSCCertificateFactorySpi = class;
+  Arr1JSCCertificateFactorySpi = array of JSCCertificateFactorySpi;
+  Arr2JSCCertificateFactorySpi = array of Arr1JSCCertificateFactorySpi;
+  Arr3JSCCertificateFactorySpi = array of Arr2JSCCertificateFactorySpi;
+
+  AORecoverySystem = class;
+  Arr1AORecoverySystem = array of AORecoverySystem;
+  Arr2AORecoverySystem = array of Arr1AORecoverySystem;
+  Arr3AORecoverySystem = array of Arr2AORecoverySystem;
+
+  ARShort4 = class;
+  Arr1ARShort4 = array of ARShort4;
+  Arr2ARShort4 = array of Arr1ARShort4;
+  Arr3ARShort4 = array of Arr2ARShort4;
+
+  ARShort3 = class;
+  Arr1ARShort3 = array of ARShort3;
+  Arr2ARShort3 = array of Arr1ARShort3;
+  Arr3ARShort3 = array of Arr2ARShort3;
+
+  ARShort2 = class;
+  Arr1ARShort2 = array of ARShort2;
+  Arr2ARShort2 = array of Arr1ARShort2;
+  Arr3ARShort2 = array of Arr2ARShort2;
+
+  AWChronometer = class;
+  Arr1AWChronometer = array of AWChronometer;
+  Arr2AWChronometer = array of Arr1AWChronometer;
+  Arr3AWChronometer = array of Arr2AWChronometer;
+
+  ATAutoText = class;
+  Arr1ATAutoText = array of ATAutoText;
+  Arr2ATAutoText = array of Arr1ATAutoText;
+  Arr3ATAutoText = array of Arr2ATAutoText;
+
+  JLEnumConstantNotPresentException = class;
+  Arr1JLEnumConstantNotPresentException = array of JLEnumConstantNotPresentException;
+  Arr2JLEnumConstantNotPresentException = array of Arr1JLEnumConstantNotPresentException;
+  Arr3JLEnumConstantNotPresentException = array of Arr2JLEnumConstantNotPresentException;
+
+  AWGridView = class;
+  Arr1AWGridView = array of AWGridView;
+  Arr2AWGridView = array of Arr1AWGridView;
+  Arr3AWGridView = array of Arr2AWGridView;
+
+  ATViewAsserts = class;
+  Arr1ATViewAsserts = array of ATViewAsserts;
+  Arr2ATViewAsserts = array of Arr1ATViewAsserts;
+  Arr3ATViewAsserts = array of Arr2ATViewAsserts;
+
+  ANWPWifiP2pConfig = class;
+  Arr1ANWPWifiP2pConfig = array of ANWPWifiP2pConfig;
+  Arr2ANWPWifiP2pConfig = array of Arr1ANWPWifiP2pConfig;
+  Arr3ANWPWifiP2pConfig = array of Arr2ANWPWifiP2pConfig;
+
+  OAHIIAbstractMessageParser = class;
+  Arr1OAHIIAbstractMessageParser = array of OAHIIAbstractMessageParser;
+  Arr2OAHIIAbstractMessageParser = array of Arr1OAHIIAbstractMessageParser;
+  Arr3OAHIIAbstractMessageParser = array of Arr2OAHIIAbstractMessageParser;
+
+  AWAbsoluteLayout = class;
+  Arr1AWAbsoluteLayout = array of AWAbsoluteLayout;
+  Arr2AWAbsoluteLayout = array of Arr1AWAbsoluteLayout;
+  Arr3AWAbsoluteLayout = array of Arr2AWAbsoluteLayout;
+
+  AATimePickerDialog = class;
+  Arr1AATimePickerDialog = array of AATimePickerDialog;
+  Arr2AATimePickerDialog = array of Arr1AATimePickerDialog;
+  Arr3AATimePickerDialog = array of Arr2AATimePickerDialog;
+
+  OAHCPClientParamBean = class;
+  Arr1OAHCPClientParamBean = array of OAHCPClientParamBean;
+  Arr2OAHCPClientParamBean = array of Arr1OAHCPClientParamBean;
+  Arr3OAHCPClientParamBean = array of Arr2OAHCPClientParamBean;
+
+  JNConnectException = class;
+  Arr1JNConnectException = array of JNConnectException;
+  Arr2JNConnectException = array of Arr1JNConnectException;
+  Arr3JNConnectException = array of Arr2JNConnectException;
+
+  JURandom = class;
+  Arr1JURandom = array of JURandom;
+  Arr2JURandom = array of Arr1JURandom;
+  Arr3JURandom = array of Arr2JURandom;
+
+  AWRelativeLayout = class;
+  Arr1AWRelativeLayout = array of AWRelativeLayout;
+  Arr2AWRelativeLayout = array of Arr1AWRelativeLayout;
+  Arr3AWRelativeLayout = array of Arr2AWRelativeLayout;
+
+  JUZZipFile = class;
+  Arr1JUZZipFile = array of JUZZipFile;
+  Arr2JUZZipFile = array of Arr1JUZZipFile;
+  Arr3JUZZipFile = array of Arr2JUZZipFile;
+
+  AVOrientationListener = class;
+  Arr1AVOrientationListener = array of AVOrientationListener;
+  Arr2AVOrientationListener = array of Arr1AVOrientationListener;
+  Arr3AVOrientationListener = array of Arr2AVOrientationListener;
+
+  OAHCPCookieSpecParamBean = class;
+  Arr1OAHCPCookieSpecParamBean = array of OAHCPCookieSpecParamBean;
+  Arr2OAHCPCookieSpecParamBean = array of Arr1OAHCPCookieSpecParamBean;
+  Arr3OAHCPCookieSpecParamBean = array of Arr2OAHCPCookieSpecParamBean;
+
+  AMMtpStorageInfo = class;
+  Arr1AMMtpStorageInfo = array of AMMtpStorageInfo;
+  Arr2AMMtpStorageInfo = array of Arr1AMMtpStorageInfo;
+  Arr3AMMtpStorageInfo = array of Arr2AMMtpStorageInfo;
+
+  JUNoSuchElementException = class;
+  Arr1JUNoSuchElementException = array of JUNoSuchElementException;
+  Arr2JUNoSuchElementException = array of Arr1JUNoSuchElementException;
+  Arr3JUNoSuchElementException = array of Arr2JUNoSuchElementException;
+
+  AUNoSuchPropertyException = class;
+  Arr1AUNoSuchPropertyException = array of AUNoSuchPropertyException;
+  Arr2AUNoSuchPropertyException = array of Arr1AUNoSuchPropertyException;
+  Arr3AUNoSuchPropertyException = array of Arr2AUNoSuchPropertyException;
+
+  OAHAPAuthParams = class;
+  Arr1OAHAPAuthParams = array of OAHAPAuthParams;
+  Arr2OAHAPAuthParams = array of Arr1OAHAPAuthParams;
+  Arr3OAHAPAuthParams = array of Arr2OAHAPAuthParams;
+
+  JUCurrency = class;
+  Arr1JUCurrency = array of JUCurrency;
+  Arr2JUCurrency = array of Arr1JUCurrency;
+  Arr3JUCurrency = array of Arr2JUCurrency;
+
+  OAHANTCredentials = class;
+  Arr1OAHANTCredentials = array of OAHANTCredentials;
+  Arr2OAHANTCredentials = array of Arr1OAHANTCredentials;
+  Arr3OAHANTCredentials = array of Arr2OAHANTCredentials;
+
+  JLStrictMath = class;
+  Arr1JLStrictMath = array of JLStrictMath;
+  Arr2JLStrictMath = array of Arr1JLStrictMath;
+  Arr3JLStrictMath = array of Arr2JLStrictMath;
+
+  OAHHttpVersion = class;
+  Arr1OAHHttpVersion = array of OAHHttpVersion;
+  Arr2OAHHttpVersion = array of Arr1OAHHttpVersion;
+  Arr3OAHHttpVersion = array of Arr2OAHHttpVersion;
+
+  AGDSRoundRectShape = class;
+  Arr1AGDSRoundRectShape = array of AGDSRoundRectShape;
+  Arr2AGDSRoundRectShape = array of Arr1AGDSRoundRectShape;
+  Arr3AGDSRoundRectShape = array of Arr2AGDSRoundRectShape;
+
+  AOPatternMatcher = class;
+  Arr1AOPatternMatcher = array of AOPatternMatcher;
+  Arr2AOPatternMatcher = array of Arr1AOPatternMatcher;
+  Arr3AOPatternMatcher = array of Arr2AOPatternMatcher;
+
+  AANetworkErrorException = class;
+  Arr1AANetworkErrorException = array of AANetworkErrorException;
+  Arr2AANetworkErrorException = array of Arr1AANetworkErrorException;
+  Arr3AANetworkErrorException = array of Arr2AANetworkErrorException;
+
+  ATMMockApplication = class;
+  Arr1ATMMockApplication = array of ATMMockApplication;
+  Arr2ATMMockApplication = array of Arr1ATMMockApplication;
+  Arr3ATMMockApplication = array of Arr2ATMMockApplication;
+
+  ARAllocationAdapter = class;
+  Arr1ARAllocationAdapter = array of ARAllocationAdapter;
+  Arr2ARAllocationAdapter = array of Arr1ARAllocationAdapter;
+  Arr3ARAllocationAdapter = array of Arr2ARAllocationAdapter;
+
+  JIObjectStreamException = class;
+  Arr1JIObjectStreamException = array of JIObjectStreamException;
+  Arr2JIObjectStreamException = array of Arr1JIObjectStreamException;
+  Arr3JIObjectStreamException = array of Arr2JIObjectStreamException;
+
+  JLVoid = class;
+  Arr1JLVoid = array of JLVoid;
+  Arr2JLVoid = array of Arr1JLVoid;
+  Arr3JLVoid = array of Arr2JLVoid;
+
+  JNUnknownServiceException = class;
+  Arr1JNUnknownServiceException = array of JNUnknownServiceException;
+  Arr2JNUnknownServiceException = array of Arr1JNUnknownServiceException;
+  Arr3JNUnknownServiceException = array of Arr2JNUnknownServiceException;
+
+  AWImageButton = class;
+  Arr1AWImageButton = array of AWImageButton;
+  Arr2AWImageButton = array of Arr1AWImageButton;
+  Arr3AWImageButton = array of Arr2AWImageButton;
+
+  JBPropertyChangeSupport = class;
+  Arr1JBPropertyChangeSupport = array of JBPropertyChangeSupport;
+  Arr2JBPropertyChangeSupport = array of Arr1JBPropertyChangeSupport;
+  Arr3JBPropertyChangeSupport = array of Arr2JBPropertyChangeSupport;
+
+  JSSDSAParameterSpec = class;
+  Arr1JSSDSAParameterSpec = array of JSSDSAParameterSpec;
+  Arr2JSSDSAParameterSpec = array of Arr1JSSDSAParameterSpec;
+  Arr3JSSDSAParameterSpec = array of Arr2JSSDSAParameterSpec;
+
+  ATSTestMethod = class;
+  Arr1ATSTestMethod = array of ATSTestMethod;
+  Arr2ATSTestMethod = array of Arr1ATSTestMethod;
+  Arr3ATSTestMethod = array of Arr2ATSTestMethod;
+
+  ATMMockContentResolver = class;
+  Arr1ATMMockContentResolver = array of ATMMockContentResolver;
+  Arr2ATMMockContentResolver = array of Arr1ATMMockContentResolver;
+  Arr3ATMMockContentResolver = array of Arr2ATMMockContentResolver;
+
+  JUServiceLoader = class;
+  Arr1JUServiceLoader = array of JUServiceLoader;
+  Arr2JUServiceLoader = array of Arr1JUServiceLoader;
+  Arr3JUServiceLoader = array of Arr2JUServiceLoader;
+
+  AUBase64InputStream = class;
+  Arr1AUBase64InputStream = array of AUBase64InputStream;
+  Arr2AUBase64InputStream = array of Arr1AUBase64InputStream;
+  Arr3AUBase64InputStream = array of Arr2AUBase64InputStream;
+
+  AGBitmapFactory = class;
+  Arr1AGBitmapFactory = array of AGBitmapFactory;
+  Arr2AGBitmapFactory = array of Arr1AGBitmapFactory;
+  Arr3AGBitmapFactory = array of Arr2AGBitmapFactory;
+
+  APCallLog = class;
+  Arr1APCallLog = array of APCallLog;
+  Arr2APCallLog = array of Arr1APCallLog;
+  Arr3APCallLog = array of Arr2APCallLog;
+
+  AVIInputMethodSubtype = class;
+  Arr1AVIInputMethodSubtype = array of AVIInputMethodSubtype;
+  Arr2AVIInputMethodSubtype = array of Arr1AVIInputMethodSubtype;
+  Arr3AVIInputMethodSubtype = array of Arr2AVIInputMethodSubtype;
+
+  JXXXPathFunctionException = class;
+  Arr1JXXXPathFunctionException = array of JXXXPathFunctionException;
+  Arr2JXXXPathFunctionException = array of Arr1JXXXPathFunctionException;
+  Arr3JXXXPathFunctionException = array of Arr2JXXXPathFunctionException;
+
+  AADownloadManager = class;
+  Arr1AADownloadManager = array of AADownloadManager;
+  Arr2AADownloadManager = array of Arr1AADownloadManager;
+  Arr3AADownloadManager = array of Arr2AADownloadManager;
+
+  AOGLU = class;
+  Arr1AOGLU = array of AOGLU;
+  Arr2AOGLU = array of Arr1AOGLU;
+  Arr3AOGLU = array of Arr2AOGLU;
+
+  OAHICRFC2109Spec = class;
+  Arr1OAHICRFC2109Spec = array of OAHICRFC2109Spec;
+  Arr2OAHICRFC2109Spec = array of Arr1OAHICRFC2109Spec;
+  Arr3OAHICRFC2109Spec = array of Arr2OAHICRFC2109Spec;
+
+  JUHashSet = class;
+  Arr1JUHashSet = array of JUHashSet;
+  Arr2JUHashSet = array of Arr1JUHashSet;
+  Arr3JUHashSet = array of Arr2JUHashSet;
+
+  JUCConcurrentHashMap = class;
+  Arr1JUCConcurrentHashMap = array of JUCConcurrentHashMap;
+  Arr2JUCConcurrentHashMap = array of Arr1JUCConcurrentHashMap;
+  Arr3JUCConcurrentHashMap = array of Arr2JUCConcurrentHashMap;
+
+  JUZDataFormatException = class;
+  Arr1JUZDataFormatException = array of JUZDataFormatException;
+  Arr2JUZDataFormatException = array of Arr1JUZDataFormatException;
+  Arr3JUZDataFormatException = array of Arr2JUZDataFormatException;
+
+  ANHAndroidHttpClient = class;
+  Arr1ANHAndroidHttpClient = array of ANHAndroidHttpClient;
+  Arr2ANHAndroidHttpClient = array of Arr1ANHAndroidHttpClient;
+  Arr3ANHAndroidHttpClient = array of Arr2ANHAndroidHttpClient;
+
+  AAAccountManager = class;
+  Arr1AAAccountManager = array of AAAccountManager;
+  Arr2AAAccountManager = array of Arr1AAAccountManager;
+  Arr3AAAccountManager = array of Arr2AAAccountManager;
+
+  OAHICAbstractAuthenticationHandler = class;
+  Arr1OAHICAbstractAuthenticationHandler = array of OAHICAbstractAuthenticationHandler;
+  Arr2OAHICAbstractAuthenticationHandler = array of Arr1OAHICAbstractAuthenticationHandler;
+  Arr3OAHICAbstractAuthenticationHandler = array of Arr2OAHICAbstractAuthenticationHandler;
+
+  JUFormatterClosedException = class;
+  Arr1JUFormatterClosedException = array of JUFormatterClosedException;
+  Arr2JUFormatterClosedException = array of Arr1JUFormatterClosedException;
+  Arr3JUFormatterClosedException = array of Arr2JUFormatterClosedException;
+
+  AWEdgeEffect = class;
+  Arr1AWEdgeEffect = array of AWEdgeEffect;
+  Arr2AWEdgeEffect = array of Arr1AWEdgeEffect;
+  Arr3AWEdgeEffect = array of Arr2AWEdgeEffect;
+
+  JCSDESKeySpec = class;
+  Arr1JCSDESKeySpec = array of JCSDESKeySpec;
+  Arr2JCSDESKeySpec = array of Arr1JCSDESKeySpec;
+  Arr3JCSDESKeySpec = array of Arr2JCSDESKeySpec;
+
+  JUEventObject = class;
+  Arr1JUEventObject = array of JUEventObject;
+  Arr2JUEventObject = array of Arr1JUEventObject;
+  Arr3JUEventObject = array of Arr2JUEventObject;
+
+  JNSSSLContextSpi = class;
+  Arr1JNSSSLContextSpi = array of JNSSSLContextSpi;
+  Arr2JNSSSLContextSpi = array of Arr1JNSSSLContextSpi;
+  Arr3JNSSSLContextSpi = array of Arr2JNSSSLContextSpi;
+
+  ARProgramVertex = class;
+  Arr1ARProgramVertex = array of ARProgramVertex;
+  Arr2ARProgramVertex = array of Arr1ARProgramVertex;
+  Arr3ARProgramVertex = array of Arr2ARProgramVertex;
+
+  ATSCharacterStyle = class;
+  Arr1ATSCharacterStyle = array of ATSCharacterStyle;
+  Arr2ATSCharacterStyle = array of Arr1ATSCharacterStyle;
+  Arr3ATSCharacterStyle = array of Arr2ATSCharacterStyle;
+
+  AWJsResult = class;
+  Arr1AWJsResult = array of AWJsResult;
+  Arr2AWJsResult = array of Arr1AWJsResult;
+  Arr3AWJsResult = array of Arr2AWJsResult;
+
+  AAAnimatorListenerAdapter = class;
+  Arr1AAAnimatorListenerAdapter = array of AAAnimatorListenerAdapter;
+  Arr2AAAnimatorListenerAdapter = array of Arr1AAAnimatorListenerAdapter;
+  Arr3AAAnimatorListenerAdapter = array of Arr2AAAnimatorListenerAdapter;
+
+  JNSocketPermission = class;
+  Arr1JNSocketPermission = array of JNSocketPermission;
+  Arr2JNSocketPermission = array of Arr1JNSocketPermission;
+  Arr3JNSocketPermission = array of Arr2JNSocketPermission;
+
+  AVOrientationEventListener = class;
+  Arr1AVOrientationEventListener = array of AVOrientationEventListener;
+  Arr2AVOrientationEventListener = array of Arr1AVOrientationEventListener;
+  Arr3AVOrientationEventListener = array of Arr2AVOrientationEventListener;
+
+  AAPendingIntent = class;
+  Arr1AAPendingIntent = array of AAPendingIntent;
+  Arr2AAPendingIntent = array of Arr1AAPendingIntent;
+  Arr3AAPendingIntent = array of Arr2AAPendingIntent;
+
+  OAHIDefaultHttpRequestFactory = class;
+  Arr1OAHIDefaultHttpRequestFactory = array of OAHIDefaultHttpRequestFactory;
+  Arr2OAHIDefaultHttpRequestFactory = array of Arr1OAHIDefaultHttpRequestFactory;
+  Arr3OAHIDefaultHttpRequestFactory = array of Arr2OAHIDefaultHttpRequestFactory;
+
+  OAHIDefaultHttpResponseFactory = class;
+  Arr1OAHIDefaultHttpResponseFactory = array of OAHIDefaultHttpResponseFactory;
+  Arr2OAHIDefaultHttpResponseFactory = array of Arr1OAHIDefaultHttpResponseFactory;
+  Arr3OAHIDefaultHttpResponseFactory = array of Arr2OAHIDefaultHttpResponseFactory;
+
+  OAHICDefaultRequestDirector = class;
+  Arr1OAHICDefaultRequestDirector = array of OAHICDefaultRequestDirector;
+  Arr2OAHICDefaultRequestDirector = array of Arr1OAHICDefaultRequestDirector;
+  Arr3OAHICDefaultRequestDirector = array of Arr2OAHICDefaultRequestDirector;
+
+  JLAbstractMethodError = class;
+  Arr1JLAbstractMethodError = array of JLAbstractMethodError;
+  Arr2JLAbstractMethodError = array of Arr1JLAbstractMethodError;
+  Arr3JLAbstractMethodError = array of Arr2JLAbstractMethodError;
+
+  ARRenderScript = class;
+  Arr1ARRenderScript = array of ARRenderScript;
+  Arr2ARRenderScript = array of Arr1ARRenderScript;
+  Arr3ARRenderScript = array of Arr2ARRenderScript;
+
+  JLArrayStoreException = class;
+  Arr1JLArrayStoreException = array of JLArrayStoreException;
+  Arr2JLArrayStoreException = array of Arr1JLArrayStoreException;
+  Arr3JLArrayStoreException = array of Arr2JLArrayStoreException;
+
+  AABFileBackupHelper = class;
+  Arr1AABFileBackupHelper = array of AABFileBackupHelper;
+  Arr2AABFileBackupHelper = array of Arr1AABFileBackupHelper;
+  Arr3AABFileBackupHelper = array of Arr2AABFileBackupHelper;
+
+  AMEEffectContext = class;
+  Arr1AMEEffectContext = array of AMEEffectContext;
+  Arr2AMEEffectContext = array of Arr1AMEEffectContext;
+  Arr3AMEEffectContext = array of Arr2AMEEffectContext;
+
+  OAHCRHttpRoute = class;
+  Arr1OAHCRHttpRoute = array of OAHCRHttpRoute;
+  Arr2OAHCRHttpRoute = array of Arr1OAHCRHttpRoute;
+  Arr3OAHCRHttpRoute = array of Arr2OAHCRHttpRoute;
+
+  JUPPreferenceChangeEvent = class;
+  Arr1JUPPreferenceChangeEvent = array of JUPPreferenceChangeEvent;
+  Arr2JUPPreferenceChangeEvent = array of Arr1JUPPreferenceChangeEvent;
+  Arr3JUPPreferenceChangeEvent = array of Arr2JUPPreferenceChangeEvent;
+
+  JUPriorityQueue = class;
+  Arr1JUPriorityQueue = array of JUPriorityQueue;
+  Arr2JUPriorityQueue = array of Arr1JUPriorityQueue;
+  Arr3JUPriorityQueue = array of Arr2JUPriorityQueue;
+
+  JNSecureCacheResponse = class;
+  Arr1JNSecureCacheResponse = array of JNSecureCacheResponse;
+  Arr2JNSecureCacheResponse = array of Arr1JNSecureCacheResponse;
+  Arr3JNSecureCacheResponse = array of Arr2JNSecureCacheResponse;
+
+  AUJsonReader = class;
+  Arr1AUJsonReader = array of AUJsonReader;
+  Arr2AUJsonReader = array of Arr1AUJsonReader;
+  Arr3AUJsonReader = array of Arr2AUJsonReader;
+
+  AOVisibility = class;
+  Arr1AOVisibility = array of AOVisibility;
+  Arr2AOVisibility = array of Arr1AOVisibility;
+  Arr3AOVisibility = array of Arr2AOVisibility;
+
+  JXDDatatypeConstants = class;
+  Arr1JXDDatatypeConstants = array of JXDDatatypeConstants;
+  Arr2JXDDatatypeConstants = array of Arr1JXDDatatypeConstants;
+  Arr3JXDDatatypeConstants = array of Arr2JXDDatatypeConstants;
+
+  ACLoader = class;
+  Arr1ACLoader = array of ACLoader;
+  Arr2ACLoader = array of Arr1ACLoader;
+  Arr3ACLoader = array of Arr2ACLoader;
+
+  AWViewAnimator = class;
+  Arr1AWViewAnimator = array of AWViewAnimator;
+  Arr2AWViewAnimator = array of Arr1AWViewAnimator;
+  Arr3AWViewAnimator = array of Arr2AWViewAnimator;
+
+  JSSQLTransientException = class;
+  Arr1JSSQLTransientException = array of JSSQLTransientException;
+  Arr2JSSQLTransientException = array of Arr1JSSQLTransientException;
+  Arr3JSSQLTransientException = array of Arr2JSSQLTransientException;
+
+  ASTSynthesisRequest = class;
+  Arr1ASTSynthesisRequest = array of ASTSynthesisRequest;
+  Arr2ASTSynthesisRequest = array of Arr1ASTSynthesisRequest;
+  Arr3ASTSynthesisRequest = array of Arr2ASTSynthesisRequest;
+
+  ADMatrixCursor = class;
+  Arr1ADMatrixCursor = array of ADMatrixCursor;
+  Arr2ADMatrixCursor = array of Arr1ADMatrixCursor;
+  Arr3ADMatrixCursor = array of Arr2ADMatrixCursor;
+
+  ABBluetoothHealth = class;
+  Arr1ABBluetoothHealth = array of ABBluetoothHealth;
+  Arr2ABBluetoothHealth = array of Arr1ABBluetoothHealth;
+  Arr3ABBluetoothHealth = array of Arr2ABBluetoothHealth;
+
+  AGPorterDuff = class;
+  Arr1AGPorterDuff = array of AGPorterDuff;
+  Arr2AGPorterDuff = array of Arr1AGPorterDuff;
+  Arr3AGPorterDuff = array of Arr2AGPorterDuff;
+
+  JUCAAtomicStampedReference = class;
+  Arr1JUCAAtomicStampedReference = array of JUCAAtomicStampedReference;
+  Arr2JUCAAtomicStampedReference = array of Arr1JUCAAtomicStampedReference;
+  Arr3JUCAAtomicStampedReference = array of Arr2JUCAAtomicStampedReference;
+
+  JNProxySelector = class;
+  Arr1JNProxySelector = array of JNProxySelector;
+  Arr2JNProxySelector = array of Arr1JNProxySelector;
+  Arr3JNProxySelector = array of Arr2JNProxySelector;
+
+  JFTestFailure = class;
+  Arr1JFTestFailure = array of JFTestFailure;
+  Arr2JFTestFailure = array of Arr1JFTestFailure;
+  Arr3JFTestFailure = array of Arr2JFTestFailure;
+
+  JNSSSLSessionBindingEvent = class;
+  Arr1JNSSSLSessionBindingEvent = array of JNSSSLSessionBindingEvent;
+  Arr2JNSSSLSessionBindingEvent = array of Arr1JNSSSLSessionBindingEvent;
+  Arr3JNSSSLSessionBindingEvent = array of Arr2JNSSSLSessionBindingEvent;
+
+  AAAccount = class;
+  Arr1AAAccount = array of AAAccount;
+  Arr2AAAccount = array of Arr1AAAccount;
+  Arr3AAAccount = array of Arr2AAAccount;
+
+  JSKeyPairGenerator = class;
+  Arr1JSKeyPairGenerator = array of JSKeyPairGenerator;
+  Arr2JSKeyPairGenerator = array of Arr1JSKeyPairGenerator;
+  Arr3JSKeyPairGenerator = array of Arr2JSKeyPairGenerator;
+
+  OAHPResponseDate = class;
+  Arr1OAHPResponseDate = array of OAHPResponseDate;
+  Arr2OAHPResponseDate = array of Arr1OAHPResponseDate;
+  Arr3OAHPResponseDate = array of Arr2OAHPResponseDate;
+
+  JIStreamCorruptedException = class;
+  Arr1JIStreamCorruptedException = array of JIStreamCorruptedException;
+  Arr2JIStreamCorruptedException = array of Arr1JIStreamCorruptedException;
+  Arr3JIStreamCorruptedException = array of Arr2JIStreamCorruptedException;
+
+  AMMediaPlayer = class;
+  Arr1AMMediaPlayer = array of AMMediaPlayer;
+  Arr2AMMediaPlayer = array of Arr1AMMediaPlayer;
+  Arr3AMMediaPlayer = array of Arr2AMMediaPlayer;
+
+  JSSecureClassLoader = class;
+  Arr1JSSecureClassLoader = array of JSSecureClassLoader;
+  Arr2JSSecureClassLoader = array of Arr1JSSecureClassLoader;
+  Arr3JSSecureClassLoader = array of Arr2JSSecureClassLoader;
+
+  ATMScrollingMovementMethod = class;
+  Arr1ATMScrollingMovementMethod = array of ATMScrollingMovementMethod;
+  Arr2ATMScrollingMovementMethod = array of Arr1ATMScrollingMovementMethod;
+  Arr3ATMScrollingMovementMethod = array of Arr2ATMScrollingMovementMethod;
+
+  ADDrmStore = class;
+  Arr1ADDrmStore = array of ADDrmStore;
+  Arr2ADDrmStore = array of Arr1ADDrmStore;
+  Arr3ADDrmStore = array of Arr2ADDrmStore;
+
+  AWTextView = class;
+  Arr1AWTextView = array of AWTextView;
+  Arr2AWTextView = array of Arr1AWTextView;
+  Arr3AWTextView = array of Arr2AWTextView;
+
+  JUDate = class;
+  Arr1JUDate = array of JUDate;
+  Arr2JUDate = array of Arr1JUDate;
+  Arr3JUDate = array of Arr2JUDate;
+
+  JCSOAEPParameterSpec = class;
+  Arr1JCSOAEPParameterSpec = array of JCSOAEPParameterSpec;
+  Arr2JCSOAEPParameterSpec = array of Arr1JCSOAEPParameterSpec;
+  Arr3JCSOAEPParameterSpec = array of Arr2JCSOAEPParameterSpec;
+
+  AOMatrix = class;
+  Arr1AOMatrix = array of AOMatrix;
+  Arr2AOMatrix = array of Arr1AOMatrix;
+  Arr3AOMatrix = array of Arr2AOMatrix;
+
+  JxSCCertificateExpiredException = class;
+  Arr1JxSCCertificateExpiredException = array of JxSCCertificateExpiredException;
+  Arr2JxSCCertificateExpiredException = array of Arr1JxSCCertificateExpiredException;
+  Arr3JxSCCertificateExpiredException = array of Arr2JxSCCertificateExpiredException;
+
+  JUArrayDeque = class;
+  Arr1JUArrayDeque = array of JUArrayDeque;
+  Arr2JUArrayDeque = array of Arr1JUArrayDeque;
+  Arr3JUArrayDeque = array of Arr2JUArrayDeque;
+
+  AWRatingBar = class;
+  Arr1AWRatingBar = array of AWRatingBar;
+  Arr2AWRatingBar = array of Arr1AWRatingBar;
+  Arr3AWRatingBar = array of Arr2AWRatingBar;
+
+  APContactsContract = class;
+  Arr1APContactsContract = array of APContactsContract;
+  Arr2APContactsContract = array of Arr1APContactsContract;
+  Arr3APContactsContract = array of Arr2APContactsContract;
+
+  JRVersion = class;
+  Arr1JRVersion = array of JRVersion;
+  Arr2JRVersion = array of Arr1JRVersion;
+  Arr3JRVersion = array of Arr2JRVersion;
+
+  ACPPackageStats = class;
+  Arr1ACPPackageStats = array of ACPPackageStats;
+  Arr2ACPPackageStats = array of Arr1ACPPackageStats;
+  Arr3ACPPackageStats = array of Arr2ACPPackageStats;
+
+  JNCPipe = class;
+  Arr1JNCPipe = array of JNCPipe;
+  Arr2JNCPipe = array of Arr1JNCPipe;
+  Arr3JNCPipe = array of Arr2JNCPipe;
+
+  JNReadOnlyBufferException = class;
+  Arr1JNReadOnlyBufferException = array of JNReadOnlyBufferException;
+  Arr2JNReadOnlyBufferException = array of Arr1JNReadOnlyBufferException;
+  Arr3JNReadOnlyBufferException = array of Arr2JNReadOnlyBufferException;
+
+  AAApplicationErrorReport = class;
+  Arr1AAApplicationErrorReport = array of AAApplicationErrorReport;
+  Arr2AAApplicationErrorReport = array of Arr1AAApplicationErrorReport;
+  Arr3AAApplicationErrorReport = array of Arr2AAApplicationErrorReport;
+
+  JUCSynchronousQueue = class;
+  Arr1JUCSynchronousQueue = array of JUCSynchronousQueue;
+  Arr2JUCSynchronousQueue = array of Arr1JUCSynchronousQueue;
+  Arr3JUCSynchronousQueue = array of Arr2JUCSynchronousQueue;
+
+  ADDefaultDatabaseErrorHandler = class;
+  Arr1ADDefaultDatabaseErrorHandler = array of ADDefaultDatabaseErrorHandler;
+  Arr2ADDefaultDatabaseErrorHandler = array of Arr1ADDefaultDatabaseErrorHandler;
+  Arr3ADDefaultDatabaseErrorHandler = array of Arr2ADDefaultDatabaseErrorHandler;
+
+  ATActivityInstrumentationTestCase2 = class;
+  Arr1ATActivityInstrumentationTestCase2 = array of ATActivityInstrumentationTestCase2;
+  Arr2ATActivityInstrumentationTestCase2 = array of Arr1ATActivityInstrumentationTestCase2;
+  Arr3ATActivityInstrumentationTestCase2 = array of Arr2ATActivityInstrumentationTestCase2;
+
+  JTMessageFormat = class;
+  Arr1JTMessageFormat = array of JTMessageFormat;
+  Arr2JTMessageFormat = array of Arr1JTMessageFormat;
+  Arr3JTMessageFormat = array of Arr2JTMessageFormat;
+
+  ATPhoneStateListener = class;
+  Arr1ATPhoneStateListener = array of ATPhoneStateListener;
+  Arr2ATPhoneStateListener = array of Arr1ATPhoneStateListener;
+  Arr3ATPhoneStateListener = array of Arr2ATPhoneStateListener;
+
+  AMABassBoost = class;
+  Arr1AMABassBoost = array of AMABassBoost;
+  Arr2AMABassBoost = array of Arr1AMABassBoost;
+  Arr3AMABassBoost = array of Arr2AMABassBoost;
+
+  AGCornerPathEffect = class;
+  Arr1AGCornerPathEffect = array of AGCornerPathEffect;
+  Arr2AGCornerPathEffect = array of Arr1AGCornerPathEffect;
+  Arr3AGCornerPathEffect = array of Arr2AGCornerPathEffect;
+
+  JUCAAtomicIntegerArray = class;
+  Arr1JUCAAtomicIntegerArray = array of JUCAAtomicIntegerArray;
+  Arr2JUCAAtomicIntegerArray = array of Arr1JUCAAtomicIntegerArray;
+  Arr3JUCAAtomicIntegerArray = array of Arr2JUCAAtomicIntegerArray;
+
+  OXSHandlerBase = class;
+  Arr1OXSHandlerBase = array of OXSHandlerBase;
+  Arr2OXSHandlerBase = array of Arr1OXSHandlerBase;
+  Arr3OXSHandlerBase = array of Arr2OXSHandlerBase;
+
+  ADSSQLiteOutOfMemoryException = class;
+  Arr1ADSSQLiteOutOfMemoryException = array of ADSSQLiteOutOfMemoryException;
+  Arr2ADSSQLiteOutOfMemoryException = array of Arr1ADSSQLiteOutOfMemoryException;
+  Arr3ADSSQLiteOutOfMemoryException = array of Arr2ADSSQLiteOutOfMemoryException;
+
+  AGDPaintDrawable = class;
+  Arr1AGDPaintDrawable = array of AGDPaintDrawable;
+  Arr2AGDPaintDrawable = array of Arr1AGDPaintDrawable;
+  Arr3AGDPaintDrawable = array of Arr2AGDPaintDrawable;
+
+  JIStringReader = class;
+  Arr1JIStringReader = array of JIStringReader;
+  Arr2JIStringReader = array of Arr1JIStringReader;
+  Arr3JIStringReader = array of Arr2JIStringReader;
+
+  AUEventLogTags = class;
+  Arr1AUEventLogTags = array of AUEventLogTags;
+  Arr2AUEventLogTags = array of Arr1AUEventLogTags;
+  Arr3AUEventLogTags = array of Arr2AUEventLogTags;
+
+  OAHICBasicClientCookie2 = class;
+  Arr1OAHICBasicClientCookie2 = array of OAHICBasicClientCookie2;
+  Arr2OAHICBasicClientCookie2 = array of Arr1OAHICBasicClientCookie2;
+  Arr3OAHICBasicClientCookie2 = array of Arr2OAHICBasicClientCookie2;
+
+  ADDrmErrorEvent = class;
+  Arr1ADDrmErrorEvent = array of ADDrmErrorEvent;
+  Arr2ADDrmErrorEvent = array of Arr1ADDrmErrorEvent;
+  Arr3ADDrmErrorEvent = array of Arr2ADDrmErrorEvent;
+
+  AVTSpellCheckerSubtype = class;
+  Arr1AVTSpellCheckerSubtype = array of AVTSpellCheckerSubtype;
+  Arr2AVTSpellCheckerSubtype = array of Arr1AVTSpellCheckerSubtype;
+  Arr3AVTSpellCheckerSubtype = array of Arr2AVTSpellCheckerSubtype;
+
+  ARMesh = class;
+  Arr1ARMesh = array of ARMesh;
+  Arr2ARMesh = array of Arr1ARMesh;
+  Arr3ARMesh = array of Arr2ARMesh;
+
+  JLTypeNotPresentException = class;
+  Arr1JLTypeNotPresentException = array of JLTypeNotPresentException;
+  Arr2JLTypeNotPresentException = array of Arr1JLTypeNotPresentException;
+  Arr3JLTypeNotPresentException = array of Arr2JLTypeNotPresentException;
+
+  JNSHandshakeCompletedEvent = class;
+  Arr1JNSHandshakeCompletedEvent = array of JNSHandshakeCompletedEvent;
+  Arr2JNSHandshakeCompletedEvent = array of Arr1JNSHandshakeCompletedEvent;
+  Arr3JNSHandshakeCompletedEvent = array of Arr2JNSHandshakeCompletedEvent;
+
+  JSSRSAOtherPrimeInfo = class;
+  Arr1JSSRSAOtherPrimeInfo = array of JSSRSAOtherPrimeInfo;
+  Arr2JSSRSAOtherPrimeInfo = array of Arr1JSSRSAOtherPrimeInfo;
+  Arr3JSSRSAOtherPrimeInfo = array of Arr2JSSRSAOtherPrimeInfo;
+
+  ACPFeatureInfo = class;
+  Arr1ACPFeatureInfo = array of ACPFeatureInfo;
+  Arr2ACPFeatureInfo = array of Arr1ACPFeatureInfo;
+  Arr3ACPFeatureInfo = array of Arr2ACPFeatureInfo;
+
+  AWResourceCursorTreeAdapter = class;
+  Arr1AWResourceCursorTreeAdapter = array of AWResourceCursorTreeAdapter;
+  Arr2AWResourceCursorTreeAdapter = array of Arr1AWResourceCursorTreeAdapter;
+  Arr3AWResourceCursorTreeAdapter = array of Arr2AWResourceCursorTreeAdapter;
+
+  OAHCPRequestTargetAuthentication = class;
+  Arr1OAHCPRequestTargetAuthentication = array of OAHCPRequestTargetAuthentication;
+  Arr2OAHCPRequestTargetAuthentication = array of Arr1OAHCPRequestTargetAuthentication;
+  Arr3OAHCPRequestTargetAuthentication = array of Arr2OAHCPRequestTargetAuthentication;
+
+  JULStreamHandler = class;
+  Arr1JULStreamHandler = array of JULStreamHandler;
+  Arr2JULStreamHandler = array of Arr1JULStreamHandler;
+  Arr3JULStreamHandler = array of Arr2JULStreamHandler;
+
+  AOETC1 = class;
+  Arr1AOETC1 = array of AOETC1;
+  Arr2AOETC1 = array of Arr1AOETC1;
+  Arr3AOETC1 = array of Arr2AOETC1;
+
+  ADCursorIndexOutOfBoundsException = class;
+  Arr1ADCursorIndexOutOfBoundsException = array of ADCursorIndexOutOfBoundsException;
+  Arr2ADCursorIndexOutOfBoundsException = array of Arr1ADCursorIndexOutOfBoundsException;
+  Arr3ADCursorIndexOutOfBoundsException = array of Arr2ADCursorIndexOutOfBoundsException;
+
+  JSCCertPathBuilderException = class;
+  Arr1JSCCertPathBuilderException = array of JSCCertPathBuilderException;
+  Arr2JSCCertPathBuilderException = array of Arr1JSCCertPathBuilderException;
+  Arr3JSCCertPathBuilderException = array of Arr2JSCCertPathBuilderException;
+
+  JSCPKIXBuilderParameters = class;
+  Arr1JSCPKIXBuilderParameters = array of JSCPKIXBuilderParameters;
+  Arr2JSCPKIXBuilderParameters = array of Arr1JSCPKIXBuilderParameters;
+  Arr3JSCPKIXBuilderParameters = array of Arr2JSCPKIXBuilderParameters;
+
+  OAHCConnectTimeoutException = class;
+  Arr1OAHCConnectTimeoutException = array of OAHCConnectTimeoutException;
+  Arr2OAHCConnectTimeoutException = array of Arr1OAHCConnectTimeoutException;
+  Arr3OAHCConnectTimeoutException = array of Arr2OAHCConnectTimeoutException;
+
+  AUStringBuilderPrinter = class;
+  Arr1AUStringBuilderPrinter = array of AUStringBuilderPrinter;
+  Arr2AUStringBuilderPrinter = array of Arr1AUStringBuilderPrinter;
+  Arr3AUStringBuilderPrinter = array of Arr2AUStringBuilderPrinter;
+
+  JIFileNotFoundException = class;
+  Arr1JIFileNotFoundException = array of JIFileNotFoundException;
+  Arr2JIFileNotFoundException = array of Arr1JIFileNotFoundException;
+  Arr3JIFileNotFoundException = array of Arr2JIFileNotFoundException;
+
+  JNCUnresolvedAddressException = class;
+  Arr1JNCUnresolvedAddressException = array of JNCUnresolvedAddressException;
+  Arr2JNCUnresolvedAddressException = array of Arr1JNCUnresolvedAddressException;
+  Arr3JNCUnresolvedAddressException = array of Arr2JNCUnresolvedAddressException;
+
+  JSSQLRecoverableException = class;
+  Arr1JSSQLRecoverableException = array of JSSQLRecoverableException;
+  Arr2JSSQLRecoverableException = array of Arr1JSSQLRecoverableException;
+  Arr3JSSQLRecoverableException = array of Arr2JSSQLRecoverableException;
+
+  AAAccountAuthenticatorActivity = class;
+  Arr1AAAccountAuthenticatorActivity = array of AAAccountAuthenticatorActivity;
+  Arr2AAAccountAuthenticatorActivity = array of Arr1AAAccountAuthenticatorActivity;
+  Arr3AAAccountAuthenticatorActivity = array of Arr2AAAccountAuthenticatorActivity;
+
+  AGBitmapRegionDecoder = class;
+  Arr1AGBitmapRegionDecoder = array of AGBitmapRegionDecoder;
+  Arr2AGBitmapRegionDecoder = array of Arr1AGBitmapRegionDecoder;
+  Arr3AGBitmapRegionDecoder = array of Arr2AGBitmapRegionDecoder;
+
+  AWEditText = class;
+  Arr1AWEditText = array of AWEditText;
+  Arr2AWEditText = array of Arr1AWEditText;
+  Arr3AWEditText = array of Arr2AWEditText;
+
+  JSSRSAPublicKeySpec = class;
+  Arr1JSSRSAPublicKeySpec = array of JSSRSAPublicKeySpec;
+  Arr2JSSRSAPublicKeySpec = array of Arr1JSSRSAPublicKeySpec;
+  Arr3JSSRSAPublicKeySpec = array of Arr2JSSRSAPublicKeySpec;
+
+  JSPermissions = class;
+  Arr1JSPermissions = array of JSPermissions;
+  Arr2JSPermissions = array of Arr1JSPermissions;
+  Arr3JSPermissions = array of Arr2JSPermissions;
+
+  JXXXPathException = class;
+  Arr1JXXXPathException = array of JXXXPathException;
+  Arr2JXXXPathException = array of Arr1JXXXPathException;
+  Arr3JXXXPathException = array of Arr2JXXXPathException;
+
+  JSKeyPair = class;
+  Arr1JSKeyPair = array of JSKeyPair;
+  Arr2JSKeyPair = array of Arr1JSKeyPair;
+  Arr3JSKeyPair = array of Arr2JSKeyPair;
+
+  JSSEllipticCurve = class;
+  Arr1JSSEllipticCurve = array of JSSEllipticCurve;
+  Arr2JSSEllipticCurve = array of Arr1JSSEllipticCurve;
+  Arr3JSSEllipticCurve = array of Arr2JSSEllipticCurve;
+
+  ATMTouch = class;
+  Arr1ATMTouch = array of ATMTouch;
+  Arr2ATMTouch = array of Arr1ATMTouch;
+  Arr3ATMTouch = array of Arr2ATMTouch;
+
+  JUCLAbstractQueuedLongSynchronizer = class;
+  Arr1JUCLAbstractQueuedLongSynchronizer = array of JUCLAbstractQueuedLongSynchronizer;
+  Arr2JUCLAbstractQueuedLongSynchronizer = array of Arr1JUCLAbstractQueuedLongSynchronizer;
+  Arr3JUCLAbstractQueuedLongSynchronizer = array of Arr2JUCLAbstractQueuedLongSynchronizer;
+
+  AODropBoxManager = class;
+  Arr1AODropBoxManager = array of AODropBoxManager;
+  Arr2AODropBoxManager = array of Arr1AODropBoxManager;
+  Arr3AODropBoxManager = array of Arr2AODropBoxManager;
+
+  ATAndroidCharacter = class;
+  Arr1ATAndroidCharacter = array of ATAndroidCharacter;
+  Arr2ATAndroidCharacter = array of Arr1ATAndroidCharacter;
+  Arr3ATAndroidCharacter = array of Arr2ATAndroidCharacter;
+
+  JLCloneNotSupportedException = class;
+  Arr1JLCloneNotSupportedException = array of JLCloneNotSupportedException;
+  Arr2JLCloneNotSupportedException = array of Arr1JLCloneNotSupportedException;
+  Arr3JLCloneNotSupportedException = array of Arr2JLCloneNotSupportedException;
+
+  AHUUsbConstants = class;
+  Arr1AHUUsbConstants = array of AHUUsbConstants;
+  Arr2AHUUsbConstants = array of Arr1AHUUsbConstants;
+  Arr3AHUUsbConstants = array of Arr2AHUUsbConstants;
+
+  JNHttpRetryException = class;
+  Arr1JNHttpRetryException = array of JNHttpRetryException;
+  Arr2JNHttpRetryException = array of Arr1JNHttpRetryException;
+  Arr3JNHttpRetryException = array of Arr2JNHttpRetryException;
+
+  ALLocationProvider = class;
+  Arr1ALLocationProvider = array of ALLocationProvider;
+  Arr2ALLocationProvider = array of Arr1ALLocationProvider;
+  Arr3ALLocationProvider = array of Arr2ALLocationProvider;
+
+  AVSurfaceView = class;
+  Arr1AVSurfaceView = array of AVSurfaceView;
+  Arr2AVSurfaceView = array of Arr1AVSurfaceView;
+  Arr3AVSurfaceView = array of Arr2AVSurfaceView;
+
+  AGDAnimationDrawable = class;
+  Arr1AGDAnimationDrawable = array of AGDAnimationDrawable;
+  Arr2AGDAnimationDrawable = array of Arr1AGDAnimationDrawable;
+  Arr3AGDAnimationDrawable = array of Arr2AGDAnimationDrawable;
+
+  JLUnknownError = class;
+  Arr1JLUnknownError = array of JLUnknownError;
+  Arr2JLUnknownError = array of Arr1JLUnknownError;
+  Arr3JLUnknownError = array of Arr2JLUnknownError;
+
+  JSSignatureException = class;
+  Arr1JSSignatureException = array of JSSignatureException;
+  Arr2JSSignatureException = array of Arr1JSSignatureException;
+  Arr3JSSignatureException = array of Arr2JSSignatureException;
+
+  OAHICTunnelRefusedException = class;
+  Arr1OAHICTunnelRefusedException = array of OAHICTunnelRefusedException;
+  Arr2OAHICTunnelRefusedException = array of Arr1OAHICTunnelRefusedException;
+  Arr3OAHICTunnelRefusedException = array of Arr2OAHICTunnelRefusedException;
+
+  JUZZipOutputStream = class;
+  Arr1JUZZipOutputStream = array of JUZZipOutputStream;
+  Arr2JUZZipOutputStream = array of Arr1JUZZipOutputStream;
+  Arr3JUZZipOutputStream = array of Arr2JUZZipOutputStream;
+
+  JSCCertPathBuilderSpi = class;
+  Arr1JSCCertPathBuilderSpi = array of JSCCertPathBuilderSpi;
+  Arr2JSCCertPathBuilderSpi = array of Arr1JSCCertPathBuilderSpi;
+  Arr3JSCCertPathBuilderSpi = array of Arr2JSCCertPathBuilderSpi;
+
+  AAWallpaperInfo = class;
+  Arr1AAWallpaperInfo = array of AAWallpaperInfo;
+  Arr2AAWallpaperInfo = array of Arr1AAWallpaperInfo;
+  Arr3AAWallpaperInfo = array of Arr2AAWallpaperInfo;
+
+  ATSpannableStringInternal = class;
+  Arr1ATSpannableStringInternal = array of ATSpannableStringInternal;
+  Arr2ATSpannableStringInternal = array of Arr1ATSpannableStringInternal;
+  Arr3ATSpannableStringInternal = array of Arr2ATSpannableStringInternal;
+
+  JLRReferenceQueue = class;
+  Arr1JLRReferenceQueue = array of JLRReferenceQueue;
+  Arr2JLRReferenceQueue = array of Arr1JLRReferenceQueue;
+  Arr3JLRReferenceQueue = array of Arr2JLRReferenceQueue;
+
+  JCSPBEKeySpec = class;
+  Arr1JCSPBEKeySpec = array of JCSPBEKeySpec;
+  Arr2JCSPBEKeySpec = array of Arr1JCSPBEKeySpec;
+  Arr3JCSPBEKeySpec = array of Arr2JCSPBEKeySpec;
+
+  ATSForegroundColorSpan = class;
+  Arr1ATSForegroundColorSpan = array of ATSForegroundColorSpan;
+  Arr2ATSForegroundColorSpan = array of Arr1ATSForegroundColorSpan;
+  Arr3ATSForegroundColorSpan = array of Arr2ATSForegroundColorSpan;
+
+  AVContextThemeWrapper = class;
+  Arr1AVContextThemeWrapper = array of AVContextThemeWrapper;
+  Arr2AVContextThemeWrapper = array of Arr1AVContextThemeWrapper;
+  Arr3AVContextThemeWrapper = array of Arr2AVContextThemeWrapper;
+
+  OJJSONArray = class;
+  Arr1OJJSONArray = array of OJJSONArray;
+  Arr2OJJSONArray = array of Arr1OJJSONArray;
+  Arr3OJJSONArray = array of Arr2OJJSONArray;
+
+  AAFragmentBreadCrumbs = class;
+  Arr1AAFragmentBreadCrumbs = array of AAFragmentBreadCrumbs;
+  Arr2AAFragmentBreadCrumbs = array of Arr1AAFragmentBreadCrumbs;
+  Arr3AAFragmentBreadCrumbs = array of Arr2AAFragmentBreadCrumbs;
+
+  ANTMifareUltralight = class;
+  Arr1ANTMifareUltralight = array of ANTMifareUltralight;
+  Arr2ANTMifareUltralight = array of Arr1ANTMifareUltralight;
+  Arr3ANTMifareUltralight = array of Arr2ANTMifareUltralight;
+
+  OAHCCookiePathComparator = class;
+  Arr1OAHCCookiePathComparator = array of OAHCCookiePathComparator;
+  Arr2OAHCCookiePathComparator = array of Arr1OAHCCookiePathComparator;
+  Arr3OAHCCookiePathComparator = array of Arr2OAHCCookiePathComparator;
+
+  APMultiSelectListPreference = class;
+  Arr1APMultiSelectListPreference = array of APMultiSelectListPreference;
+  Arr2APMultiSelectListPreference = array of Arr1APMultiSelectListPreference;
+  Arr3APMultiSelectListPreference = array of Arr2APMultiSelectListPreference;
+
+  ARByte2 = class;
+  Arr1ARByte2 = array of ARByte2;
+  Arr2ARByte2 = array of Arr1ARByte2;
+  Arr3ARByte2 = array of Arr2ARByte2;
+
+  ARByte3 = class;
+  Arr1ARByte3 = array of ARByte3;
+  Arr2ARByte3 = array of Arr1ARByte3;
+  Arr3ARByte3 = array of Arr2ARByte3;
+
+  AWURLUtil = class;
+  Arr1AWURLUtil = array of AWURLUtil;
+  Arr2AWURLUtil = array of Arr1AWURLUtil;
+  Arr3AWURLUtil = array of Arr2AWURLUtil;
+
+  ARByte4 = class;
+  Arr1ARByte4 = array of ARByte4;
+  Arr2ARByte4 = array of Arr1ARByte4;
+  Arr3ARByte4 = array of Arr2ARByte4;
+
+  AGPaintFlagsDrawFilter = class;
+  Arr1AGPaintFlagsDrawFilter = array of AGPaintFlagsDrawFilter;
+  Arr2AGPaintFlagsDrawFilter = array of Arr1AGPaintFlagsDrawFilter;
+  Arr3AGPaintFlagsDrawFilter = array of Arr2AGPaintFlagsDrawFilter;
+
+  JUUnknownFormatConversionException = class;
+  Arr1JUUnknownFormatConversionException = array of JUUnknownFormatConversionException;
+  Arr2JUUnknownFormatConversionException = array of Arr1JUUnknownFormatConversionException;
+  Arr3JUUnknownFormatConversionException = array of Arr2JUUnknownFormatConversionException;
+
+  AWGridLayout = class;
+  Arr1AWGridLayout = array of AWGridLayout;
+  Arr2AWGridLayout = array of Arr1AWGridLayout;
+  Arr3AWGridLayout = array of Arr2AWGridLayout;
+
+  OAHIIContentLengthOutputStream = class;
+  Arr1OAHIIContentLengthOutputStream = array of OAHIIContentLengthOutputStream;
+  Arr2OAHIIContentLengthOutputStream = array of Arr1OAHIIContentLengthOutputStream;
+  Arr3OAHIIContentLengthOutputStream = array of Arr2OAHIIContentLengthOutputStream;
+
+  AHUUsbEndpoint = class;
+  Arr1AHUUsbEndpoint = array of AHUUsbEndpoint;
+  Arr2AHUUsbEndpoint = array of Arr1AHUUsbEndpoint;
+  Arr3AHUUsbEndpoint = array of Arr2AHUUsbEndpoint;
+
+  ATAssertionFailedError = class;
+  Arr1ATAssertionFailedError = array of ATAssertionFailedError;
+  Arr2ATAssertionFailedError = array of Arr1ATAssertionFailedError;
+  Arr3ATAssertionFailedError = array of Arr2ATAssertionFailedError;
+
+  JSCCertPathBuilder = class;
+  Arr1JSCCertPathBuilder = array of JSCCertPathBuilder;
+  Arr2JSCCertPathBuilder = array of Arr1JSCCertPathBuilder;
+  Arr3JSCCertPathBuilder = array of Arr2JSCCertPathBuilder;
+
+  JTCollationElementIterator = class;
+  Arr1JTCollationElementIterator = array of JTCollationElementIterator;
+  Arr2JTCollationElementIterator = array of Arr1JTCollationElementIterator;
+  Arr3JTCollationElementIterator = array of Arr2JTCollationElementIterator;
+
+  OAHCPConnRouteParams = class;
+  Arr1OAHCPConnRouteParams = array of OAHCPConnRouteParams;
+  Arr2OAHCPConnRouteParams = array of Arr1OAHCPConnRouteParams;
+  Arr3OAHCPConnRouteParams = array of Arr2OAHCPConnRouteParams;
+
+  ASKeyChain = class;
+  Arr1ASKeyChain = array of ASKeyChain;
+  Arr2ASKeyChain = array of Arr1ASKeyChain;
+  Arr3ASKeyChain = array of Arr2ASKeyChain;
+
+  OAHUEncodingUtils = class;
+  Arr1OAHUEncodingUtils = array of OAHUEncodingUtils;
+  Arr2OAHUEncodingUtils = array of Arr1OAHUEncodingUtils;
+  Arr3OAHUEncodingUtils = array of Arr2OAHUEncodingUtils;
+
+  JSSQLTransientConnectionException = class;
+  Arr1JSSQLTransientConnectionException = array of JSSQLTransientConnectionException;
+  Arr2JSSQLTransientConnectionException = array of Arr1JSSQLTransientConnectionException;
+  Arr3JSSQLTransientConnectionException = array of Arr2JSSQLTransientConnectionException;
+
+  JBPropertyChangeListenerProxy = class;
+  Arr1JBPropertyChangeListenerProxy = array of JBPropertyChangeListenerProxy;
+  Arr2JBPropertyChangeListenerProxy = array of Arr1JBPropertyChangeListenerProxy;
+  Arr3JBPropertyChangeListenerProxy = array of Arr2JBPropertyChangeListenerProxy;
+
+  AMRingtoneManager = class;
+  Arr1AMRingtoneManager = array of AMRingtoneManager;
+  Arr2AMRingtoneManager = array of Arr1AMRingtoneManager;
+  Arr3AMRingtoneManager = array of Arr2AMRingtoneManager;
+
+  ANHSslCertificate = class;
+  Arr1ANHSslCertificate = array of ANHSslCertificate;
+  Arr2ANHSslCertificate = array of Arr1ANHSslCertificate;
+  Arr3ANHSslCertificate = array of Arr2ANHSslCertificate;
+
+  OAHCRBasicRouteDirector = class;
+  Arr1OAHCRBasicRouteDirector = array of OAHCRBasicRouteDirector;
+  Arr2OAHCRBasicRouteDirector = array of Arr1OAHCRBasicRouteDirector;
+  Arr3OAHCRBasicRouteDirector = array of Arr2OAHCRBasicRouteDirector;
+
+  JISerializablePermission = class;
+  Arr1JISerializablePermission = array of JISerializablePermission;
+  Arr2JISerializablePermission = array of Arr1JISerializablePermission;
+  Arr3JISerializablePermission = array of Arr2JISerializablePermission;
+
+  JXTOutputKeys = class;
+  Arr1JXTOutputKeys = array of JXTOutputKeys;
+  Arr2JXTOutputKeys = array of Arr1JXTOutputKeys;
+  Arr3JXTOutputKeys = array of Arr2JXTOutputKeys;
+
+  JXTSSAXTransformerFactory = class;
+  Arr1JXTSSAXTransformerFactory = array of JXTSSAXTransformerFactory;
+  Arr2JXTSSAXTransformerFactory = array of Arr1JXTSSAXTransformerFactory;
+  Arr3JXTSSAXTransformerFactory = array of Arr2JXTSSAXTransformerFactory;
+
+  APPreference = class;
+  Arr1APPreference = array of APPreference;
+  Arr2APPreference = array of Arr1APPreference;
+  Arr3APPreference = array of Arr2APPreference;
+
+  AWAbsListView = class;
+  Arr1AWAbsListView = array of AWAbsListView;
+  Arr2AWAbsListView = array of Arr1AWAbsListView;
+  Arr3AWAbsListView = array of Arr2AWAbsListView;
+
+  JSCPolicyQualifierInfo = class;
+  Arr1JSCPolicyQualifierInfo = array of JSCPolicyQualifierInfo;
+  Arr2JSCPolicyQualifierInfo = array of Arr1JSCPolicyQualifierInfo;
+  Arr3JSCPolicyQualifierInfo = array of Arr2JSCPolicyQualifierInfo;
+
+  ATTelephonyManager = class;
+  Arr1ATTelephonyManager = array of ATTelephonyManager;
+  Arr2ATTelephonyManager = array of Arr1ATTelephonyManager;
+  Arr3ATTelephonyManager = array of Arr2ATTelephonyManager;
+
+  OAHCSStrictHostnameVerifier = class;
+  Arr1OAHCSStrictHostnameVerifier = array of OAHCSStrictHostnameVerifier;
+  Arr2OAHCSStrictHostnameVerifier = array of Arr1OAHCSStrictHostnameVerifier;
+  Arr3OAHCSStrictHostnameVerifier = array of Arr2OAHCSStrictHostnameVerifier;
+
+  JSCPKIXCertPathValidatorResult = class;
+  Arr1JSCPKIXCertPathValidatorResult = array of JSCPKIXCertPathValidatorResult;
+  Arr2JSCPKIXCertPathValidatorResult = array of Arr1JSCPKIXCertPathValidatorResult;
+  Arr3JSCPKIXCertPathValidatorResult = array of Arr2JSCPKIXCertPathValidatorResult;
+
+  JUJManifest = class;
+  Arr1JUJManifest = array of JUJManifest;
+  Arr2JUJManifest = array of Arr1JUJManifest;
+  Arr3JUJManifest = array of Arr2JUJManifest;
+
+  JUEnumMap = class;
+  Arr1JUEnumMap = array of JUEnumMap;
+  Arr2JUEnumMap = array of Arr1JUEnumMap;
+  Arr3JUEnumMap = array of Arr2JUEnumMap;
+
+  JLVerifyError = class;
+  Arr1JLVerifyError = array of JLVerifyError;
+  Arr2JLVerifyError = array of Arr1JLVerifyError;
+  Arr3JLVerifyError = array of Arr2JLVerifyError;
+
+  JSIdentity = class;
+  Arr1JSIdentity = array of JSIdentity;
+  Arr2JSIdentity = array of Arr1JSIdentity;
+  Arr3JSIdentity = array of Arr2JSIdentity;
+
+  AODebug = class;
+  Arr1AODebug = array of AODebug;
+  Arr2AODebug = array of Arr1AODebug;
+  Arr3AODebug = array of Arr2AODebug;
+
+  JUJJarFile = class;
+  Arr1JUJJarFile = array of JUJJarFile;
+  Arr2JUJJarFile = array of Arr1JUJJarFile;
+  Arr3JUJJarFile = array of Arr2JUJJarFile;
+
+  OAHIIIdentityInputStream = class;
+  Arr1OAHIIIdentityInputStream = array of OAHIIIdentityInputStream;
+  Arr2OAHIIIdentityInputStream = array of Arr1OAHIIIdentityInputStream;
+  Arr3OAHIIIdentityInputStream = array of Arr2OAHIIIdentityInputStream;
+
+  JCKeyAgreementSpi = class;
+  Arr1JCKeyAgreementSpi = array of JCKeyAgreementSpi;
+  Arr2JCKeyAgreementSpi = array of Arr1JCKeyAgreementSpi;
+  Arr3JCKeyAgreementSpi = array of Arr2JCKeyAgreementSpi;
+
+  AGLinearGradient = class;
+  Arr1AGLinearGradient = array of AGLinearGradient;
+  Arr2AGLinearGradient = array of Arr1AGLinearGradient;
+  Arr3AGLinearGradient = array of Arr2AGLinearGradient;
+
+  OAHIISocketInputBuffer = class;
+  Arr1OAHIISocketInputBuffer = array of OAHIISocketInputBuffer;
+  Arr2OAHIISocketInputBuffer = array of Arr1OAHIISocketInputBuffer;
+  Arr3OAHIISocketInputBuffer = array of Arr2OAHIISocketInputBuffer;
+
+  ANNetworkInfo = class;
+  Arr1ANNetworkInfo = array of ANNetworkInfo;
+  Arr2ANNetworkInfo = array of Arr1ANNetworkInfo;
+  Arr3ANNetworkInfo = array of Arr2ANNetworkInfo;
+
+  ATStaticLayout = class;
+  Arr1ATStaticLayout = array of ATStaticLayout;
+  Arr2ATStaticLayout = array of Arr1ATStaticLayout;
+  Arr3ATStaticLayout = array of Arr2ATStaticLayout;
+
+  ACPSignature = class;
+  Arr1ACPSignature = array of ACPSignature;
+  Arr2ACPSignature = array of Arr1ACPSignature;
+  Arr3ACPSignature = array of Arr2ACPSignature;
+
+  AOWorkSource = class;
+  Arr1AOWorkSource = array of AOWorkSource;
+  Arr2AOWorkSource = array of Arr1AOWorkSource;
+  Arr3AOWorkSource = array of Arr2AOWorkSource;
+
+  ATSReplacementSpan = class;
+  Arr1ATSReplacementSpan = array of ATSReplacementSpan;
+  Arr2ATSReplacementSpan = array of Arr1ATSReplacementSpan;
+  Arr3ATSReplacementSpan = array of Arr2ATSReplacementSpan;
+
+  ASKeyChainException = class;
+  Arr1ASKeyChainException = array of ASKeyChainException;
+  Arr2ASKeyChainException = array of Arr1ASKeyChainException;
+  Arr3ASKeyChainException = array of Arr2ASKeyChainException;
+
+  AMCameraProfile = class;
+  Arr1AMCameraProfile = array of AMCameraProfile;
+  Arr2AMCameraProfile = array of Arr1AMCameraProfile;
+  Arr3AMCameraProfile = array of Arr2AMCameraProfile;
+
+  JSNoSuchProviderException = class;
+  Arr1JSNoSuchProviderException = array of JSNoSuchProviderException;
+  Arr2JSNoSuchProviderException = array of Arr1JSNoSuchProviderException;
+  Arr3JSNoSuchProviderException = array of Arr2JSNoSuchProviderException;
+
+  AAIntEvaluator = class;
+  Arr1AAIntEvaluator = array of AAIntEvaluator;
+  Arr2AAIntEvaluator = array of Arr1AAIntEvaluator;
+  Arr3AAIntEvaluator = array of Arr2AAIntEvaluator;
+
+  OAHUEntityUtils = class;
+  Arr1OAHUEntityUtils = array of OAHUEntityUtils;
+  Arr2OAHUEntityUtils = array of Arr1OAHUEntityUtils;
+  Arr3OAHUEntityUtils = array of Arr2OAHUEntityUtils;
+
+  AOMessageQueue = class;
+  Arr1AOMessageQueue = array of AOMessageQueue;
+  Arr2AOMessageQueue = array of Arr1AOMessageQueue;
+  Arr3AOMessageQueue = array of Arr2AOMessageQueue;
+
+  JNBufferUnderflowException = class;
+  Arr1JNBufferUnderflowException = array of JNBufferUnderflowException;
+  Arr2JNBufferUnderflowException = array of Arr1JNBufferUnderflowException;
+  Arr3JNBufferUnderflowException = array of Arr2JNBufferUnderflowException;
+
+  AVKeyEvent = class;
+  Arr1AVKeyEvent = array of AVKeyEvent;
+  Arr2AVKeyEvent = array of Arr1AVKeyEvent;
+  Arr3AVKeyEvent = array of Arr2AVKeyEvent;
+
+  AHUUsbRequest = class;
+  Arr1AHUUsbRequest = array of AHUUsbRequest;
+  Arr2AHUUsbRequest = array of Arr1AHUUsbRequest;
+  Arr3AHUUsbRequest = array of Arr2AHUUsbRequest;
+
+  JINotSerializableException = class;
+  Arr1JINotSerializableException = array of JINotSerializableException;
+  Arr2JINotSerializableException = array of Arr1JINotSerializableException;
+  Arr3JINotSerializableException = array of Arr2JINotSerializableException;
+
+  JXPDocumentBuilder = class;
+  Arr1JXPDocumentBuilder = array of JXPDocumentBuilder;
+  Arr2JXPDocumentBuilder = array of Arr1JXPDocumentBuilder;
+  Arr3JXPDocumentBuilder = array of Arr2JXPDocumentBuilder;
+
+  AGGestureLibraries = class;
+  Arr1AGGestureLibraries = array of AGGestureLibraries;
+  Arr2AGGestureLibraries = array of Arr1AGGestureLibraries;
+  Arr3AGGestureLibraries = array of Arr2AGGestureLibraries;
+
+  OAHICRFC2965Spec = class;
+  Arr1OAHICRFC2965Spec = array of OAHICRFC2965Spec;
+  Arr2OAHICRFC2965Spec = array of Arr1OAHICRFC2965Spec;
+  Arr3OAHICRFC2965Spec = array of Arr2OAHICRFC2965Spec;
+
+  JIFilePermission = class;
+  Arr1JIFilePermission = array of JIFilePermission;
+  Arr2JIFilePermission = array of Arr1JIFilePermission;
+  Arr3JIFilePermission = array of Arr2JIFilePermission;
+
+  JXPParserConfigurationException = class;
+  Arr1JXPParserConfigurationException = array of JXPParserConfigurationException;
+  Arr2JXPParserConfigurationException = array of Arr1JXPParserConfigurationException;
+  Arr3JXPParserConfigurationException = array of Arr2JXPParserConfigurationException;
+
+  JLRConstructor = class;
+  Arr1JLRConstructor = array of JLRConstructor;
+  Arr2JLRConstructor = array of Arr1JLRConstructor;
+  Arr3JLRConstructor = array of Arr2JLRConstructor;
+
+  JLRProxy = class;
+  Arr1JLRProxy = array of JLRProxy;
+  Arr2JLRProxy = array of Arr1JLRProxy;
+  Arr3JLRProxy = array of Arr2JLRProxy;
+
+  ANRAudioGroup = class;
+  Arr1ANRAudioGroup = array of ANRAudioGroup;
+  Arr2ANRAudioGroup = array of Arr1ANRAudioGroup;
+  Arr3ANRAudioGroup = array of Arr2ANRAudioGroup;
+
+  OAHCUURLEncodedUtils = class;
+  Arr1OAHCUURLEncodedUtils = array of OAHCUURLEncodedUtils;
+  Arr2OAHCUURLEncodedUtils = array of Arr1OAHCUURLEncodedUtils;
+  Arr3OAHCUURLEncodedUtils = array of Arr2OAHCUURLEncodedUtils;
+
+  AANotification = class;
+  Arr1AANotification = array of AANotification;
+  Arr2AANotification = array of Arr1AANotification;
+  Arr3AANotification = array of Arr2AANotification;
+
+  JUIdentityHashMap = class;
+  Arr1JUIdentityHashMap = array of JUIdentityHashMap;
+  Arr2JUIdentityHashMap = array of Arr1JUIdentityHashMap;
+  Arr3JUIdentityHashMap = array of Arr2JUIdentityHashMap;
+
+  ACContentValues = class;
+  Arr1ACContentValues = array of ACContentValues;
+  Arr2ACContentValues = array of Arr1ACContentValues;
+  Arr3ACContentValues = array of Arr2ACContentValues;
+
+  JSSRSAKeyGenParameterSpec = class;
+  Arr1JSSRSAKeyGenParameterSpec = array of JSSRSAKeyGenParameterSpec;
+  Arr2JSSRSAKeyGenParameterSpec = array of Arr1JSSRSAKeyGenParameterSpec;
+  Arr3JSSRSAKeyGenParameterSpec = array of Arr2JSSRSAKeyGenParameterSpec;
+
+  OAHPHttpRequestHandlerRegistry = class;
+  Arr1OAHPHttpRequestHandlerRegistry = array of OAHPHttpRequestHandlerRegistry;
+  Arr2OAHPHttpRequestHandlerRegistry = array of Arr1OAHPHttpRequestHandlerRegistry;
+  Arr3OAHPHttpRequestHandlerRegistry = array of Arr2OAHPHttpRequestHandlerRegistry;
+
+  JTFieldPosition = class;
+  Arr1JTFieldPosition = array of JTFieldPosition;
+  Arr2JTFieldPosition = array of Arr1JTFieldPosition;
+  Arr3JTFieldPosition = array of Arr2JTFieldPosition;
+
+  OAHAAuthState = class;
+  Arr1OAHAAuthState = array of OAHAAuthState;
+  Arr2OAHAAuthState = array of Arr1OAHAAuthState;
+  Arr3OAHAAuthState = array of Arr2OAHAAuthState;
+
+  ACRConfiguration = class;
+  Arr1ACRConfiguration = array of ACRConfiguration;
+  Arr2ACRConfiguration = array of Arr1ACRConfiguration;
+  Arr3ACRConfiguration = array of Arr2ACRConfiguration;
+
+  OAHPDefaultedHttpContext = class;
+  Arr1OAHPDefaultedHttpContext = array of OAHPDefaultedHttpContext;
+  Arr2OAHPDefaultedHttpContext = array of Arr1OAHPDefaultedHttpContext;
+  Arr3OAHPDefaultedHttpContext = array of Arr2OAHPDefaultedHttpContext;
+
+  JNSHttpsURLConnection = class;
+  Arr1JNSHttpsURLConnection = array of JNSHttpsURLConnection;
+  Arr2JNSHttpsURLConnection = array of Arr1JNSHttpsURLConnection;
+  Arr3JNSHttpsURLConnection = array of Arr2JNSHttpsURLConnection;
+
+  ARDouble2 = class;
+  Arr1ARDouble2 = array of ARDouble2;
+  Arr2ARDouble2 = array of Arr1ARDouble2;
+  Arr3ARDouble2 = array of Arr2ARDouble2;
+
+  ATActivityUnitTestCase = class;
+  Arr1ATActivityUnitTestCase = array of ATActivityUnitTestCase;
+  Arr2ATActivityUnitTestCase = array of Arr1ATActivityUnitTestCase;
+  Arr3ATActivityUnitTestCase = array of Arr2ATActivityUnitTestCase;
+
+  ARDouble3 = class;
+  Arr1ARDouble3 = array of ARDouble3;
+  Arr2ARDouble3 = array of Arr1ARDouble3;
+  Arr3ARDouble3 = array of Arr2ARDouble3;
+
+  ASTTextToSpeechService = class;
+  Arr1ASTTextToSpeechService = array of ASTTextToSpeechService;
+  Arr2ASTTextToSpeechService = array of Arr1ASTTextToSpeechService;
+  Arr3ASTTextToSpeechService = array of Arr2ASTTextToSpeechService;
+
+  ARDouble4 = class;
+  Arr1ARDouble4 = array of ARDouble4;
+  Arr2ARDouble4 = array of Arr1ARDouble4;
+  Arr3ARDouble4 = array of Arr2ARDouble4;
+
+  AGDDrawable = class;
+  Arr1AGDDrawable = array of AGDDrawable;
+  Arr2AGDDrawable = array of Arr1AGDDrawable;
+  Arr3AGDDrawable = array of Arr2AGDDrawable;
+
+  AVViewGroup = class;
+  Arr1AVViewGroup = array of AVViewGroup;
+  Arr2AVViewGroup = array of Arr1AVViewGroup;
+  Arr3AVViewGroup = array of Arr2AVViewGroup;
+
+  JICharArrayReader = class;
+  Arr1JICharArrayReader = array of JICharArrayReader;
+  Arr2JICharArrayReader = array of Arr1JICharArrayReader;
+  Arr3JICharArrayReader = array of Arr2JICharArrayReader;
+
+  AGPicture = class;
+  Arr1AGPicture = array of AGPicture;
+  Arr2AGPicture = array of Arr1AGPicture;
+  Arr3AGPicture = array of Arr2AGPicture;
+
+  ADContentObservable = class;
+  Arr1ADContentObservable = array of ADContentObservable;
+  Arr2ADContentObservable = array of Arr1ADContentObservable;
+  Arr3ADContentObservable = array of Arr2ADContentObservable;
+
+  ASWWallpaperService = class;
+  Arr1ASWWallpaperService = array of ASWWallpaperService;
+  Arr2ASWWallpaperService = array of Arr1ASWWallpaperService;
+  Arr3ASWWallpaperService = array of Arr2ASWWallpaperService;
+
+  ARBaseObj = class;
+  Arr1ARBaseObj = array of ARBaseObj;
+  Arr2ARBaseObj = array of Arr1ARBaseObj;
+  Arr3ARBaseObj = array of Arr2ARBaseObj;
+
+  JUCAAtomicBoolean = class;
+  Arr1JUCAAtomicBoolean = array of JUCAAtomicBoolean;
+  Arr2JUCAAtomicBoolean = array of Arr1JUCAAtomicBoolean;
+  Arr3JUCAAtomicBoolean = array of Arr2JUCAAtomicBoolean;
+
+  JUPAbstractPreferences = class;
+  Arr1JUPAbstractPreferences = array of JUPAbstractPreferences;
+  Arr2JUPAbstractPreferences = array of Arr1JUPAbstractPreferences;
+  Arr3JUPAbstractPreferences = array of Arr2JUPAbstractPreferences;
+
+  JTDecimalFormatSymbols = class;
+  Arr1JTDecimalFormatSymbols = array of JTDecimalFormatSymbols;
+  Arr2JTDecimalFormatSymbols = array of Arr1JTDecimalFormatSymbols;
+  Arr3JTDecimalFormatSymbols = array of Arr2JTDecimalFormatSymbols;
+
+  AGPixelFormat = class;
+  Arr1AGPixelFormat = array of AGPixelFormat;
+  Arr2AGPixelFormat = array of Arr1AGPixelFormat;
+  Arr3AGPixelFormat = array of Arr2AGPixelFormat;
+
+  JXXXPathExpressionException = class;
+  Arr1JXXXPathExpressionException = array of JXXXPathExpressionException;
+  Arr2JXXXPathExpressionException = array of Arr1JXXXPathExpressionException;
+  Arr3JXXXPathExpressionException = array of Arr2JXXXPathExpressionException;
+
+  AWAutoCompleteTextView = class;
+  Arr1AWAutoCompleteTextView = array of AWAutoCompleteTextView;
+  Arr2AWAutoCompleteTextView = array of Arr1AWAutoCompleteTextView;
+  Arr3AWAutoCompleteTextView = array of Arr2AWAutoCompleteTextView;
+
+  AVAGridLayoutAnimationController = class;
+  Arr1AVAGridLayoutAnimationController = array of AVAGridLayoutAnimationController;
+  Arr2AVAGridLayoutAnimationController = array of Arr1AVAGridLayoutAnimationController;
+  Arr3AVAGridLayoutAnimationController = array of Arr2AVAGridLayoutAnimationController;
+
+  ACOperationApplicationException = class;
+  Arr1ACOperationApplicationException = array of ACOperationApplicationException;
+  Arr2ACOperationApplicationException = array of Arr1ACOperationApplicationException;
+  Arr3ACOperationApplicationException = array of Arr2ACOperationApplicationException;
+
+  AIExtractEditText = class;
+  Arr1AIExtractEditText = array of AIExtractEditText;
+  Arr2AIExtractEditText = array of Arr1AIExtractEditText;
+  Arr3AIExtractEditText = array of Arr2AIExtractEditText;
+
+  ATIsolatedContext = class;
+  Arr1ATIsolatedContext = array of ATIsolatedContext;
+  Arr2ATIsolatedContext = array of Arr1ATIsolatedContext;
+  Arr3ATIsolatedContext = array of Arr2ATIsolatedContext;
+
+  ADAbstractCursor = class;
+  Arr1ADAbstractCursor = array of ADAbstractCursor;
+  Arr2ADAbstractCursor = array of Arr1ADAbstractCursor;
+  Arr3ADAbstractCursor = array of Arr2ADAbstractCursor;
+
+  AAAppWidgetHost = class;
+  Arr1AAAppWidgetHost = array of AAAppWidgetHost;
+  Arr2AAAppWidgetHost = array of Arr1AAAppWidgetHost;
+  Arr3AAAppWidgetHost = array of Arr2AAAppWidgetHost;
+
+  JLIllegalMonitorStateException = class;
+  Arr1JLIllegalMonitorStateException = array of JLIllegalMonitorStateException;
+  Arr2JLIllegalMonitorStateException = array of Arr1JLIllegalMonitorStateException;
+  Arr3JLIllegalMonitorStateException = array of Arr2JLIllegalMonitorStateException;
+
+  JCCipherSpi = class;
+  Arr1JCCipherSpi = array of JCCipherSpi;
+  Arr2JCCipherSpi = array of Arr1JCCipherSpi;
+  Arr3JCCipherSpi = array of Arr2JCCipherSpi;
+
+  ADSSQLiteReadOnlyDatabaseException = class;
+  Arr1ADSSQLiteReadOnlyDatabaseException = array of ADSSQLiteReadOnlyDatabaseException;
+  Arr2ADSSQLiteReadOnlyDatabaseException = array of Arr1ADSSQLiteReadOnlyDatabaseException;
+  Arr3ADSSQLiteReadOnlyDatabaseException = array of Arr2ADSSQLiteReadOnlyDatabaseException;
+
+  OAHCMultihomePlainSocketFactory = class;
+  Arr1OAHCMultihomePlainSocketFactory = array of OAHCMultihomePlainSocketFactory;
+  Arr2OAHCMultihomePlainSocketFactory = array of Arr1OAHCMultihomePlainSocketFactory;
+  Arr3OAHCMultihomePlainSocketFactory = array of Arr2OAHCMultihomePlainSocketFactory;
+
+  JUPBackingStoreException = class;
+  Arr1JUPBackingStoreException = array of JUPBackingStoreException;
+  Arr2JUPBackingStoreException = array of Arr1JUPBackingStoreException;
+  Arr3JUPBackingStoreException = array of Arr2JUPBackingStoreException;
+
+  AAADeviceAdminInfo = class;
+  Arr1AAADeviceAdminInfo = array of AAADeviceAdminInfo;
+  Arr2AAADeviceAdminInfo = array of Arr1AAADeviceAdminInfo;
+  Arr3AAADeviceAdminInfo = array of Arr2AAADeviceAdminInfo;
+
+  ANRAudioCodec = class;
+  Arr1ANRAudioCodec = array of ANRAudioCodec;
+  Arr2ANRAudioCodec = array of Arr1ANRAudioCodec;
+  Arr3ANRAudioCodec = array of Arr2ANRAudioCodec;
+
+  AOFileObserver = class;
+  Arr1AOFileObserver = array of AOFileObserver;
+  Arr2AOFileObserver = array of Arr1AOFileObserver;
+  Arr3AOFileObserver = array of Arr2AOFileObserver;
+
+  AOMessage = class;
+  Arr1AOMessage = array of AOMessage;
+  Arr2AOMessage = array of Arr1AOMessage;
+  Arr3AOMessage = array of Arr2AOMessage;
+
+  OAHICRoutedRequest = class;
+  Arr1OAHICRoutedRequest = array of OAHICRoutedRequest;
+  Arr2OAHICRoutedRequest = array of Arr1OAHICRoutedRequest;
+  Arr3OAHICRoutedRequest = array of Arr2OAHICRoutedRequest;
+
+  ANTrafficStats = class;
+  Arr1ANTrafficStats = array of ANTrafficStats;
+  Arr2ANTrafficStats = array of Arr1ANTrafficStats;
+  Arr3ANTrafficStats = array of Arr2ANTrafficStats;
+
+  ATCCdmaCellLocation = class;
+  Arr1ATCCdmaCellLocation = array of ATCCdmaCellLocation;
+  Arr2ATCCdmaCellLocation = array of Arr1ATCCdmaCellLocation;
+  Arr3ATCCdmaCellLocation = array of Arr2ATCCdmaCellLocation;
+
+  OAHCBasicEofSensorWatcher = class;
+  Arr1OAHCBasicEofSensorWatcher = array of OAHCBasicEofSensorWatcher;
+  Arr2OAHCBasicEofSensorWatcher = array of Arr1OAHCBasicEofSensorWatcher;
+  Arr3OAHCBasicEofSensorWatcher = array of Arr2OAHCBasicEofSensorWatcher;
+
+  AGColorMatrixColorFilter = class;
+  Arr1AGColorMatrixColorFilter = array of AGColorMatrixColorFilter;
+  Arr2AGColorMatrixColorFilter = array of Arr1AGColorMatrixColorFilter;
+  Arr3AGColorMatrixColorFilter = array of Arr2AGColorMatrixColorFilter;
+
+  OAHICClientParamsStack = class;
+  Arr1OAHICClientParamsStack = array of OAHICClientParamsStack;
+  Arr2OAHICClientParamsStack = array of Arr1OAHICClientParamsStack;
+  Arr3OAHICClientParamsStack = array of Arr2OAHICClientParamsStack;
+
+  AWRemoteViews = class;
+  Arr1AWRemoteViews = array of AWRemoteViews;
+  Arr2AWRemoteViews = array of Arr1AWRemoteViews;
+  Arr3AWRemoteViews = array of Arr2AWRemoteViews;
+
+  AOPowerManager = class;
+  Arr1AOPowerManager = array of AOPowerManager;
+  Arr2AOPowerManager = array of Arr1AOPowerManager;
+  Arr3AOPowerManager = array of Arr2AOPowerManager;
+
+  AVInputQueue = class;
+  Arr1AVInputQueue = array of AVInputQueue;
+  Arr2AVInputQueue = array of Arr1AVInputQueue;
+  Arr3AVInputQueue = array of Arr2AVInputQueue;
+
+  JSCX509CRLSelector = class;
+  Arr1JSCX509CRLSelector = array of JSCX509CRLSelector;
+  Arr2JSCX509CRLSelector = array of Arr1JSCX509CRLSelector;
+  Arr3JSCX509CRLSelector = array of Arr2JSCX509CRLSelector;
+
+  AWQuickContactBadge = class;
+  Arr1AWQuickContactBadge = array of AWQuickContactBadge;
+  Arr2AWQuickContactBadge = array of Arr1AWQuickContactBadge;
+  Arr3AWQuickContactBadge = array of Arr2AWQuickContactBadge;
+
+  AOParcel = class;
+  Arr1AOParcel = array of AOParcel;
+  Arr2AOParcel = array of Arr1AOParcel;
+  Arr3AOParcel = array of Arr2AOParcel;
+
+  AOGLES11Ext = class;
+  Arr1AOGLES11Ext = array of AOGLES11Ext;
+  Arr2AOGLES11Ext = array of Arr1AOGLES11Ext;
+  Arr3AOGLES11Ext = array of Arr2AOGLES11Ext;
+
+  JNSSSLServerSocketFactory = class;
+  Arr1JNSSSLServerSocketFactory = array of JNSSSLServerSocketFactory;
+  Arr2JNSSSLServerSocketFactory = array of Arr1JNSSSLServerSocketFactory;
+  Arr3JNSSSLServerSocketFactory = array of Arr2JNSSSLServerSocketFactory;
+
+  OAHICBasicPathHandler = class;
+  Arr1OAHICBasicPathHandler = array of OAHICBasicPathHandler;
+  Arr2OAHICBasicPathHandler = array of Arr1OAHICBasicPathHandler;
+  Arr3OAHICBasicPathHandler = array of Arr2OAHICBasicPathHandler;
+
+  OAHICDateUtils = class;
+  Arr1OAHICDateUtils = array of OAHICDateUtils;
+  Arr2OAHICDateUtils = array of Arr1OAHICDateUtils;
+  Arr3OAHICDateUtils = array of Arr2OAHICDateUtils;
+
+  OAHMBasicHeaderElementIterator = class;
+  Arr1OAHMBasicHeaderElementIterator = array of OAHMBasicHeaderElementIterator;
+  Arr2OAHMBasicHeaderElementIterator = array of Arr1OAHMBasicHeaderElementIterator;
+  Arr3OAHMBasicHeaderElementIterator = array of Arr2OAHMBasicHeaderElementIterator;
+
+  AWArrayAdapter = class;
+  Arr1AWArrayAdapter = array of AWArrayAdapter;
+  Arr2AWArrayAdapter = array of Arr1AWArrayAdapter;
+  Arr3AWArrayAdapter = array of Arr2AWArrayAdapter;
+
+  JULinkedHashMap = class;
+  Arr1JULinkedHashMap = array of JULinkedHashMap;
+  Arr2JULinkedHashMap = array of Arr1JULinkedHashMap;
+  Arr3JULinkedHashMap = array of Arr2JULinkedHashMap;
+
+  JNCAsynchronousCloseException = class;
+  Arr1JNCAsynchronousCloseException = array of JNCAsynchronousCloseException;
+  Arr2JNCAsynchronousCloseException = array of Arr1JNCAsynchronousCloseException;
+  Arr3JNCAsynchronousCloseException = array of Arr2JNCAsynchronousCloseException;
+
+  JXXXPathFactoryConfigurationException = class;
+  Arr1JXXXPathFactoryConfigurationException = array of JXXXPathFactoryConfigurationException;
+  Arr2JXXXPathFactoryConfigurationException = array of Arr1JXXXPathFactoryConfigurationException;
+  Arr3JXXXPathFactoryConfigurationException = array of Arr2JXXXPathFactoryConfigurationException;
+
+  JLUnsupportedClassVersionError = class;
+  Arr1JLUnsupportedClassVersionError = array of JLUnsupportedClassVersionError;
+  Arr2JLUnsupportedClassVersionError = array of Arr1JLUnsupportedClassVersionError;
+  Arr3JLUnsupportedClassVersionError = array of Arr2JLUnsupportedClassVersionError;
+
+  AAAlertDialog = class;
+  Arr1AAAlertDialog = array of AAAlertDialog;
+  Arr2AAAlertDialog = array of Arr1AAAlertDialog;
+  Arr3AAAlertDialog = array of Arr2AAAlertDialog;
+
+  JUSimpleTimeZone = class;
+  Arr1JUSimpleTimeZone = array of JUSimpleTimeZone;
+  Arr2JUSimpleTimeZone = array of Arr1JUSimpleTimeZone;
+  Arr3JUSimpleTimeZone = array of Arr2JUSimpleTimeZone;
+
+  AGDNinePatchDrawable = class;
+  Arr1AGDNinePatchDrawable = array of AGDNinePatchDrawable;
+  Arr2AGDNinePatchDrawable = array of Arr1AGDNinePatchDrawable;
+  Arr3AGDNinePatchDrawable = array of Arr2AGDNinePatchDrawable;
+
+  JNIntBuffer = class;
+  Arr1JNIntBuffer = array of JNIntBuffer;
+  Arr2JNIntBuffer = array of Arr1JNIntBuffer;
+  Arr3JNIntBuffer = array of Arr2JNIntBuffer;
+
+  AVAAnimationUtils = class;
+  Arr1AVAAnimationUtils = array of AVAAnimationUtils;
+  Arr2AVAAnimationUtils = array of Arr1AVAAnimationUtils;
+  Arr3AVAAnimationUtils = array of Arr2AVAAnimationUtils;
+
+  AMMtpDevice = class;
+  Arr1AMMtpDevice = array of AMMtpDevice;
+  Arr2AMMtpDevice = array of Arr1AMMtpDevice;
+  Arr3AMMtpDevice = array of Arr2AMMtpDevice;
+
+  AGGestureStroke = class;
+  Arr1AGGestureStroke = array of AGGestureStroke;
+  Arr2AGGestureStroke = array of Arr1AGGestureStroke;
+  Arr3AGGestureStroke = array of Arr2AGGestureStroke;
+
+  AODeadObjectException = class;
+  Arr1AODeadObjectException = array of AODeadObjectException;
+  Arr2AODeadObjectException = array of Arr1AODeadObjectException;
+  Arr3AODeadObjectException = array of Arr2AODeadObjectException;
+
+  ATFTime = class;
+  Arr1ATFTime = array of ATFTime;
+  Arr2ATFTime = array of Arr1ATFTime;
+  Arr3ATFTime = array of Arr2ATFTime;
+
+  JNCacheRequest = class;
+  Arr1JNCacheRequest = array of JNCacheRequest;
+  Arr2JNCacheRequest = array of Arr1JNCacheRequest;
+  Arr3JNCacheRequest = array of Arr2JNCacheRequest;
+
+  JUEventListenerProxy = class;
+  Arr1JUEventListenerProxy = array of JUEventListenerProxy;
+  Arr2JUEventListenerProxy = array of Arr1JUEventListenerProxy;
+  Arr3JUEventListenerProxy = array of Arr2JUEventListenerProxy;
+
+  JNMappedByteBuffer = class;
+  Arr1JNMappedByteBuffer = array of JNMappedByteBuffer;
+  Arr2JNMappedByteBuffer = array of Arr1JNMappedByteBuffer;
+  Arr3JNMappedByteBuffer = array of Arr2JNMappedByteBuffer;
+
+  ADSSQLiteFullException = class;
+  Arr1ADSSQLiteFullException = array of ADSSQLiteFullException;
+  Arr2ADSSQLiteFullException = array of Arr1ADSSQLiteFullException;
+  Arr3ADSSQLiteFullException = array of Arr2ADSSQLiteFullException;
+
+  AOBundle = class;
+  Arr1AOBundle = array of AOBundle;
+  Arr2AOBundle = array of Arr1AOBundle;
+  Arr3AOBundle = array of Arr2AOBundle;
+
+  JSIdentityScope = class;
+  Arr1JSIdentityScope = array of JSIdentityScope;
+  Arr2JSIdentityScope = array of Arr1JSIdentityScope;
+  Arr3JSIdentityScope = array of Arr2JSIdentityScope;
+
+  AAAbstractAccountAuthenticator = class;
+  Arr1AAAbstractAccountAuthenticator = array of AAAbstractAccountAuthenticator;
+  Arr2AAAbstractAccountAuthenticator = array of Arr1AAAbstractAccountAuthenticator;
+  Arr3AAAbstractAccountAuthenticator = array of Arr2AAAbstractAccountAuthenticator;
+
+  JSKeyManagementException = class;
+  Arr1JSKeyManagementException = array of JSKeyManagementException;
+  Arr2JSKeyManagementException = array of Arr1JSKeyManagementException;
+  Arr3JSKeyManagementException = array of Arr2JSKeyManagementException;
+
+  JNURLStreamHandler = class;
+  Arr1JNURLStreamHandler = array of JNURLStreamHandler;
+  Arr2JNURLStreamHandler = array of Arr1JNURLStreamHandler;
+  Arr3JNURLStreamHandler = array of Arr2JNURLStreamHandler;
+
+  JSSECPublicKeySpec = class;
+  Arr1JSSECPublicKeySpec = array of JSSECPublicKeySpec;
+  Arr2JSSECPublicKeySpec = array of Arr1JSSECPublicKeySpec;
+  Arr3JSSECPublicKeySpec = array of Arr2JSSECPublicKeySpec;
+
+  AAFloatEvaluator = class;
+  Arr1AAFloatEvaluator = array of AAFloatEvaluator;
+  Arr2AAFloatEvaluator = array of Arr1AAFloatEvaluator;
+  Arr3AAFloatEvaluator = array of Arr2AAFloatEvaluator;
+
+  OXSHAttributesImpl = class;
+  Arr1OXSHAttributesImpl = array of OXSHAttributesImpl;
+  Arr2OXSHAttributesImpl = array of Arr1OXSHAttributesImpl;
+  Arr3OXSHAttributesImpl = array of Arr2OXSHAttributesImpl;
+
+  OAHMBasicHttpEntityEnclosingRequest = class;
+  Arr1OAHMBasicHttpEntityEnclosingRequest = array of OAHMBasicHttpEntityEnclosingRequest;
+  Arr2OAHMBasicHttpEntityEnclosingRequest = array of Arr1OAHMBasicHttpEntityEnclosingRequest;
+  Arr3OAHMBasicHttpEntityEnclosingRequest = array of Arr2OAHMBasicHttpEntityEnclosingRequest;
+
+  AALauncherActivity = class;
+  Arr1AALauncherActivity = array of AALauncherActivity;
+  Arr2AALauncherActivity = array of Arr1AALauncherActivity;
+  Arr3AALauncherActivity = array of Arr2AALauncherActivity;
+
+  APEditTextPreference = class;
+  Arr1APEditTextPreference = array of APEditTextPreference;
+  Arr2APEditTextPreference = array of Arr1APEditTextPreference;
+  Arr3APEditTextPreference = array of Arr2APEditTextPreference;
+
+  AGColorMatrix = class;
+  Arr1AGColorMatrix = array of AGColorMatrix;
+  Arr2AGColorMatrix = array of Arr1AGColorMatrix;
+  Arr3AGColorMatrix = array of Arr2AGColorMatrix;
+
+  AWTabWidget = class;
+  Arr1AWTabWidget = array of AWTabWidget;
+  Arr2AWTabWidget = array of Arr1AWTabWidget;
+  Arr3AWTabWidget = array of Arr2AWTabWidget;
+
+  ANWScanResult = class;
+  Arr1ANWScanResult = array of ANWScanResult;
+  Arr2ANWScanResult = array of Arr1ANWScanResult;
+  Arr3ANWScanResult = array of Arr2ANWScanResult;
+
+  AWWebBackForwardList = class;
+  Arr1AWWebBackForwardList = array of AWWebBackForwardList;
+  Arr2AWWebBackForwardList = array of Arr1AWWebBackForwardList;
+  Arr3AWWebBackForwardList = array of Arr2AWWebBackForwardList;
+
+  OAHICDefaultClientConnection = class;
+  Arr1OAHICDefaultClientConnection = array of OAHICDefaultClientConnection;
+  Arr2OAHICDefaultClientConnection = array of Arr1OAHICDefaultClientConnection;
+  Arr3OAHICDefaultClientConnection = array of Arr2OAHICDefaultClientConnection;
+
+  APSearchRecentSuggestions = class;
+  Arr1APSearchRecentSuggestions = array of APSearchRecentSuggestions;
+  Arr2APSearchRecentSuggestions = array of Arr1APSearchRecentSuggestions;
+  Arr3APSearchRecentSuggestions = array of Arr2APSearchRecentSuggestions;
+
+  ACBroadcastReceiver = class;
+  Arr1ACBroadcastReceiver = array of ACBroadcastReceiver;
+  Arr2ACBroadcastReceiver = array of Arr1ACBroadcastReceiver;
+  Arr3ACBroadcastReceiver = array of Arr2ACBroadcastReceiver;
+
+  JNCClosedChannelException = class;
+  Arr1JNCClosedChannelException = array of JNCClosedChannelException;
+  Arr2JNCClosedChannelException = array of Arr1JNCClosedChannelException;
+  Arr3JNCClosedChannelException = array of Arr2JNCClosedChannelException;
+
+  AWAdapterViewFlipper = class;
+  Arr1AWAdapterViewFlipper = array of AWAdapterViewFlipper;
+  Arr2AWAdapterViewFlipper = array of Arr1AWAdapterViewFlipper;
+  Arr3AWAdapterViewFlipper = array of Arr2AWAdapterViewFlipper;
+
+  AWTableRow = class;
+  Arr1AWTableRow = array of AWTableRow;
+  Arr2AWTableRow = array of Arr1AWTableRow;
+  Arr3AWTableRow = array of Arr2AWTableRow;
+
+  AGRadialGradient = class;
+  Arr1AGRadialGradient = array of AGRadialGradient;
+  Arr2AGRadialGradient = array of Arr1AGRadialGradient;
+  Arr3AGRadialGradient = array of Arr2AGRadialGradient;
+
+  JURPatternSyntaxException = class;
+  Arr1JURPatternSyntaxException = array of JURPatternSyntaxException;
+  Arr2JURPatternSyntaxException = array of Arr1JURPatternSyntaxException;
+  Arr3JURPatternSyntaxException = array of Arr2JURPatternSyntaxException;
+
+  AWListView = class;
+  Arr1AWListView = array of AWListView;
+  Arr2AWListView = array of Arr1AWListView;
+  Arr3AWListView = array of Arr2AWListView;
+
+  AAIntentService = class;
+  Arr1AAIntentService = array of AAIntentService;
+  Arr2AAIntentService = array of Arr1AAIntentService;
+  Arr3AAIntentService = array of Arr2AAIntentService;
+
+  ACPResolveInfo = class;
+  Arr1ACPResolveInfo = array of ACPResolveInfo;
+  Arr2ACPResolveInfo = array of Arr1ACPResolveInfo;
+  Arr3ACPResolveInfo = array of Arr2ACPResolveInfo;
+
+  JNSocketImpl = class;
+  Arr1JNSocketImpl = array of JNSocketImpl;
+  Arr2JNSocketImpl = array of Arr1JNSocketImpl;
+  Arr3JNSocketImpl = array of Arr2JNSocketImpl;
+
+  OAHICBrowserCompatSpecFactory = class;
+  Arr1OAHICBrowserCompatSpecFactory = array of OAHICBrowserCompatSpecFactory;
+  Arr2OAHICBrowserCompatSpecFactory = array of Arr1OAHICBrowserCompatSpecFactory;
+  Arr3OAHICBrowserCompatSpecFactory = array of Arr2OAHICBrowserCompatSpecFactory;
+
+  AAAccountsException = class;
+  Arr1AAAccountsException = array of AAAccountsException;
+  Arr2AAAccountsException = array of Arr1AAAccountsException;
+  Arr3AAAccountsException = array of Arr2AAAccountsException;
+
+  ADSSQLiteProgram = class;
+  Arr1ADSSQLiteProgram = array of ADSSQLiteProgram;
+  Arr2ADSSQLiteProgram = array of Arr1ADSSQLiteProgram;
+  Arr3ADSSQLiteProgram = array of Arr2ADSSQLiteProgram;
+
+  JSCPKIXCertPathBuilderResult = class;
+  Arr1JSCPKIXCertPathBuilderResult = array of JSCPKIXCertPathBuilderResult;
+  Arr2JSCPKIXCertPathBuilderResult = array of Arr1JSCPKIXCertPathBuilderResult;
+  Arr3JSCPKIXCertPathBuilderResult = array of Arr2JSCPKIXCertPathBuilderResult;
+
+  JCCipher = class;
+  Arr1JCCipher = array of JCCipher;
+  Arr2JCCipher = array of Arr1JCCipher;
+  Arr3JCCipher = array of Arr2JCCipher;
+
+  ANTNdef = class;
+  Arr1ANTNdef = array of ANTNdef;
+  Arr2ANTNdef = array of Arr1ANTNdef;
+  Arr3ANTNdef = array of Arr2ANTNdef;
+
+  JSAAclNotFoundException = class;
+  Arr1JSAAclNotFoundException = array of JSAAclNotFoundException;
+  Arr2JSAAclNotFoundException = array of Arr1JSAAclNotFoundException;
+  Arr3JSAAclNotFoundException = array of Arr2JSAAclNotFoundException;
+
+  AOTokenWatcher = class;
+  Arr1AOTokenWatcher = array of AOTokenWatcher;
+  Arr2AOTokenWatcher = array of Arr1AOTokenWatcher;
+  Arr3AOTokenWatcher = array of Arr2AOTokenWatcher;
+
+  ATAnnotation = class;
+  Arr1ATAnnotation = array of ATAnnotation;
+  Arr2ATAnnotation = array of Arr1ATAnnotation;
+  Arr3ATAnnotation = array of Arr2ATAnnotation;
+
+  ANLocalSocket = class;
+  Arr1ANLocalSocket = array of ANLocalSocket;
+  Arr2ANLocalSocket = array of Arr1ANLocalSocket;
+  Arr3ANLocalSocket = array of Arr2ANLocalSocket;
+
+  AAAliasActivity = class;
+  Arr1AAAliasActivity = array of AAAliasActivity;
+  Arr2AAAliasActivity = array of Arr1AAAliasActivity;
+  Arr3AAAliasActivity = array of Arr2AAAliasActivity;
+
+  JNCNoConnectionPendingException = class;
+  Arr1JNCNoConnectionPendingException = array of JNCNoConnectionPendingException;
+  Arr2JNCNoConnectionPendingException = array of Arr1JNCNoConnectionPendingException;
+  Arr3JNCNoConnectionPendingException = array of Arr2JNCNoConnectionPendingException;
+
+  AAAlarmManager = class;
+  Arr1AAAlarmManager = array of AAAlarmManager;
+  Arr2AAAlarmManager = array of Arr1AAAlarmManager;
+  Arr3AAAlarmManager = array of Arr2AAAlarmManager;
+
+  JIPrintStream = class;
+  Arr1JIPrintStream = array of JIPrintStream;
+  Arr2JIPrintStream = array of Arr1JIPrintStream;
+  Arr3JIPrintStream = array of Arr2JIPrintStream;
+
+  JUCExecutors = class;
+  Arr1JUCExecutors = array of JUCExecutors;
+  Arr2JUCExecutors = array of Arr1JUCExecutors;
+  Arr3JUCExecutors = array of Arr2JUCExecutors;
+
+  JILineNumberReader = class;
+  Arr1JILineNumberReader = array of JILineNumberReader;
+  Arr2JILineNumberReader = array of Arr1JILineNumberReader;
+  Arr3JILineNumberReader = array of Arr2JILineNumberReader;
+
+  JURMatcher = class;
+  Arr1JURMatcher = array of JURMatcher;
+  Arr2JURMatcher = array of Arr1JURMatcher;
+  Arr3JURMatcher = array of Arr2JURMatcher;
+
+  JNInet6Address = class;
+  Arr1JNInet6Address = array of JNInet6Address;
+  Arr2JNInet6Address = array of Arr1JNInet6Address;
+  Arr3JNInet6Address = array of Arr2JNInet6Address;
+
+  ADSSQLiteConstraintException = class;
+  Arr1ADSSQLiteConstraintException = array of ADSSQLiteConstraintException;
+  Arr2ADSSQLiteConstraintException = array of Arr1ADSSQLiteConstraintException;
+  Arr3ADSSQLiteConstraintException = array of Arr2ADSSQLiteConstraintException;
+
+  OAHAAuthScope = class;
+  Arr1OAHAAuthScope = array of OAHAAuthScope;
+  Arr2OAHAAuthScope = array of Arr1OAHAAuthScope;
+  Arr3OAHAAuthScope = array of Arr2OAHAAuthScope;
+
+  JUCFutureTask = class;
+  Arr1JUCFutureTask = array of JUCFutureTask;
+  Arr2JUCFutureTask = array of Arr1JUCFutureTask;
+  Arr3JUCFutureTask = array of Arr2JUCFutureTask;
+
+  JULFormatter = class;
+  Arr1JULFormatter = array of JULFormatter;
+  Arr2JULFormatter = array of Arr1JULFormatter;
+  Arr3JULFormatter = array of Arr2JULFormatter;
+
+  AUBase64DataException = class;
+  Arr1AUBase64DataException = array of AUBase64DataException;
+  Arr2AUBase64DataException = array of Arr1AUBase64DataException;
+  Arr3AUBase64DataException = array of Arr2AUBase64DataException;
+
+  JLThreadDeath = class;
+  Arr1JLThreadDeath = array of JLThreadDeath;
+  Arr2JLThreadDeath = array of Arr1JLThreadDeath;
+  Arr3JLThreadDeath = array of Arr2JLThreadDeath;
+
+  JNSSSLServerSocket = class;
+  Arr1JNSSSLServerSocket = array of JNSSSLServerSocket;
+  Arr2JNSSSLServerSocket = array of Arr1JNSSSLServerSocket;
+  Arr3JNSSSLServerSocket = array of Arr2JNSSSLServerSocket;
+
+  ATSURLSpan = class;
+  Arr1ATSURLSpan = array of ATSURLSpan;
+  Arr2ATSURLSpan = array of Arr1ATSURLSpan;
+  Arr3ATSURLSpan = array of Arr2ATSURLSpan;
+
+  AGXfermode = class;
+  Arr1AGXfermode = array of AGXfermode;
+  Arr2AGXfermode = array of Arr1AGXfermode;
+  Arr3AGXfermode = array of Arr2AGXfermode;
+
+  OAHICWire = class;
+  Arr1OAHICWire = array of OAHICWire;
+  Arr2OAHICWire = array of Arr1OAHICWire;
+  Arr3OAHICWire = array of Arr2OAHICWire;
+
+  JUCConcurrentLinkedQueue = class;
+  Arr1JUCConcurrentLinkedQueue = array of JUCConcurrentLinkedQueue;
+  Arr2JUCConcurrentLinkedQueue = array of Arr1JUCConcurrentLinkedQueue;
+  Arr3JUCConcurrentLinkedQueue = array of Arr2JUCConcurrentLinkedQueue;
+
+  AGShader = class;
+  Arr1AGShader = array of AGShader;
+  Arr2AGShader = array of Arr1AGShader;
+  Arr3AGShader = array of Arr2AGShader;
+
+  AADialogFragment = class;
+  Arr1AADialogFragment = array of AADialogFragment;
+  Arr2AADialogFragment = array of Arr1AADialogFragment;
+  Arr3AADialogFragment = array of Arr2AADialogFragment;
+
+  JFTestCase = class;
+  Arr1JFTestCase = array of JFTestCase;
+  Arr2JFTestCase = array of Arr1JFTestCase;
+  Arr3JFTestCase = array of Arr2JFTestCase;
+
+  JLRReference = class;
+  Arr1JLRReference = array of JLRReference;
+  Arr2JLRReference = array of Arr1JLRReference;
+  Arr3JLRReference = array of Arr2JLRReference;
+
+  JSALastOwnerException = class;
+  Arr1JSALastOwnerException = array of JSALastOwnerException;
+  Arr2JSALastOwnerException = array of Arr1JSALastOwnerException;
+  Arr3JSALastOwnerException = array of Arr2JSALastOwnerException;
+
+  JUZInflater = class;
+  Arr1JUZInflater = array of JUZInflater;
+  Arr2JUZInflater = array of Arr1JUZInflater;
+  Arr3JUZInflater = array of Arr2JUZInflater;
+
+  OAHMBasicListHeaderIterator = class;
+  Arr1OAHMBasicListHeaderIterator = array of OAHMBasicListHeaderIterator;
+  Arr2OAHMBasicListHeaderIterator = array of Arr1OAHMBasicListHeaderIterator;
+  Arr3OAHMBasicListHeaderIterator = array of Arr2OAHMBasicListHeaderIterator;
+
+  JUCAAtomicReference = class;
+  Arr1JUCAAtomicReference = array of JUCAAtomicReference;
+  Arr2JUCAAtomicReference = array of Arr1JUCAAtomicReference;
+  Arr3JUCAAtomicReference = array of Arr2JUCAAtomicReference;
+
+  AWGeolocationPermissions = class;
+  Arr1AWGeolocationPermissions = array of AWGeolocationPermissions;
+  Arr2AWGeolocationPermissions = array of Arr1AWGeolocationPermissions;
+  Arr3AWGeolocationPermissions = array of Arr2AWGeolocationPermissions;
+
+  JSSignatureSpi = class;
+  Arr1JSSignatureSpi = array of JSSignatureSpi;
+  Arr2JSSignatureSpi = array of Arr1JSSignatureSpi;
+  Arr3JSSignatureSpi = array of Arr2JSSignatureSpi;
+
+  OXSHAttributeListImpl = class;
+  Arr1OXSHAttributeListImpl = array of OXSHAttributeListImpl;
+  Arr2OXSHAttributeListImpl = array of Arr1OXSHAttributeListImpl;
+  Arr3OXSHAttributeListImpl = array of Arr2OXSHAttributeListImpl;
+
+  JSSecurity = class;
+  Arr1JSSecurity = array of JSSecurity;
+  Arr2JSSecurity = array of Arr1JSSecurity;
+  Arr3JSSecurity = array of Arr2JSSecurity;
+
+  OXVXmlPullParserException = class;
+  Arr1OXVXmlPullParserException = array of OXVXmlPullParserException;
+  Arr2OXVXmlPullParserException = array of Arr1OXVXmlPullParserException;
+  Arr3OXVXmlPullParserException = array of Arr2OXVXmlPullParserException;
+
+  JMMathContext = class;
+  Arr1JMMathContext = array of JMMathContext;
+  Arr2JMMathContext = array of Arr1JMMathContext;
+  Arr3JMMathContext = array of Arr2JMMathContext;
+
+  ATSpannableString = class;
+  Arr1ATSpannableString = array of ATSpannableString;
+  Arr2ATSpannableString = array of Arr1ATSpannableString;
+  Arr3ATSpannableString = array of Arr2ATSpannableString;
+
+  OAHPHttpProtocolParams = class;
+  Arr1OAHPHttpProtocolParams = array of OAHPHttpProtocolParams;
+  Arr2OAHPHttpProtocolParams = array of Arr1OAHPHttpProtocolParams;
+  Arr3OAHPHttpProtocolParams = array of Arr2OAHPHttpProtocolParams;
+
+  OAHICBasicCredentialsProvider = class;
+  Arr1OAHICBasicCredentialsProvider = array of OAHICBasicCredentialsProvider;
+  Arr2OAHICBasicCredentialsProvider = array of Arr1OAHICBasicCredentialsProvider;
+  Arr3OAHICBasicCredentialsProvider = array of Arr2OAHICBasicCredentialsProvider;
+
+  ATURfc822Tokenizer = class;
+  Arr1ATURfc822Tokenizer = array of ATURfc822Tokenizer;
+  Arr2ATURfc822Tokenizer = array of Arr1ATURfc822Tokenizer;
+  Arr3ATURfc822Tokenizer = array of Arr2ATURfc822Tokenizer;
+
+  OAHIIAbstractSessionOutputBuffer = class;
+  Arr1OAHIIAbstractSessionOutputBuffer = array of OAHIIAbstractSessionOutputBuffer;
+  Arr2OAHIIAbstractSessionOutputBuffer = array of Arr1OAHIIAbstractSessionOutputBuffer;
+  Arr3OAHIIAbstractSessionOutputBuffer = array of Arr2OAHIIAbstractSessionOutputBuffer;
+
+  OAHICBasicCommentHandler = class;
+  Arr1OAHICBasicCommentHandler = array of OAHICBasicCommentHandler;
+  Arr2OAHICBasicCommentHandler = array of Arr1OAHICBasicCommentHandler;
+  Arr3OAHICBasicCommentHandler = array of Arr2OAHICBasicCommentHandler;
+
+  OAHICTBasicPoolEntryRef = class;
+  Arr1OAHICTBasicPoolEntryRef = array of OAHICTBasicPoolEntryRef;
+  Arr2OAHICTBasicPoolEntryRef = array of Arr1OAHICTBasicPoolEntryRef;
+  Arr3OAHICTBasicPoolEntryRef = array of Arr2OAHICTBasicPoolEntryRef;
+
+  AWResourceCursorAdapter = class;
+  Arr1AWResourceCursorAdapter = array of AWResourceCursorAdapter;
+  Arr2AWResourceCursorAdapter = array of Arr1AWResourceCursorAdapter;
+  Arr3AWResourceCursorAdapter = array of Arr2AWResourceCursorAdapter;
+
+  JNCookieManager = class;
+  Arr1JNCookieManager = array of JNCookieManager;
+  Arr2JNCookieManager = array of Arr1JNCookieManager;
+  Arr3JNCookieManager = array of Arr2JNCookieManager;
+
+  AVFocusFinder = class;
+  Arr1AVFocusFinder = array of AVFocusFinder;
+  Arr2AVFocusFinder = array of Arr1AVFocusFinder;
+  Arr3AVFocusFinder = array of Arr2AVFocusFinder;
+
+  AVAAnimation = class;
+  Arr1AVAAnimation = array of AVAAnimation;
+  Arr2AVAAnimation = array of Arr1AVAAnimation;
+  Arr3AVAAnimation = array of Arr2AVAAnimation;
+
+  JNSocketException = class;
+  Arr1JNSocketException = array of JNSocketException;
+  Arr2JNSocketException = array of Arr1JNSocketException;
+  Arr3JNSocketException = array of Arr2JNSocketException;
+
+  AWButton = class;
+  Arr1AWButton = array of AWButton;
+  Arr2AWButton = array of Arr1AWButton;
+  Arr3AWButton = array of Arr2AWButton;
+
+  JISequenceInputStream = class;
+  Arr1JISequenceInputStream = array of JISequenceInputStream;
+  Arr2JISequenceInputStream = array of Arr1JISequenceInputStream;
+  Arr3JISequenceInputStream = array of Arr2JISequenceInputStream;
+
+  JSMessageDigestSpi = class;
+  Arr1JSMessageDigestSpi = array of JSMessageDigestSpi;
+  Arr2JSMessageDigestSpi = array of Arr1JSMessageDigestSpi;
+  Arr3JSMessageDigestSpi = array of Arr2JSMessageDigestSpi;
+
+  ADCharArrayBuffer = class;
+  Arr1ADCharArrayBuffer = array of ADCharArrayBuffer;
+  Arr2ADCharArrayBuffer = array of Arr1ADCharArrayBuffer;
+  Arr3ADCharArrayBuffer = array of Arr2ADCharArrayBuffer;
+
+  JTDateFormat = class;
+  Arr1JTDateFormat = array of JTDateFormat;
+  Arr2JTDateFormat = array of Arr1JTDateFormat;
+  Arr3JTDateFormat = array of Arr2JTDateFormat;
+
+  OAHPUriPatternMatcher = class;
+  Arr1OAHPUriPatternMatcher = array of OAHPUriPatternMatcher;
+  Arr2OAHPUriPatternMatcher = array of Arr1OAHPUriPatternMatcher;
+  Arr3OAHPUriPatternMatcher = array of Arr2OAHPUriPatternMatcher;
+
+  JLAIncompleteAnnotationException = class;
+  Arr1JLAIncompleteAnnotationException = array of JLAIncompleteAnnotationException;
+  Arr2JLAIncompleteAnnotationException = array of Arr1JLAIncompleteAnnotationException;
+  Arr3JLAIncompleteAnnotationException = array of Arr2JLAIncompleteAnnotationException;
+
+  AWZoomButton = class;
+  Arr1AWZoomButton = array of AWZoomButton;
+  Arr2AWZoomButton = array of Arr1AWZoomButton;
+  Arr3AWZoomButton = array of Arr2AWZoomButton;
+
+  AWWebIconDatabase = class;
+  Arr1AWWebIconDatabase = array of AWWebIconDatabase;
+  Arr2AWWebIconDatabase = array of Arr1AWWebIconDatabase;
+  Arr3AWWebIconDatabase = array of Arr2AWWebIconDatabase;
+
+  OAHICTThreadSafeClientConnManager = class;
+  Arr1OAHICTThreadSafeClientConnManager = array of OAHICTThreadSafeClientConnManager;
+  Arr2OAHICTThreadSafeClientConnManager = array of Arr1OAHICTThreadSafeClientConnManager;
+  Arr3OAHICTThreadSafeClientConnManager = array of Arr2OAHICTThreadSafeClientConnManager;
+
+  AIKeyboardView = class;
+  Arr1AIKeyboardView = array of AIKeyboardView;
+  Arr2AIKeyboardView = array of Arr1AIKeyboardView;
+  Arr3AIKeyboardView = array of Arr2AIKeyboardView;
+
+  JIOutputStream = class;
+  Arr1JIOutputStream = array of JIOutputStream;
+  Arr2JIOutputStream = array of Arr1JIOutputStream;
+  Arr3JIOutputStream = array of Arr2JIOutputStream;
+
+  JNCClosedByInterruptException = class;
+  Arr1JNCClosedByInterruptException = array of JNCClosedByInterruptException;
+  Arr2JNCClosedByInterruptException = array of Arr1JNCClosedByInterruptException;
+  Arr3JNCClosedByInterruptException = array of Arr2JNCClosedByInterruptException;
+
+  ADSSQLiteBindOrColumnIndexOutOfRangeException = class;
+  Arr1ADSSQLiteBindOrColumnIndexOutOfRangeException = array of ADSSQLiteBindOrColumnIndexOutOfRangeException;
+  Arr2ADSSQLiteBindOrColumnIndexOutOfRangeException = array of Arr1ADSSQLiteBindOrColumnIndexOutOfRangeException;
+  Arr3ADSSQLiteBindOrColumnIndexOutOfRangeException = array of Arr2ADSSQLiteBindOrColumnIndexOutOfRangeException;
+
+  AOCountDownTimer = class;
+  Arr1AOCountDownTimer = array of AOCountDownTimer;
+  Arr2AOCountDownTimer = array of Arr1AOCountDownTimer;
+  Arr3AOCountDownTimer = array of Arr2AOCountDownTimer;
+
+  AOEnvironment = class;
+  Arr1AOEnvironment = array of AOEnvironment;
+  Arr2AOEnvironment = array of Arr1AOEnvironment;
+  Arr3AOEnvironment = array of Arr2AOEnvironment;
+
+  JNServerSocket = class;
+  Arr1JNServerSocket = array of JNServerSocket;
+  Arr2JNServerSocket = array of Arr1JNServerSocket;
+  Arr3JNServerSocket = array of Arr2JNServerSocket;
+
+  AMAVisualizer = class;
+  Arr1AMAVisualizer = array of AMAVisualizer;
+  Arr2AMAVisualizer = array of Arr1AMAVisualizer;
+  Arr3AMAVisualizer = array of Arr2AMAVisualizer;
+
+  JUTimerTask = class;
+  Arr1JUTimerTask = array of JUTimerTask;
+  Arr2JUTimerTask = array of Arr1JUTimerTask;
+  Arr3JUTimerTask = array of Arr2JUTimerTask;
+
+  JUAbstractList = class;
+  Arr1JUAbstractList = array of JUAbstractList;
+  Arr2JUAbstractList = array of Arr1JUAbstractList;
+  Arr3JUAbstractList = array of Arr2JUAbstractList;
+
+  JUPNodeChangeEvent = class;
+  Arr1JUPNodeChangeEvent = array of JUPNodeChangeEvent;
+  Arr2JUPNodeChangeEvent = array of Arr1JUPNodeChangeEvent;
+  Arr3JUPNodeChangeEvent = array of Arr2JUPNodeChangeEvent;
+
+  JLRuntimePermission = class;
+  Arr1JLRuntimePermission = array of JLRuntimePermission;
+  Arr2JLRuntimePermission = array of Arr1JLRuntimePermission;
+  Arr3JLRuntimePermission = array of Arr2JLRuntimePermission;
+
+  JCSSecretKeySpec = class;
+  Arr1JCSSecretKeySpec = array of JCSSecretKeySpec;
+  Arr2JCSSecretKeySpec = array of Arr1JCSSecretKeySpec;
+  Arr3JCSSecretKeySpec = array of Arr2JCSSecretKeySpec;
+
+  ATSStrikethroughSpan = class;
+  Arr1ATSStrikethroughSpan = array of ATSStrikethroughSpan;
+  Arr2ATSStrikethroughSpan = array of Arr1ATSStrikethroughSpan;
+  Arr3ATSStrikethroughSpan = array of Arr2ATSStrikethroughSpan;
+
+  JNURISyntaxException = class;
+  Arr1JNURISyntaxException = array of JNURISyntaxException;
+  Arr2JNURISyntaxException = array of Arr1JNURISyntaxException;
+  Arr3JNURISyntaxException = array of Arr2JNURISyntaxException;
+
+  JLAssertionError = class;
+  Arr1JLAssertionError = array of JLAssertionError;
+  Arr2JLAssertionError = array of Arr1JLAssertionError;
+  Arr3JLAssertionError = array of Arr2JLAssertionError;
+
+  OAHCMHttpPost = class;
+  Arr1OAHCMHttpPost = array of OAHCMHttpPost;
+  Arr2OAHCMHttpPost = array of Arr1OAHCMHttpPost;
+  Arr3OAHCMHttpPost = array of Arr2OAHCMHttpPost;
+
+  JIFileOutputStream = class;
+  Arr1JIFileOutputStream = array of JIFileOutputStream;
+  Arr2JIFileOutputStream = array of Arr1JIFileOutputStream;
+  Arr3JIFileOutputStream = array of Arr2JIFileOutputStream;
+
+  JNCClosedSelectorException = class;
+  Arr1JNCClosedSelectorException = array of JNCClosedSelectorException;
+  Arr2JNCClosedSelectorException = array of Arr1JNCClosedSelectorException;
+  Arr3JNCClosedSelectorException = array of Arr2JNCClosedSelectorException;
+
+  JNBindException = class;
+  Arr1JNBindException = array of JNBindException;
+  Arr2JNBindException = array of Arr1JNBindException;
+  Arr3JNBindException = array of Arr2JNBindException;
+
+  ANTBasicTagTechnology = class;
+  Arr1ANTBasicTagTechnology = array of ANTBasicTagTechnology;
+  Arr2ANTBasicTagTechnology = array of Arr1ANTBasicTagTechnology;
+  Arr3ANTBasicTagTechnology = array of Arr2ANTBasicTagTechnology;
+
+  JCExemptionMechanismSpi = class;
+  Arr1JCExemptionMechanismSpi = array of JCExemptionMechanismSpi;
+  Arr2JCExemptionMechanismSpi = array of Arr1JCExemptionMechanismSpi;
+  Arr3JCExemptionMechanismSpi = array of Arr2JCExemptionMechanismSpi;
+
+  JULXMLFormatter = class;
+  Arr1JULXMLFormatter = array of JULXMLFormatter;
+  Arr2JULXMLFormatter = array of Arr1JULXMLFormatter;
+  Arr3JULXMLFormatter = array of Arr2JULXMLFormatter;
+
+  AIKeyboard = class;
+  Arr1AIKeyboard = array of AIKeyboard;
+  Arr2AIKeyboard = array of Arr1AIKeyboard;
+  Arr3AIKeyboard = array of Arr2AIKeyboard;
+
+  AABBackupDataInputStream = class;
+  Arr1AABBackupDataInputStream = array of AABBackupDataInputStream;
+  Arr2AABBackupDataInputStream = array of Arr1AABBackupDataInputStream;
+  Arr3AABBackupDataInputStream = array of Arr2AABBackupDataInputStream;
+
+  OAHProtocolVersion = class;
+  Arr1OAHProtocolVersion = array of OAHProtocolVersion;
+  Arr2OAHProtocolVersion = array of Arr1OAHProtocolVersion;
+  Arr3OAHProtocolVersion = array of Arr2OAHProtocolVersion;
+
+  JSSQLPermission = class;
+  Arr1JSSQLPermission = array of JSSQLPermission;
+  Arr2JSSQLPermission = array of Arr1JSSQLPermission;
+  Arr3JSSQLPermission = array of Arr2JSSQLPermission;
+
+  JLStringIndexOutOfBoundsException = class;
+  Arr1JLStringIndexOutOfBoundsException = array of JLStringIndexOutOfBoundsException;
+  Arr2JLStringIndexOutOfBoundsException = array of Arr1JLStringIndexOutOfBoundsException;
+  Arr3JLStringIndexOutOfBoundsException = array of Arr2JLStringIndexOutOfBoundsException;
+
+  ANNdefMessage = class;
+  Arr1ANNdefMessage = array of ANNdefMessage;
+  Arr2ANNdefMessage = array of Arr1ANNdefMessage;
+  Arr3ANNdefMessage = array of Arr2ANNdefMessage;
+
+  JUCExecutorCompletionService = class;
+  Arr1JUCExecutorCompletionService = array of JUCExecutorCompletionService;
+  Arr2JUCExecutorCompletionService = array of Arr1JUCExecutorCompletionService;
+  Arr3JUCExecutorCompletionService = array of Arr2JUCExecutorCompletionService;
+
+  AGDLevelListDrawable = class;
+  Arr1AGDLevelListDrawable = array of AGDLevelListDrawable;
+  Arr2AGDLevelListDrawable = array of Arr1AGDLevelListDrawable;
+  Arr3AGDLevelListDrawable = array of Arr2AGDLevelListDrawable;
+
+  AGOrientedBoundingBox = class;
+  Arr1AGOrientedBoundingBox = array of AGOrientedBoundingBox;
+  Arr2AGOrientedBoundingBox = array of Arr1AGOrientedBoundingBox;
+  Arr3AGOrientedBoundingBox = array of Arr2AGOrientedBoundingBox;
+
+  OAHMBasicStatusLine = class;
+  Arr1OAHMBasicStatusLine = array of OAHMBasicStatusLine;
+  Arr2OAHMBasicStatusLine = array of Arr1OAHMBasicStatusLine;
+  Arr3OAHMBasicStatusLine = array of Arr2OAHMBasicStatusLine;
+
+  ATMDateTimeKeyListener = class;
+  Arr1ATMDateTimeKeyListener = array of ATMDateTimeKeyListener;
+  Arr2ATMDateTimeKeyListener = array of Arr1ATMDateTimeKeyListener;
+  Arr3ATMDateTimeKeyListener = array of Arr2ATMDateTimeKeyListener;
+
+  ARProgramRaster = class;
+  Arr1ARProgramRaster = array of ARProgramRaster;
+  Arr2ARProgramRaster = array of Arr1ARProgramRaster;
+  Arr3ARProgramRaster = array of Arr2ARProgramRaster;
+
+  AMMediaMetadataRetriever = class;
+  Arr1AMMediaMetadataRetriever = array of AMMediaMetadataRetriever;
+  Arr2AMMediaMetadataRetriever = array of Arr1AMMediaMetadataRetriever;
+  Arr3AMMediaMetadataRetriever = array of Arr2AMMediaMetadataRetriever;
+
+  JICharArrayWriter = class;
+  Arr1JICharArrayWriter = array of JICharArrayWriter;
+  Arr2JICharArrayWriter = array of Arr1JICharArrayWriter;
+  Arr3JICharArrayWriter = array of Arr2JICharArrayWriter;
+
+  OAHAPAuthParamBean = class;
+  Arr1OAHAPAuthParamBean = array of OAHAPAuthParamBean;
+  Arr2OAHAPAuthParamBean = array of Arr1OAHAPAuthParamBean;
+  Arr3OAHAPAuthParamBean = array of Arr2OAHAPAuthParamBean;
+
+  AOHandlerThread = class;
+  Arr1AOHandlerThread = array of AOHandlerThread;
+  Arr2AOHandlerThread = array of Arr1AOHandlerThread;
+  Arr3AOHandlerThread = array of Arr2AOHandlerThread;
+
+  JUCConcurrentSkipListSet = class;
+  Arr1JUCConcurrentSkipListSet = array of JUCConcurrentSkipListSet;
+  Arr2JUCConcurrentSkipListSet = array of Arr1JUCConcurrentSkipListSet;
+  Arr3JUCConcurrentSkipListSet = array of Arr2JUCConcurrentSkipListSet;
+
+  AMJetPlayer = class;
+  Arr1AMJetPlayer = array of AMJetPlayer;
+  Arr2AMJetPlayer = array of Arr1AMJetPlayer;
+  Arr3AMJetPlayer = array of Arr2AMJetPlayer;
+
+  AVWindow = class;
+  Arr1AVWindow = array of AVWindow;
+  Arr2AVWindow = array of Arr1AVWindow;
+  Arr3AVWindow = array of Arr2AVWindow;
+
+  AUXml = class;
+  Arr1AUXml = array of AUXml;
+  Arr2AUXml = array of Arr1AUXml;
+  Arr3AUXml = array of Arr2AUXml;
+
+  JIBufferedOutputStream = class;
+  Arr1JIBufferedOutputStream = array of JIBufferedOutputStream;
+  Arr2JIBufferedOutputStream = array of Arr1JIBufferedOutputStream;
+  Arr3JIBufferedOutputStream = array of Arr2JIBufferedOutputStream;
+
+  JSCCertPathValidatorSpi = class;
+  Arr1JSCCertPathValidatorSpi = array of JSCCertPathValidatorSpi;
+  Arr2JSCCertPathValidatorSpi = array of Arr1JSCCertPathValidatorSpi;
+  Arr3JSCCertPathValidatorSpi = array of Arr2JSCCertPathValidatorSpi;
+
+  JLClassCircularityError = class;
+  Arr1JLClassCircularityError = array of JLClassCircularityError;
+  Arr2JLClassCircularityError = array of Arr1JLClassCircularityError;
+  Arr3JLClassCircularityError = array of Arr2JLClassCircularityError;
+
+  AGDSArcShape = class;
+  Arr1AGDSArcShape = array of AGDSArcShape;
+  Arr2AGDSArcShape = array of Arr1AGDSArcShape;
+  Arr3AGDSArcShape = array of Arr2AGDSArcShape;
+
+  ANWWifiManager = class;
+  Arr1ANWWifiManager = array of ANWWifiManager;
+  Arr2ANWWifiManager = array of Arr1ANWWifiManager;
+  Arr3ANWWifiManager = array of Arr2ANWWifiManager;
+
+  JLClassLoader = class;
+  Arr1JLClassLoader = array of JLClassLoader;
+  Arr2JLClassLoader = array of Arr1JLClassLoader;
+  Arr3JLClassLoader = array of Arr2JLClassLoader;
+
+  JUCLReentrantLock = class;
+  Arr1JUCLReentrantLock = array of JUCLReentrantLock;
+  Arr2JUCLReentrantLock = array of Arr1JUCLReentrantLock;
+  Arr3JUCLReentrantLock = array of Arr2JUCLReentrantLock;
+
+  AABRestoreObserver = class;
+  Arr1AABRestoreObserver = array of AABRestoreObserver;
+  Arr2AABRestoreObserver = array of Arr1AABRestoreObserver;
+  Arr3AABRestoreObserver = array of Arr2AABRestoreObserver;
+
+  JUFormattableFlags = class;
+  Arr1JUFormattableFlags = array of JUFormattableFlags;
+  Arr2JUFormattableFlags = array of Arr1JUFormattableFlags;
+  Arr3JUFormattableFlags = array of Arr2JUFormattableFlags;
+
+  ATSStyleSpan = class;
+  Arr1ATSStyleSpan = array of ATSStyleSpan;
+  Arr2ATSStyleSpan = array of Arr1ATSStyleSpan;
+  Arr3ATSStyleSpan = array of Arr2ATSStyleSpan;
+
+  JSGuardedObject = class;
+  Arr1JSGuardedObject = array of JSGuardedObject;
+  Arr2JSGuardedObject = array of Arr1JSGuardedObject;
+  Arr3JSGuardedObject = array of Arr2JSGuardedObject;
+
+  AWSslErrorHandler = class;
+  Arr1AWSslErrorHandler = array of AWSslErrorHandler;
+  Arr2AWSslErrorHandler = array of Arr1AWSslErrorHandler;
+  Arr3AWSslErrorHandler = array of Arr2AWSslErrorHandler;
+
+  AVInputDevice = class;
+  Arr1AVInputDevice = array of AVInputDevice;
+  Arr2AVInputDevice = array of Arr1AVInputDevice;
+  Arr3AVInputDevice = array of Arr2AVInputDevice;
+
+  OAHCMHttpDelete = class;
+  Arr1OAHCMHttpDelete = array of OAHCMHttpDelete;
+  Arr2OAHCMHttpDelete = array of Arr1OAHCMHttpDelete;
+  Arr3OAHCMHttpDelete = array of Arr2OAHCMHttpDelete;
+
+  AVGravity = class;
+  Arr1AVGravity = array of AVGravity;
+  Arr2AVGravity = array of Arr1AVGravity;
+  Arr3AVGravity = array of Arr2AVGravity;
+
+  AWScroller = class;
+  Arr1AWScroller = array of AWScroller;
+  Arr2AWScroller = array of Arr1AWScroller;
+  Arr3AWScroller = array of Arr2AWScroller;
+
+  AOBuild = class;
+  Arr1AOBuild = array of AOBuild;
+  Arr2AOBuild = array of Arr1AOBuild;
+  Arr3AOBuild = array of Arr2AOBuild;
+
+  JSCCertificate = class;
+  Arr1JSCCertificate = array of JSCCertificate;
+  Arr2JSCCertificate = array of Arr1JSCCertificate;
+  Arr3JSCCertificate = array of Arr2JSCCertificate;
+
+  JSGeneralSecurityException = class;
+  Arr1JSGeneralSecurityException = array of JSGeneralSecurityException;
+  Arr2JSGeneralSecurityException = array of Arr1JSGeneralSecurityException;
+  Arr3JSGeneralSecurityException = array of Arr2JSGeneralSecurityException;
+
+  JSSECPoint = class;
+  Arr1JSSECPoint = array of JSSECPoint;
+  Arr2JSSECPoint = array of Arr1JSSECPoint;
+  Arr3JSSECPoint = array of Arr2JSSECPoint;
+
+  ATGSmsMessage = class;
+  Arr1ATGSmsMessage = array of ATGSmsMessage;
+  Arr2ATGSmsMessage = array of Arr1ATGSmsMessage;
+  Arr3ATGSmsMessage = array of Arr2ATGSmsMessage;
+
+  ACSyncAdapterType = class;
+  Arr1ACSyncAdapterType = array of ACSyncAdapterType;
+  Arr2ACSyncAdapterType = array of Arr1ACSyncAdapterType;
+  Arr3ACSyncAdapterType = array of Arr2ACSyncAdapterType;
+
+  AHCamera = class;
+  Arr1AHCamera = array of AHCamera;
+  Arr2AHCamera = array of Arr1AHCamera;
+  Arr3AHCamera = array of Arr2AHCamera;
+
+  ACReceiverCallNotAllowedException = class;
+  Arr1ACReceiverCallNotAllowedException = array of ACReceiverCallNotAllowedException;
+  Arr2ACReceiverCallNotAllowedException = array of Arr1ACReceiverCallNotAllowedException;
+  Arr3ACReceiverCallNotAllowedException = array of Arr2ACReceiverCallNotAllowedException;
+
+  JNMalformedURLException = class;
+  Arr1JNMalformedURLException = array of JNMalformedURLException;
+  Arr2JNMalformedURLException = array of Arr1JNMalformedURLException;
+  Arr3JNMalformedURLException = array of Arr2JNMalformedURLException;
+
+  ATAndroidTestRunner = class;
+  Arr1ATAndroidTestRunner = array of ATAndroidTestRunner;
+  Arr2ATAndroidTestRunner = array of Arr1ATAndroidTestRunner;
+  Arr3ATAndroidTestRunner = array of Arr2ATAndroidTestRunner;
+
+  AWRadioButton = class;
+  Arr1AWRadioButton = array of AWRadioButton;
+  Arr2AWRadioButton = array of Arr1AWRadioButton;
+  Arr3AWRadioButton = array of Arr2AWRadioButton;
+
+  JNInvalidMarkException = class;
+  Arr1JNInvalidMarkException = array of JNInvalidMarkException;
+  Arr2JNInvalidMarkException = array of Arr1JNInvalidMarkException;
+  Arr3JNInvalidMarkException = array of Arr2JNInvalidMarkException;
+
+  AADatePickerDialog = class;
+  Arr1AADatePickerDialog = array of AADatePickerDialog;
+  Arr2AADatePickerDialog = array of Arr1AADatePickerDialog;
+  Arr3AADatePickerDialog = array of Arr2AADatePickerDialog;
+
+  ATSTextAppearanceSpan = class;
+  Arr1ATSTextAppearanceSpan = array of ATSTextAppearanceSpan;
+  Arr2ATSTextAppearanceSpan = array of Arr1ATSTextAppearanceSpan;
+  Arr3ATSTextAppearanceSpan = array of Arr2ATSTextAppearanceSpan;
+
+  JIObjectStreamClass = class;
+  Arr1JIObjectStreamClass = array of JIObjectStreamClass;
+  Arr2JIObjectStreamClass = array of Arr1JIObjectStreamClass;
+  Arr3JIObjectStreamClass = array of Arr2JIObjectStreamClass;
+
+  AGRegionIterator = class;
+  Arr1AGRegionIterator = array of AGRegionIterator;
+  Arr2AGRegionIterator = array of Arr1AGRegionIterator;
+  Arr3AGRegionIterator = array of Arr2AGRegionIterator;
+
+  JNInet4Address = class;
+  Arr1JNInet4Address = array of JNInet4Address;
+  Arr2JNInet4Address = array of Arr1JNInet4Address;
+  Arr3JNInet4Address = array of Arr2JNInet4Address;
+
+  AMAEqualizer = class;
+  Arr1AMAEqualizer = array of AMAEqualizer;
+  Arr2AMAEqualizer = array of Arr1AMAEqualizer;
+  Arr3AMAEqualizer = array of Arr2AMAEqualizer;
+
+  AWAbsSpinner = class;
+  Arr1AWAbsSpinner = array of AWAbsSpinner;
+  Arr2AWAbsSpinner = array of Arr1AWAbsSpinner;
+  Arr3AWAbsSpinner = array of Arr2AWAbsSpinner;
+
+  APPreferenceGroup = class;
+  Arr1APPreferenceGroup = array of APPreferenceGroup;
+  Arr2APPreferenceGroup = array of Arr1APPreferenceGroup;
+  Arr3APPreferenceGroup = array of Arr2APPreferenceGroup;
+
+  AUJsonToken = class;
+  Arr1AUJsonToken = array of AUJsonToken;
+  Arr2AUJsonToken = array of Arr1AUJsonToken;
+  Arr3AUJsonToken = array of Arr2AUJsonToken;
+
+  AOGLDebugHelper = class;
+  Arr1AOGLDebugHelper = array of AOGLDebugHelper;
+  Arr2AOGLDebugHelper = array of Arr1AOGLDebugHelper;
+  Arr3AOGLDebugHelper = array of Arr2AOGLDebugHelper;
+
+  AOConditionVariable = class;
+  Arr1AOConditionVariable = array of AOConditionVariable;
+  Arr2AOConditionVariable = array of Arr1AOConditionVariable;
+  Arr3AOConditionVariable = array of Arr2AOConditionVariable;
+
+  OAHIIHttpResponseParser = class;
+  Arr1OAHIIHttpResponseParser = array of OAHIIHttpResponseParser;
+  Arr2OAHIIHttpResponseParser = array of Arr1OAHIIHttpResponseParser;
+  Arr3OAHIIHttpResponseParser = array of Arr2OAHIIHttpResponseParser;
+
+  APSettings = class;
+  Arr1APSettings = array of APSettings;
+  Arr2APSettings = array of Arr1APSettings;
+  Arr3APSettings = array of Arr2APSettings;
+
+  JFAssert = class;
+  Arr1JFAssert = array of JFAssert;
+  Arr2JFAssert = array of Arr1JFAssert;
+  Arr3JFAssert = array of Arr2JFAssert;
+
+  OXSSAXParseException = class;
+  Arr1OXSSAXParseException = array of OXSSAXParseException;
+  Arr2OXSSAXParseException = array of Arr1OXSSAXParseException;
+  Arr3OXSSAXParseException = array of Arr2OXSSAXParseException;
+
+  JLCompiler = class;
+  Arr1JLCompiler = array of JLCompiler;
+  Arr2JLCompiler = array of Arr1JLCompiler;
+  Arr3JLCompiler = array of Arr2JLCompiler;
+
+  ATMDigitsKeyListener = class;
+  Arr1ATMDigitsKeyListener = array of ATMDigitsKeyListener;
+  Arr2ATMDigitsKeyListener = array of Arr1ATMDigitsKeyListener;
+  Arr3ATMDigitsKeyListener = array of Arr2ATMDigitsKeyListener;
+
+  AUMalformedJsonException = class;
+  Arr1AUMalformedJsonException = array of AUMalformedJsonException;
+  Arr2AUMalformedJsonException = array of Arr1AUMalformedJsonException;
+  Arr3AUMalformedJsonException = array of Arr2AUMalformedJsonException;
+
+  AAADevicePolicyManager = class;
+  Arr1AAADevicePolicyManager = array of AAADevicePolicyManager;
+  Arr2AAADevicePolicyManager = array of Arr1AAADevicePolicyManager;
+  Arr3AAADevicePolicyManager = array of Arr2AAADevicePolicyManager;
+
+  JIInvalidObjectException = class;
+  Arr1JIInvalidObjectException = array of JIInvalidObjectException;
+  Arr2JIInvalidObjectException = array of Arr1JIInvalidObjectException;
+  Arr3JIInvalidObjectException = array of Arr2JIInvalidObjectException;
+
+  ADAbstractWindowedCursor = class;
+  Arr1ADAbstractWindowedCursor = array of ADAbstractWindowedCursor;
+  Arr2ADAbstractWindowedCursor = array of Arr1ADAbstractWindowedCursor;
+  Arr3ADAbstractWindowedCursor = array of Arr2ADAbstractWindowedCursor;
+
+  JSSPSSParameterSpec = class;
+  Arr1JSSPSSParameterSpec = array of JSSPSSParameterSpec;
+  Arr2JSSPSSParameterSpec = array of Arr1JSSPSSParameterSpec;
+  Arr3JSSPSSParameterSpec = array of Arr2JSSPSSParameterSpec;
+
+  AVTextureView = class;
+  Arr1AVTextureView = array of AVTextureView;
+  Arr2AVTextureView = array of Arr1AVTextureView;
+  Arr3AVTextureView = array of Arr2AVTextureView;
+
+  OAHUVersionInfo = class;
+  Arr1OAHUVersionInfo = array of OAHUVersionInfo;
+  Arr2OAHUVersionInfo = array of Arr1OAHUVersionInfo;
+  Arr3OAHUVersionInfo = array of Arr2OAHUVersionInfo;
+
+  OAHPSyncBasicHttpContext = class;
+  Arr1OAHPSyncBasicHttpContext = array of OAHPSyncBasicHttpContext;
+  Arr2OAHPSyncBasicHttpContext = array of Arr1OAHPSyncBasicHttpContext;
+  Arr3OAHPSyncBasicHttpContext = array of Arr2OAHPSyncBasicHttpContext;
+
+  JIFilterWriter = class;
+  Arr1JIFilterWriter = array of JIFilterWriter;
+  Arr2JIFilterWriter = array of Arr1JIFilterWriter;
+  Arr3JIFilterWriter = array of Arr2JIFilterWriter;
+
+  JUEmptyStackException = class;
+  Arr1JUEmptyStackException = array of JUEmptyStackException;
+  Arr2JUEmptyStackException = array of Arr1JUEmptyStackException;
+  Arr3JUEmptyStackException = array of Arr2JUEmptyStackException;
+
+  AOMessenger = class;
+  Arr1AOMessenger = array of AOMessenger;
+  Arr2AOMessenger = array of Arr1AOMessenger;
+  Arr3AOMessenger = array of Arr2AOMessenger;
+
+  JIPipedReader = class;
+  Arr1JIPipedReader = array of JIPipedReader;
+  Arr2JIPipedReader = array of Arr1JIPipedReader;
+  Arr3JIPipedReader = array of Arr2JIPipedReader;
+
+  JLIllegalAccessError = class;
+  Arr1JLIllegalAccessError = array of JLIllegalAccessError;
+  Arr2JLIllegalAccessError = array of Arr1JLIllegalAccessError;
+  Arr3JLIllegalAccessError = array of Arr2JLIllegalAccessError;
+
+  ATSTestSuiteBuilder = class;
+  Arr1ATSTestSuiteBuilder = array of ATSTestSuiteBuilder;
+  Arr2ATSTestSuiteBuilder = array of Arr1ATSTestSuiteBuilder;
+  Arr3ATSTestSuiteBuilder = array of Arr2ATSTestSuiteBuilder;
+
+  AWHttpAuthHandler = class;
+  Arr1AWHttpAuthHandler = array of AWHttpAuthHandler;
+  Arr2AWHttpAuthHandler = array of Arr1AWHttpAuthHandler;
+  Arr3AWHttpAuthHandler = array of Arr2AWHttpAuthHandler;
+
+  AWTabHost = class;
+  Arr1AWTabHost = array of AWTabHost;
+  Arr2AWTabHost = array of Arr1AWTabHost;
+  Arr3AWTabHost = array of Arr2AWTabHost;
+
+  ANHSslError = class;
+  Arr1ANHSslError = array of ANHSslError;
+  Arr2ANHSslError = array of Arr1ANHSslError;
+  Arr3ANHSslError = array of Arr2ANHSslError;
+
+  JUCAAtomicLongFieldUpdater = class;
+  Arr1JUCAAtomicLongFieldUpdater = array of JUCAAtomicLongFieldUpdater;
+  Arr2JUCAAtomicLongFieldUpdater = array of Arr1JUCAAtomicLongFieldUpdater;
+  Arr3JUCAAtomicLongFieldUpdater = array of Arr2JUCAAtomicLongFieldUpdater;
+
+  OAHIIHttpRequestWriter = class;
+  Arr1OAHIIHttpRequestWriter = array of OAHIIHttpRequestWriter;
+  Arr2OAHIIHttpRequestWriter = array of Arr1OAHIIHttpRequestWriter;
+  Arr3OAHIIHttpRequestWriter = array of Arr2OAHIIHttpRequestWriter;
+
+  JSCCRLException = class;
+  Arr1JSCCRLException = array of JSCCRLException;
+  Arr2JSCCRLException = array of Arr1JSCCRLException;
+  Arr3JSCCRLException = array of Arr2JSCCRLException;
+
+  ATBoringLayout = class;
+  Arr1ATBoringLayout = array of ATBoringLayout;
+  Arr2ATBoringLayout = array of Arr1ATBoringLayout;
+  Arr3ATBoringLayout = array of Arr2ATBoringLayout;
+
+  JNInterfaceAddress = class;
+  Arr1JNInterfaceAddress = array of JNInterfaceAddress;
+  Arr2JNInterfaceAddress = array of Arr1JNInterfaceAddress;
+  Arr3JNInterfaceAddress = array of Arr2JNInterfaceAddress;
+
+  AWSimpleExpandableListAdapter = class;
+  Arr1AWSimpleExpandableListAdapter = array of AWSimpleExpandableListAdapter;
+  Arr2AWSimpleExpandableListAdapter = array of Arr1AWSimpleExpandableListAdapter;
+  Arr3AWSimpleExpandableListAdapter = array of Arr2AWSimpleExpandableListAdapter;
+
+  ATSSuggestionSpan = class;
+  Arr1ATSSuggestionSpan = array of ATSSuggestionSpan;
+  Arr2ATSSuggestionSpan = array of Arr1ATSSuggestionSpan;
+  Arr3ATSSuggestionSpan = array of Arr2ATSSuggestionSpan;
+
+  OAHAMalformedChallengeException = class;
+  Arr1OAHAMalformedChallengeException = array of OAHAMalformedChallengeException;
+  Arr2OAHAMalformedChallengeException = array of Arr1OAHAMalformedChallengeException;
+  Arr3OAHAMalformedChallengeException = array of Arr2OAHAMalformedChallengeException;
+
+  ANSSipProfile = class;
+  Arr1ANSSipProfile = array of ANSSipProfile;
+  Arr2ANSSipProfile = array of Arr1ANSSipProfile;
+  Arr3ANSSipProfile = array of Arr2ANSSipProfile;
+
+  AVADecelerateInterpolator = class;
+  Arr1AVADecelerateInterpolator = array of AVADecelerateInterpolator;
+  Arr2AVADecelerateInterpolator = array of Arr1AVADecelerateInterpolator;
+  Arr3AVADecelerateInterpolator = array of Arr2AVADecelerateInterpolator;
+
+  ACPPermissionInfo = class;
+  Arr1ACPPermissionInfo = array of ACPPermissionInfo;
+  Arr2ACPPermissionInfo = array of Arr1ACPPermissionInfo;
+  Arr3ACPPermissionInfo = array of Arr2ACPPermissionInfo;
+
+  ACContext = class;
+  Arr1ACContext = array of ACContext;
+  Arr2ACContext = array of Arr1ACContext;
+  Arr3ACContext = array of Arr2ACContext;
+
+  ACPLabeledIntent = class;
+  Arr1ACPLabeledIntent = array of ACPLabeledIntent;
+  Arr2ACPLabeledIntent = array of Arr1ACPLabeledIntent;
+  Arr3ACPLabeledIntent = array of Arr2ACPLabeledIntent;
+
+  OAHCPConnConnectionParamBean = class;
+  Arr1OAHCPConnConnectionParamBean = array of OAHCPConnConnectionParamBean;
+  Arr2OAHCPConnConnectionParamBean = array of Arr1OAHCPConnConnectionParamBean;
+  Arr3OAHCPConnConnectionParamBean = array of Arr2OAHCPConnConnectionParamBean;
+
+  JUCLAbstractOwnableSynchronizer = class;
+  Arr1JUCLAbstractOwnableSynchronizer = array of JUCLAbstractOwnableSynchronizer;
+  Arr2JUCLAbstractOwnableSynchronizer = array of Arr1JUCLAbstractOwnableSynchronizer;
+  Arr3JUCLAbstractOwnableSynchronizer = array of Arr2JUCLAbstractOwnableSynchronizer;
+
+  AGBitmap = class;
+  Arr1AGBitmap = array of AGBitmap;
+  Arr2AGBitmap = array of Arr1AGBitmap;
+  Arr3AGBitmap = array of Arr2AGBitmap;
+
+  OAHCCookieOrigin = class;
+  Arr1OAHCCookieOrigin = array of OAHCCookieOrigin;
+  Arr2OAHCCookieOrigin = array of Arr1OAHCCookieOrigin;
+  Arr3OAHCCookieOrigin = array of Arr2OAHCCookieOrigin;
+
+  OAHNoHttpResponseException = class;
+  Arr1OAHNoHttpResponseException = array of OAHNoHttpResponseException;
+  Arr2OAHNoHttpResponseException = array of Arr1OAHNoHttpResponseException;
+  Arr3OAHNoHttpResponseException = array of Arr2OAHNoHttpResponseException;
+
+  JXVValidatorHandler = class;
+  Arr1JXVValidatorHandler = array of JXVValidatorHandler;
+  Arr2JXVValidatorHandler = array of Arr1JXVValidatorHandler;
+  Arr3JXVValidatorHandler = array of Arr2JXVValidatorHandler;
+
+  OAHICDefaultHttpRoutePlanner = class;
+  Arr1OAHICDefaultHttpRoutePlanner = array of OAHICDefaultHttpRoutePlanner;
+  Arr2OAHICDefaultHttpRoutePlanner = array of Arr1OAHICDefaultHttpRoutePlanner;
+  Arr3OAHICDefaultHttpRoutePlanner = array of Arr2OAHICDefaultHttpRoutePlanner;
+
+  ADCursorJoiner = class;
+  Arr1ADCursorJoiner = array of ADCursorJoiner;
+  Arr2ADCursorJoiner = array of Arr1ADCursorJoiner;
+  Arr3ADCursorJoiner = array of Arr2ADCursorJoiner;
+
+  OAHIIContentLengthInputStream = class;
+  Arr1OAHIIContentLengthInputStream = array of OAHIIContentLengthInputStream;
+  Arr2OAHIIContentLengthInputStream = array of Arr1OAHIIContentLengthInputStream;
+  Arr3OAHIIContentLengthInputStream = array of Arr2OAHIIContentLengthInputStream;
+
+  AAAnimatorInflater = class;
+  Arr1AAAnimatorInflater = array of AAAnimatorInflater;
+  Arr2AAAnimatorInflater = array of Arr1AAAnimatorInflater;
+  Arr3AAAnimatorInflater = array of Arr2AAAnimatorInflater;
+
+  JSSecureRandomSpi = class;
+  Arr1JSSecureRandomSpi = array of JSSecureRandomSpi;
+  Arr2JSSecureRandomSpi = array of Arr1JSSecureRandomSpi;
+  Arr3JSSecureRandomSpi = array of Arr2JSSecureRandomSpi;
+
+  JxSCX509Certificate = class;
+  Arr1JxSCX509Certificate = array of JxSCX509Certificate;
+  Arr2JxSCX509Certificate = array of Arr1JxSCX509Certificate;
+  Arr3JxSCX509Certificate = array of Arr2JxSCX509Certificate;
+
+  JNSSSLSocket = class;
+  Arr1JNSSSLSocket = array of JNSSSLSocket;
+  Arr2JNSSSLSocket = array of Arr1JNSSSLSocket;
+  Arr3JNSSSLSocket = array of Arr2JNSSSLSocket;
+
+  OAHICRFC2109VersionHandler = class;
+  Arr1OAHICRFC2109VersionHandler = array of OAHICRFC2109VersionHandler;
+  Arr2OAHICRFC2109VersionHandler = array of Arr1OAHICRFC2109VersionHandler;
+  Arr3OAHICRFC2109VersionHandler = array of Arr2OAHICRFC2109VersionHandler;
+
+  AVATranslateAnimation = class;
+  Arr1AVATranslateAnimation = array of AVATranslateAnimation;
+  Arr2AVATranslateAnimation = array of Arr1AVATranslateAnimation;
+  Arr3AVATranslateAnimation = array of Arr2AVATranslateAnimation;
+
+  APLiveFolders = class;
+  Arr1APLiveFolders = array of APLiveFolders;
+  Arr2APLiveFolders = array of Arr1APLiveFolders;
+  Arr3APLiveFolders = array of Arr2APLiveFolders;
+
+  AGDBitmapDrawable = class;
+  Arr1AGDBitmapDrawable = array of AGDBitmapDrawable;
+  Arr2AGDBitmapDrawable = array of Arr1AGDBitmapDrawable;
+  Arr3AGDBitmapDrawable = array of Arr2AGDBitmapDrawable;
+
+  APPreferenceActivity = class;
+  Arr1APPreferenceActivity = array of APPreferenceActivity;
+  Arr2APPreferenceActivity = array of Arr1APPreferenceActivity;
+  Arr3APPreferenceActivity = array of Arr2APPreferenceActivity;
+
+  JNCIllegalBlockingModeException = class;
+  Arr1JNCIllegalBlockingModeException = array of JNCIllegalBlockingModeException;
+  Arr2JNCIllegalBlockingModeException = array of Arr1JNCIllegalBlockingModeException;
+  Arr3JNCIllegalBlockingModeException = array of Arr2JNCIllegalBlockingModeException;
+
+  AOAsyncTask = class;
+  Arr1AOAsyncTask = array of AOAsyncTask;
+  Arr2AOAsyncTask = array of Arr1AOAsyncTask;
+  Arr3AOAsyncTask = array of Arr2AOAsyncTask;
+
+  JSAAuthPermission = class;
+  Arr1JSAAuthPermission = array of JSAAuthPermission;
+  Arr2JSAAuthPermission = array of Arr1JSAAuthPermission;
+  Arr3JSAAuthPermission = array of Arr2JSAAuthPermission;
+
+  JUIllegalFormatConversionException = class;
+  Arr1JUIllegalFormatConversionException = array of JUIllegalFormatConversionException;
+  Arr2JUIllegalFormatConversionException = array of Arr1JUIllegalFormatConversionException;
+  Arr3JUIllegalFormatConversionException = array of Arr2JUIllegalFormatConversionException;
+
+  OAHMBasicHeaderValueFormatter = class;
+  Arr1OAHMBasicHeaderValueFormatter = array of OAHMBasicHeaderValueFormatter;
+  Arr2OAHMBasicHeaderValueFormatter = array of Arr1OAHMBasicHeaderValueFormatter;
+  Arr3OAHMBasicHeaderValueFormatter = array of Arr2OAHMBasicHeaderValueFormatter;
+
+  JUIllegalFormatFlagsException = class;
+  Arr1JUIllegalFormatFlagsException = array of JUIllegalFormatFlagsException;
+  Arr2JUIllegalFormatFlagsException = array of Arr1JUIllegalFormatFlagsException;
+  Arr3JUIllegalFormatFlagsException = array of Arr2JUIllegalFormatFlagsException;
+
+  AWMultiAutoCompleteTextView = class;
+  Arr1AWMultiAutoCompleteTextView = array of AWMultiAutoCompleteTextView;
+  Arr2AWMultiAutoCompleteTextView = array of Arr1AWMultiAutoCompleteTextView;
+  Arr3AWMultiAutoCompleteTextView = array of Arr2AWMultiAutoCompleteTextView;
+
+  OAHCPConnConnectionPNames = interface;
+  Arr1OAHCPConnConnectionPNames = array of OAHCPConnConnectionPNames;
+  Arr2OAHCPConnConnectionPNames = array of Arr1OAHCPConnConnectionPNames;
+  Arr3OAHCPConnConnectionPNames = array of Arr2OAHCPConnConnectionPNames;
+
+  OXSAttributeList = interface;
+  Arr1OXSAttributeList = array of OXSAttributeList;
+  Arr2OXSAttributeList = array of Arr1OXSAttributeList;
+  Arr3OXSAttributeList = array of Arr2OXSAttributeList;
+
+  AWHeterogeneousExpandableList = interface;
+  Arr1AWHeterogeneousExpandableList = array of AWHeterogeneousExpandableList;
+  Arr2AWHeterogeneousExpandableList = array of Arr1AWHeterogeneousExpandableList;
+  Arr3AWHeterogeneousExpandableList = array of Arr2AWHeterogeneousExpandableList;
+
+  AWWrapperListAdapter = interface;
+  Arr1AWWrapperListAdapter = array of AWWrapperListAdapter;
+  Arr2AWWrapperListAdapter = array of Arr1AWWrapperListAdapter;
+  Arr3AWWrapperListAdapter = array of Arr2AWWrapperListAdapter;
+
+  OXVXmlPullParser = interface;
+  Arr1OXVXmlPullParser = array of OXVXmlPullParser;
+  Arr2OXVXmlPullParser = array of Arr1OXVXmlPullParser;
+  Arr3OXVXmlPullParser = array of Arr2OXVXmlPullParser;
+
+  ATFlakyTest = interface;
+  Arr1ATFlakyTest = array of ATFlakyTest;
+  Arr2ATFlakyTest = array of Arr1ATFlakyTest;
+  Arr3ATFlakyTest = array of Arr2ATFlakyTest;
+
+  OWDDOMImplementation = interface;
+  Arr1OWDDOMImplementation = array of OWDDOMImplementation;
+  Arr2OWDDOMImplementation = array of Arr1OWDDOMImplementation;
+  Arr3OWDDOMImplementation = array of Arr2OWDDOMImplementation;
+
+  JTCharacterIterator = interface;
+  Arr1JTCharacterIterator = array of JTCharacterIterator;
+  Arr2JTCharacterIterator = array of Arr1JTCharacterIterator;
+  Arr3JTCharacterIterator = array of Arr2JTCharacterIterator;
+
+  JSACCallback = interface;
+  Arr1JSACCallback = array of JSACCallback;
+  Arr2JSACCallback = array of Arr1JSACCallback;
+  Arr3JSACCallback = array of Arr2JSACCallback;
+
+  JSIECPrivateKey = interface;
+  Arr1JSIECPrivateKey = array of JSIECPrivateKey;
+  Arr2JSIECPrivateKey = array of Arr1JSIECPrivateKey;
+  Arr3JSIECPrivateKey = array of Arr2JSIECPrivateKey;
+
+  JSSQLData = interface;
+  Arr1JSSQLData = array of JSSQLData;
+  Arr2JSSQLData = array of Arr1JSSQLData;
+  Arr3JSSQLData = array of Arr2JSSQLData;
+
+  JURMatchResult = interface;
+  Arr1JURMatchResult = array of JURMatchResult;
+  Arr2JURMatchResult = array of Arr1JURMatchResult;
+  Arr3JURMatchResult = array of Arr2JURMatchResult;
+
+  AHSensorEventListener = interface;
+  Arr1AHSensorEventListener = array of AHSensorEventListener;
+  Arr2AHSensorEventListener = array of Arr1AHSensorEventListener;
+  Arr3AHSensorEventListener = array of Arr2AHSensorEventListener;
+
+  ATTextWatcher = interface;
+  Arr1ATTextWatcher = array of ATTextWatcher;
+  Arr2ATTextWatcher = array of Arr1ATTextWatcher;
+  Arr3ATTextWatcher = array of Arr2ATTextWatcher;
+
+  ATSAlignmentSpan = interface;
+  Arr1ATSAlignmentSpan = array of ATSAlignmentSpan;
+  Arr2ATSAlignmentSpan = array of Arr1ATSAlignmentSpan;
+  Arr3ATSAlignmentSpan = array of Arr2ATSAlignmentSpan;
+
+  AVMenu = interface;
+  Arr1AVMenu = array of AVMenu;
+  Arr2AVMenu = array of Arr1AVMenu;
+  Arr3AVMenu = array of Arr2AVMenu;
+
+  JNCScatteringByteChannel = interface;
+  Arr1JNCScatteringByteChannel = array of JNCScatteringByteChannel;
+  Arr2JNCScatteringByteChannel = array of Arr1JNCScatteringByteChannel;
+  Arr3JNCScatteringByteChannel = array of Arr2JNCScatteringByteChannel;
+
+  JMKOGL11Ext = interface;
+  Arr1JMKOGL11Ext = array of JMKOGL11Ext;
+  Arr2JMKOGL11Ext = array of Arr1JMKOGL11Ext;
+  Arr3JMKOGL11Ext = array of Arr2JMKOGL11Ext;
+
+  JSRef = interface;
+  Arr1JSRef = array of JSRef;
+  Arr2JSRef = array of Arr1JSRef;
+  Arr3JSRef = array of Arr2JSRef;
+
+  JCSecretKey = interface;
+  Arr1JCSecretKey = array of JCSecretKey;
+  Arr2JCSecretKey = array of Arr1JCSecretKey;
+  Arr3JCSecretKey = array of Arr2JCSecretKey;
+
+  OAHCCookie = interface;
+  Arr1OAHCCookie = array of OAHCCookie;
+  Arr2OAHCCookie = array of Arr1OAHCCookie;
+  Arr3OAHCCookie = array of Arr2OAHCCookie;
+
+  OWDElement = interface;
+  Arr1OWDElement = array of OWDElement;
+  Arr2OWDElement = array of Arr1OWDElement;
+  Arr3OWDElement = array of Arr2OWDElement;
+
+  JUCLLock = interface;
+  Arr1JUCLLock = array of JUCLLock;
+  Arr2JUCLLock = array of Arr1JUCLLock;
+  Arr3JUCLLock = array of Arr2JUCLLock;
+
+  OWDComment = interface;
+  Arr1OWDComment = array of OWDComment;
+  Arr2OWDComment = array of Arr1OWDComment;
+  Arr3OWDComment = array of Arr2OWDComment;
+
+  AVIInputMethod = interface;
+  Arr1AVIInputMethod = array of AVIInputMethod;
+  Arr2AVIInputMethod = array of Arr1AVIInputMethod;
+  Arr3AVIInputMethod = array of Arr2AVIInputMethod;
+
+  JUPPreferenceChangeListener = interface;
+  Arr1JUPPreferenceChangeListener = array of JUPPreferenceChangeListener;
+  Arr2JUPPreferenceChangeListener = array of Arr1JUPPreferenceChangeListener;
+  Arr3JUPPreferenceChangeListener = array of Arr2JUPPreferenceChangeListener;
+
+  JSClob = interface;
+  Arr1JSClob = array of JSClob;
+  Arr2JSClob = array of Arr1JSClob;
+  Arr3JSClob = array of Arr2JSClob;
+
+  OXSEDeclHandler = interface;
+  Arr1OXSEDeclHandler = array of OXSEDeclHandler;
+  Arr2OXSEDeclHandler = array of Arr1OXSEDeclHandler;
+  Arr3OXSEDeclHandler = array of Arr2OXSEDeclHandler;
+
+  AVSubMenu = interface;
+  Arr1AVSubMenu = array of AVSubMenu;
+  Arr2AVSubMenu = array of Arr1AVSubMenu;
+  Arr3AVSubMenu = array of Arr2AVSubMenu;
+
+  JXXXPathFunction = interface;
+  Arr1JXXXPathFunction = array of JXXXPathFunction;
+  Arr2JXXXPathFunction = array of Arr1JXXXPathFunction;
+  Arr3JXXXPathFunction = array of Arr2JXXXPathFunction;
+
+  JLRGenericArrayType = interface;
+  Arr1JLRGenericArrayType = array of JLRGenericArrayType;
+  Arr2JLRGenericArrayType = array of Arr1JLRGenericArrayType;
+  Arr3JLRGenericArrayType = array of Arr2JLRGenericArrayType;
+
+  JIObjectStreamConstants = interface;
+  Arr1JIObjectStreamConstants = array of JIObjectStreamConstants;
+  Arr2JIObjectStreamConstants = array of Arr1JIObjectStreamConstants;
+  Arr3JIObjectStreamConstants = array of Arr2JIObjectStreamConstants;
+
+  OAHIANTLMEngine = interface;
+  Arr1OAHIANTLMEngine = array of OAHIANTLMEngine;
+  Arr2OAHIANTLMEngine = array of Arr1OAHIANTLMEngine;
+  Arr3OAHIANTLMEngine = array of Arr2OAHIANTLMEngine;
+
+  OAHHttpEntityEnclosingRequest = interface;
+  Arr1OAHHttpEntityEnclosingRequest = array of OAHHttpEntityEnclosingRequest;
+  Arr2OAHHttpEntityEnclosingRequest = array of Arr1OAHHttpEntityEnclosingRequest;
+  Arr3OAHHttpEntityEnclosingRequest = array of Arr2OAHHttpEntityEnclosingRequest;
+
+  ATNoCopySpan = interface;
+  Arr1ATNoCopySpan = array of ATNoCopySpan;
+  Arr2ATNoCopySpan = array of Arr1ATNoCopySpan;
+  Arr3ATNoCopySpan = array of Arr2ATNoCopySpan;
+
+  JUSortedMap = interface;
+  Arr1JUSortedMap = array of JUSortedMap;
+  Arr2JUSortedMap = array of Arr1JUSortedMap;
+  Arr3JUSortedMap = array of Arr2JUSortedMap;
+
+  JCIDHKey = interface;
+  Arr1JCIDHKey = array of JCIDHKey;
+  Arr2JCIDHKey = array of Arr1JCIDHKey;
+  Arr3JCIDHKey = array of Arr2JCIDHKey;
+
+  OWDTypeInfo = interface;
+  Arr1OWDTypeInfo = array of OWDTypeInfo;
+  Arr2OWDTypeInfo = array of Arr1OWDTypeInfo;
+  Arr3OWDTypeInfo = array of Arr2OWDTypeInfo;
+
+  OWDDocumentFragment = interface;
+  Arr1OWDDocumentFragment = array of OWDDocumentFragment;
+  Arr2OWDDocumentFragment = array of Arr1OWDDocumentFragment;
+  Arr3OWDDocumentFragment = array of Arr2OWDDocumentFragment;
+
+  OAHCClientConnectionManagerFactory = interface;
+  Arr1OAHCClientConnectionManagerFactory = array of OAHCClientConnectionManagerFactory;
+  Arr2OAHCClientConnectionManagerFactory = array of Arr1OAHCClientConnectionManagerFactory;
+  Arr3OAHCClientConnectionManagerFactory = array of Arr2OAHCClientConnectionManagerFactory;
+
+  OAHCRedirectHandler = interface;
+  Arr1OAHCRedirectHandler = array of OAHCRedirectHandler;
+  Arr2OAHCRedirectHandler = array of Arr1OAHCRedirectHandler;
+  Arr3OAHCRedirectHandler = array of Arr2OAHCRedirectHandler;
+
+  ADCursor = interface;
+  Arr1ADCursor = array of ADCursor;
+  Arr2ADCursor = array of Arr1ADCursor;
+  Arr3ADCursor = array of Arr2ADCursor;
+
+  JSCCRLSelector = interface;
+  Arr1JSCCRLSelector = array of JSCCRLSelector;
+  Arr2JSCCRLSelector = array of Arr1JSCCRLSelector;
+  Arr3JSCCRLSelector = array of Arr2JSCCRLSelector;
+
+  OAHAPAuthPNames = interface;
+  Arr1OAHAPAuthPNames = array of OAHAPAuthPNames;
+  Arr2OAHAPAuthPNames = array of Arr1OAHAPAuthPNames;
+  Arr3OAHAPAuthPNames = array of Arr2OAHAPAuthPNames;
+
+  OAHHttpServerConnection = interface;
+  Arr1OAHHttpServerConnection = array of OAHHttpServerConnection;
+  Arr2OAHHttpServerConnection = array of Arr1OAHHttpServerConnection;
+  Arr3OAHHttpServerConnection = array of Arr2OAHHttpServerConnection;
+
+  JUCFuture = interface;
+  Arr1JUCFuture = array of JUCFuture;
+  Arr2JUCFuture = array of Arr1JUCFuture;
+  Arr3JUCFuture = array of Arr2JUCFuture;
+
+  JUCBlockingQueue = interface;
+  Arr1JUCBlockingQueue = array of JUCBlockingQueue;
+  Arr2JUCBlockingQueue = array of Arr1JUCBlockingQueue;
+  Arr3JUCBlockingQueue = array of Arr2JUCBlockingQueue;
+
+  JUCScheduledFuture = interface;
+  Arr1JUCScheduledFuture = array of JUCScheduledFuture;
+  Arr2JUCScheduledFuture = array of Arr1JUCScheduledFuture;
+  Arr3JUCScheduledFuture = array of Arr2JUCScheduledFuture;
+
+  JUCExecutorService = interface;
+  Arr1JUCExecutorService = array of JUCExecutorService;
+  Arr2JUCExecutorService = array of Arr1JUCExecutorService;
+  Arr3JUCExecutorService = array of Arr2JUCExecutorService;
+
+  JNCInterruptibleChannel = interface;
+  Arr1JNCInterruptibleChannel = array of JNCInterruptibleChannel;
+  Arr2JNCInterruptibleChannel = array of Arr1JNCInterruptibleChannel;
+  Arr3JNCInterruptibleChannel = array of Arr2JNCInterruptibleChannel;
+
+  JUEventListener = interface;
+  Arr1JUEventListener = array of JUEventListener;
+  Arr2JUEventListener = array of Arr1JUEventListener;
+  Arr3JUEventListener = array of Arr2JUEventListener;
+
+  OAHCHttpRequestRetryHandler = interface;
+  Arr1OAHCHttpRequestRetryHandler = array of OAHCHttpRequestRetryHandler;
+  Arr2OAHCHttpRequestRetryHandler = array of Arr1OAHCHttpRequestRetryHandler;
+  Arr3OAHCHttpRequestRetryHandler = array of Arr2OAHCHttpRequestRetryHandler;
+
+  JNSHostnameVerifier = interface;
+  Arr1JNSHostnameVerifier = array of JNSHostnameVerifier;
+  Arr2JNSHostnameVerifier = array of Arr1JNSHostnameVerifier;
+  Arr3JNSHostnameVerifier = array of Arr2JNSHostnameVerifier;
+
+  OAHConnectionReuseStrategy = interface;
+  Arr1OAHConnectionReuseStrategy = array of OAHConnectionReuseStrategy;
+  Arr2OAHConnectionReuseStrategy = array of Arr1OAHConnectionReuseStrategy;
+  Arr3OAHConnectionReuseStrategy = array of Arr2OAHConnectionReuseStrategy;
+
+  OAHAAuthScheme = interface;
+  Arr1OAHAAuthScheme = array of OAHAAuthScheme;
+  Arr2OAHAAuthScheme = array of Arr1OAHAAuthScheme;
+  Arr3OAHAAuthScheme = array of Arr2OAHAAuthScheme;
+
+  OAHPHttpExpectationVerifier = interface;
+  Arr1OAHPHttpExpectationVerifier = array of OAHPHttpExpectationVerifier;
+  Arr2OAHPHttpExpectationVerifier = array of Arr1OAHPHttpExpectationVerifier;
+  Arr3OAHPHttpExpectationVerifier = array of Arr2OAHPHttpExpectationVerifier;
+
+  ATSALargeTest = interface;
+  Arr1ATSALargeTest = array of ATSALargeTest;
+  Arr2ATSALargeTest = array of Arr1ATSALargeTest;
+  Arr3ATSALargeTest = array of Arr2ATSALargeTest;
+
+  JLSuppressWarnings = interface;
+  Arr1JLSuppressWarnings = array of JLSuppressWarnings;
+  Arr2JLSuppressWarnings = array of Arr1JLSuppressWarnings;
+  Arr3JLSuppressWarnings = array of Arr2JLSuppressWarnings;
+
+  JUCConcurrentMap = interface;
+  Arr1JUCConcurrentMap = array of JUCConcurrentMap;
+  Arr2JUCConcurrentMap = array of Arr1JUCConcurrentMap;
+  Arr3JUCConcurrentMap = array of Arr2JUCConcurrentMap;
+
+  OWDEntity = interface;
+  Arr1OWDEntity = array of OWDEntity;
+  Arr2OWDEntity = array of Arr1OWDEntity;
+  Arr3OWDEntity = array of Arr2OWDEntity;
+
+  JUCDelayed = interface;
+  Arr1JUCDelayed = array of JUCDelayed;
+  Arr2JUCDelayed = array of Arr1JUCDelayed;
+  Arr3JUCDelayed = array of Arr2JUCDelayed;
+
+  OXSDocumentHandler = interface;
+  Arr1OXSDocumentHandler = array of OXSDocumentHandler;
+  Arr2OXSDocumentHandler = array of Arr1OXSDocumentHandler;
+  Arr3OXSDocumentHandler = array of Arr2OXSDocumentHandler;
+
+  AWPluginStub = interface;
+  Arr1AWPluginStub = array of AWPluginStub;
+  Arr2AWPluginStub = array of Arr1AWPluginStub;
+  Arr3AWPluginStub = array of Arr2AWPluginStub;
+
+  JLDeprecated = interface;
+  Arr1JLDeprecated = array of JLDeprecated;
+  Arr2JLDeprecated = array of Arr1JLDeprecated;
+  Arr3JLDeprecated = array of Arr2JLDeprecated;
+
+  OAHCClientConnectionOperator = interface;
+  Arr1OAHCClientConnectionOperator = array of OAHCClientConnectionOperator;
+  Arr2OAHCClientConnectionOperator = array of Arr1OAHCClientConnectionOperator;
+  Arr3OAHCClientConnectionOperator = array of Arr2OAHCClientConnectionOperator;
+
+  OAHICTRefQueueHandler = interface;
+  Arr1OAHICTRefQueueHandler = array of OAHICTRefQueueHandler;
+  Arr2OAHICTRefQueueHandler = array of Arr1OAHICTRefQueueHandler;
+  Arr3OAHICTRefQueueHandler = array of Arr2OAHICTRefQueueHandler;
+
+  JLADocumented = interface;
+  Arr1JLADocumented = array of JLADocumented;
+  Arr2JLADocumented = array of Arr1JLADocumented;
+  Arr3JLADocumented = array of Arr2JLADocumented;
+
+  JUCRejectedExecutionHandler = interface;
+  Arr1JUCRejectedExecutionHandler = array of JUCRejectedExecutionHandler;
+  Arr2JUCRejectedExecutionHandler = array of Arr1JUCRejectedExecutionHandler;
+  Arr3JUCRejectedExecutionHandler = array of Arr2JUCRejectedExecutionHandler;
+
+  ATSWrapTogetherSpan = interface;
+  Arr1ATSWrapTogetherSpan = array of ATSWrapTogetherSpan;
+  Arr2ATSWrapTogetherSpan = array of Arr1ATSWrapTogetherSpan;
+  Arr3ATSWrapTogetherSpan = array of Arr2ATSWrapTogetherSpan;
+
+  ACSyncStatusObserver = interface;
+  Arr1ACSyncStatusObserver = array of ACSyncStatusObserver;
+  Arr2ACSyncStatusObserver = array of Arr1ACSyncStatusObserver;
+  Arr3ACSyncStatusObserver = array of Arr2ACSyncStatusObserver;
+
+  JSParameterMetaData = interface;
+  Arr1JSParameterMetaData = array of JSParameterMetaData;
+  Arr2JSParameterMetaData = array of Arr1JSParameterMetaData;
+  Arr3JSParameterMetaData = array of Arr2JSParameterMetaData;
+
+  JUCScheduledExecutorService = interface;
+  Arr1JUCScheduledExecutorService = array of JUCScheduledExecutorService;
+  Arr2JUCScheduledExecutorService = array of Arr1JUCScheduledExecutorService;
+  Arr3JUCScheduledExecutorService = array of Arr2JUCScheduledExecutorService;
+
+  OAHHttpRequestFactory = interface;
+  Arr1OAHHttpRequestFactory = array of OAHHttpRequestFactory;
+  Arr2OAHHttpRequestFactory = array of Arr1OAHHttpRequestFactory;
+  Arr3OAHHttpRequestFactory = array of Arr2OAHHttpRequestFactory;
+
+  JNCByteChannel = interface;
+  Arr1JNCByteChannel = array of JNCByteChannel;
+  Arr2JNCByteChannel = array of Arr1JNCByteChannel;
+  Arr3JNCByteChannel = array of Arr2JNCByteChannel;
+
+  JFTestListener = interface;
+  Arr1JFTestListener = array of JFTestListener;
+  Arr2JFTestListener = array of Arr1JFTestListener;
+  Arr3JFTestListener = array of Arr2JFTestListener;
+
+  JSPrivilegedExceptionAction = interface;
+  Arr1JSPrivilegedExceptionAction = array of JSPrivilegedExceptionAction;
+  Arr2JSPrivilegedExceptionAction = array of Arr1JSPrivilegedExceptionAction;
+  Arr3JSPrivilegedExceptionAction = array of Arr2JSPrivilegedExceptionAction;
+
+  OAHFormattedHeader = interface;
+  Arr1OAHFormattedHeader = array of OAHFormattedHeader;
+  Arr2OAHFormattedHeader = array of Arr1OAHFormattedHeader;
+  Arr3OAHFormattedHeader = array of Arr2OAHFormattedHeader;
+
+  JSAPermission = interface;
+  Arr1JSAPermission = array of JSAPermission;
+  Arr2JSAPermission = array of Arr1JSAPermission;
+  Arr3JSAPermission = array of Arr2JSAPermission;
+
+  OAHHeaderIterator = interface;
+  Arr1OAHHeaderIterator = array of OAHHeaderIterator;
+  Arr2OAHHeaderIterator = array of Arr1OAHHeaderIterator;
+  Arr3OAHHeaderIterator = array of Arr2OAHHeaderIterator;
+
+  JNSX509TrustManager = interface;
+  Arr1JNSX509TrustManager = array of JNSX509TrustManager;
+  Arr2JNSX509TrustManager = array of Arr1JNSX509TrustManager;
+  Arr3JNSX509TrustManager = array of Arr2JNSX509TrustManager;
+
+  JIExternalizable = interface;
+  Arr1JIExternalizable = array of JIExternalizable;
+  Arr2JIExternalizable = array of Arr1JIExternalizable;
+  Arr3JIExternalizable = array of Arr2JIExternalizable;
+
+  JNCChannel = interface;
+  Arr1JNCChannel = array of JNCChannel;
+  Arr2JNCChannel = array of Arr1JNCChannel;
+  Arr3JNCChannel = array of Arr2JNCChannel;
+
+  OAHCCookieSpec = interface;
+  Arr1OAHCCookieSpec = array of OAHCCookieSpec;
+  Arr2OAHCCookieSpec = array of Arr1OAHCCookieSpec;
+  Arr3OAHCCookieSpec = array of Arr2OAHCCookieSpec;
+
+  OXSEntityResolver = interface;
+  Arr1OXSEntityResolver = array of OXSEntityResolver;
+  Arr2OXSEntityResolver = array of Arr1OXSEntityResolver;
+  Arr3OXSEntityResolver = array of Arr2OXSEntityResolver;
+
+  JXTResult = interface;
+  Arr1JXTResult = array of JXTResult;
+  Arr2JXTResult = array of Arr1JXTResult;
+  Arr3JXTResult = array of Arr2JXTResult;
+
+  JULLoggingMXBean = interface;
+  Arr1JULLoggingMXBean = array of JULLoggingMXBean;
+  Arr2JULLoggingMXBean = array of Arr1JULLoggingMXBean;
+  Arr3JULLoggingMXBean = array of Arr2JULLoggingMXBean;
+
+  JSIRSAMultiPrimePrivateCrtKey = interface;
+  Arr1JSIRSAMultiPrimePrivateCrtKey = array of JSIRSAMultiPrimePrivateCrtKey;
+  Arr2JSIRSAMultiPrimePrivateCrtKey = array of Arr1JSIRSAMultiPrimePrivateCrtKey;
+  Arr3JSIRSAMultiPrimePrivateCrtKey = array of Arr2JSIRSAMultiPrimePrivateCrtKey;
+
+  OAHPHttpContext = interface;
+  Arr1OAHPHttpContext = array of OAHPHttpContext;
+  Arr2OAHPHttpContext = array of Arr1OAHPHttpContext;
+  Arr3OAHPHttpContext = array of Arr2OAHPHttpContext;
+
+  ASEndTextElementListener = interface;
+  Arr1ASEndTextElementListener = array of ASEndTextElementListener;
+  Arr2ASEndTextElementListener = array of Arr1ASEndTextElementListener;
+  Arr3ASEndTextElementListener = array of Arr2ASEndTextElementListener;
+
+  JICloseable = interface;
+  Arr1JICloseable = array of JICloseable;
+  Arr2JICloseable = array of Arr1JICloseable;
+  Arr3JICloseable = array of Arr2JICloseable;
+
+  AWCheckable = interface;
+  Arr1AWCheckable = array of AWCheckable;
+  Arr2AWCheckable = array of Arr1AWCheckable;
+  Arr3AWCheckable = array of Arr2AWCheckable;
+
+  OAHMLineFormatter = interface;
+  Arr1OAHMLineFormatter = array of OAHMLineFormatter;
+  Arr2OAHMLineFormatter = array of Arr1OAHMLineFormatter;
+  Arr3OAHMLineFormatter = array of Arr2OAHMLineFormatter;
+
+  JXXXPathFunctionResolver = interface;
+  Arr1JXXXPathFunctionResolver = array of JXXXPathFunctionResolver;
+  Arr2JXXXPathFunctionResolver = array of Arr1JXXXPathFunctionResolver;
+  Arr3JXXXPathFunctionResolver = array of Arr2JXXXPathFunctionResolver;
+
+  AVWindowManager = interface;
+  Arr1AVWindowManager = array of AVWindowManager;
+  Arr2AVWindowManager = array of Arr1AVWindowManager;
+  Arr3AVWindowManager = array of Arr2AVWindowManager;
+
+  JLRInvocationHandler = interface;
+  Arr1JLRInvocationHandler = array of JLRInvocationHandler;
+  Arr2JLRInvocationHandler = array of Arr1JLRInvocationHandler;
+  Arr3JLRInvocationHandler = array of Arr2JLRInvocationHandler;
+
+  OAHPHttpProcessor = interface;
+  Arr1OAHPHttpProcessor = array of OAHPHttpProcessor;
+  Arr2OAHPHttpProcessor = array of Arr1OAHPHttpProcessor;
+  Arr3OAHPHttpProcessor = array of Arr2OAHPHttpProcessor;
+
+  OWDDOMImplementationList = interface;
+  Arr1OWDDOMImplementationList = array of OWDDOMImplementationList;
+  Arr2OWDDOMImplementationList = array of Arr1OWDDOMImplementationList;
+  Arr3OWDDOMImplementationList = array of Arr2OWDDOMImplementationList;
+
+  JIDataOutput = interface;
+  Arr1JIDataOutput = array of JIDataOutput;
+  Arr2JIDataOutput = array of Arr1JIDataOutput;
+  Arr3JIDataOutput = array of Arr2JIDataOutput;
+
+  OAHStatusLine = interface;
+  Arr1OAHStatusLine = array of OAHStatusLine;
+  Arr2OAHStatusLine = array of Arr1OAHStatusLine;
+  Arr3OAHStatusLine = array of Arr2OAHStatusLine;
+
+  JSSQLOutput = interface;
+  Arr1JSSQLOutput = array of JSSQLOutput;
+  Arr2JSSQLOutput = array of Arr1JSSQLOutput;
+  Arr3JSSQLOutput = array of Arr2JSSQLOutput;
+
+  JMKOGL11 = interface;
+  Arr1JMKOGL11 = array of JMKOGL11;
+  Arr2JMKOGL11 = array of Arr1JMKOGL11;
+  Arr3JMKOGL11 = array of Arr2JMKOGL11;
+
+  AAAccountManagerCallback = interface;
+  Arr1AAAccountManagerCallback = array of AAAccountManagerCallback;
+  Arr2AAAccountManagerCallback = array of Arr1AAAccountManagerCallback;
+  Arr3AAAccountManagerCallback = array of Arr2AAAccountManagerCallback;
+
+  OWDLLSSerializer = interface;
+  Arr1OWDLLSSerializer = array of OWDLLSSerializer;
+  Arr2OWDLLSSerializer = array of Arr1OWDLLSSerializer;
+  Arr3OWDLLSSerializer = array of Arr2OWDLLSSerializer;
+
+  JMKOGL10 = interface;
+  Arr1JMKOGL10 = array of JMKOGL10;
+  Arr2JMKOGL10 = array of Arr1JMKOGL10;
+  Arr3JMKOGL10 = array of Arr2JMKOGL10;
+
+  ATSUpdateAppearance = interface;
+  Arr1ATSUpdateAppearance = array of ATSUpdateAppearance;
+  Arr2ATSUpdateAppearance = array of Arr1ATSUpdateAppearance;
+  Arr3ATSUpdateAppearance = array of Arr2ATSUpdateAppearance;
+
+  ALLocationListener = interface;
+  Arr1ALLocationListener = array of ALLocationListener;
+  Arr2ALLocationListener = array of Arr1ALLocationListener;
+  Arr3ALLocationListener = array of Arr2ALLocationListener;
+
+  JSAOwner = interface;
+  Arr1JSAOwner = array of JSAOwner;
+  Arr2JSAOwner = array of Arr1JSAOwner;
+  Arr3JSAOwner = array of Arr2JSAOwner;
+
+  JSDataSource = interface;
+  Arr1JSDataSource = array of JSDataSource;
+  Arr2JSDataSource = array of Arr1JSDataSource;
+  Arr3JSDataSource = array of Arr2JSDataSource;
+
+  OAHHttpMessage = interface;
+  Arr1OAHHttpMessage = array of OAHHttpMessage;
+  Arr2OAHHttpMessage = array of Arr1OAHHttpMessage;
+  Arr3OAHHttpMessage = array of Arr2OAHHttpMessage;
+
+  JNSSSLSessionContext = interface;
+  Arr1JNSSSLSessionContext = array of JNSSSLSessionContext;
+  Arr2JNSSSLSessionContext = array of Arr1JNSSSLSessionContext;
+  Arr3JNSSSLSessionContext = array of Arr2JNSSSLSessionContext;
+
+  OXSXMLReader = interface;
+  Arr1OXSXMLReader = array of OXSXMLReader;
+  Arr2OXSXMLReader = array of Arr1OXSXMLReader;
+  Arr3OXSXMLReader = array of Arr2OXSXMLReader;
+
+  JSNClob = interface;
+  Arr1JSNClob = array of JSNClob;
+  Arr2JSNClob = array of Arr1JSNClob;
+  Arr3JSNClob = array of Arr2JSNClob;
+
+  OACLLog = interface;
+  Arr1OACLLog = array of OACLLog;
+  Arr2OACLLog = array of Arr1OACLLog;
+  Arr3OACLLog = array of Arr2OACLLog;
+
+  ACRXmlResourceParser = interface;
+  Arr1ACRXmlResourceParser = array of ACRXmlResourceParser;
+  Arr2ACRXmlResourceParser = array of Arr1ACRXmlResourceParser;
+  Arr3ACRXmlResourceParser = array of Arr2ACRXmlResourceParser;
+
+  JSRowSetWriter = interface;
+  Arr1JSRowSetWriter = array of JSRowSetWriter;
+  Arr2JSRowSetWriter = array of Arr1JSRowSetWriter;
+  Arr3JSRowSetWriter = array of Arr2JSRowSetWriter;
+
+  OAHHttpResponseFactory = interface;
+  Arr1OAHHttpResponseFactory = array of OAHHttpResponseFactory;
+  Arr2OAHHttpResponseFactory = array of Arr1OAHHttpResponseFactory;
+  Arr3OAHHttpResponseFactory = array of Arr2OAHHttpResponseFactory;
+
+  OAHHttpResponse = interface;
+  Arr1OAHHttpResponse = array of OAHHttpResponse;
+  Arr2OAHHttpResponse = array of Arr1OAHHttpResponse;
+  Arr3OAHHttpResponse = array of Arr2OAHHttpResponse;
+
+  JNSocketOptions = interface;
+  Arr1JNSocketOptions = array of JNSocketOptions;
+  Arr2JNSocketOptions = array of Arr1JNSocketOptions;
+  Arr3JNSocketOptions = array of Arr2JNSocketOptions;
+
+  ATSpanWatcher = interface;
+  Arr1ATSpanWatcher = array of ATSpanWatcher;
+  Arr2ATSpanWatcher = array of Arr1ATSpanWatcher;
+  Arr3ATSpanWatcher = array of Arr2ATSpanWatcher;
+
+  AWSectionIndexer = interface;
+  Arr1AWSectionIndexer = array of AWSectionIndexer;
+  Arr2AWSectionIndexer = array of Arr1AWSectionIndexer;
+  Arr3AWSectionIndexer = array of Arr2AWSectionIndexer;
+
+  OAHPHttpRequestHandler = interface;
+  Arr1OAHPHttpRequestHandler = array of OAHPHttpRequestHandler;
+  Arr2OAHPHttpRequestHandler = array of Arr1OAHPHttpRequestHandler;
+  Arr3OAHPHttpRequestHandler = array of Arr2OAHPHttpRequestHandler;
+
+  JSPrivateKey = interface;
+  Arr1JSPrivateKey = array of JSPrivateKey;
+  Arr2JSPrivateKey = array of Arr1JSPrivateKey;
+  Arr3JSPrivateKey = array of Arr2JSPrivateKey;
+
+  AVViewManager = interface;
+  Arr1AVViewManager = array of AVViewManager;
+  Arr2AVViewManager = array of Arr1AVViewManager;
+  Arr3AVViewManager = array of Arr2AVViewManager;
+
+  JSCommonDataSource = interface;
+  Arr1JSCommonDataSource = array of JSCommonDataSource;
+  Arr2JSCommonDataSource = array of Arr1JSCommonDataSource;
+  Arr3JSCommonDataSource = array of Arr2JSCommonDataSource;
+
+  JSSKeySpec = interface;
+  Arr1JSSKeySpec = array of JSSKeySpec;
+  Arr2JSSKeySpec = array of Arr1JSSKeySpec;
+  Arr3JSSKeySpec = array of Arr2JSSKeySpec;
+
+  ATUiThreadTest = interface;
+  Arr1ATUiThreadTest = array of ATUiThreadTest;
+  Arr2ATUiThreadTest = array of Arr1ATUiThreadTest;
+  Arr3ATUiThreadTest = array of Arr2ATUiThreadTest;
+
+  OWDLLSInput = interface;
+  Arr1OWDLLSInput = array of OWDLLSInput;
+  Arr2OWDLLSInput = array of Arr1OWDLLSInput;
+  Arr3OWDLLSInput = array of Arr2OWDLLSInput;
+
+  JSIDSAKeyPairGenerator = interface;
+  Arr1JSIDSAKeyPairGenerator = array of JSIDSAKeyPairGenerator;
+  Arr2JSIDSAKeyPairGenerator = array of Arr1JSIDSAKeyPairGenerator;
+  Arr3JSIDSAKeyPairGenerator = array of Arr2JSIDSAKeyPairGenerator;
+
+  AVViewParent = interface;
+  Arr1AVViewParent = array of AVViewParent;
+  Arr2AVViewParent = array of Arr1AVViewParent;
+  Arr3AVViewParent = array of Arr2AVViewParent;
+
+  JSRowId = interface;
+  Arr1JSRowId = array of JSRowId;
+  Arr2JSRowId = array of Arr1JSRowId;
+  Arr3JSRowId = array of Arr2JSRowId;
+
+  JUCRunnableScheduledFuture = interface;
+  Arr1JUCRunnableScheduledFuture = array of JUCRunnableScheduledFuture;
+  Arr2JUCRunnableScheduledFuture = array of Arr1JUCRunnableScheduledFuture;
+  Arr3JUCRunnableScheduledFuture = array of Arr2JUCRunnableScheduledFuture;
+
+  OAHISessionOutputBuffer = interface;
+  Arr1OAHISessionOutputBuffer = array of OAHISessionOutputBuffer;
+  Arr2OAHISessionOutputBuffer = array of Arr1OAHISessionOutputBuffer;
+  Arr3OAHISessionOutputBuffer = array of Arr2OAHISessionOutputBuffer;
+
+  JLOverride = interface;
+  Arr1JLOverride = array of JLOverride;
+  Arr2JLOverride = array of Arr1JLOverride;
+  Arr3JLOverride = array of Arr2JLOverride;
+
+  OAHCRRouteInfo = interface;
+  Arr1OAHCRRouteInfo = array of OAHCRRouteInfo;
+  Arr2OAHCRRouteInfo = array of Arr1OAHCRRouteInfo;
+  Arr3OAHCRRouteInfo = array of Arr2OAHCRRouteInfo;
+
+  OAHCClientCookie = interface;
+  Arr1OAHCClientCookie = array of OAHCClientCookie;
+  Arr2OAHCClientCookie = array of Arr1OAHCClientCookie;
+  Arr3OAHCClientCookie = array of Arr2OAHCClientCookie;
+
+  OWDUserDataHandler = interface;
+  Arr1OWDUserDataHandler = array of OWDUserDataHandler;
+  Arr2OWDUserDataHandler = array of Arr1OWDUserDataHandler;
+  Arr3OWDUserDataHandler = array of Arr2OWDUserDataHandler;
+
+  OWDCharacterData = interface;
+  Arr1OWDCharacterData = array of OWDCharacterData;
+  Arr2OWDCharacterData = array of Arr1OWDCharacterData;
+  Arr3OWDCharacterData = array of Arr2OWDCharacterData;
+
+  JSConnection = interface;
+  Arr1JSConnection = array of JSConnection;
+  Arr2JSConnection = array of Arr1JSConnection;
+  Arr3JSConnection = array of Arr2JSConnection;
+
+  OAHPHttpRequestHandlerResolver = interface;
+  Arr1OAHPHttpRequestHandlerResolver = array of OAHPHttpRequestHandlerResolver;
+  Arr2OAHPHttpRequestHandlerResolver = array of Arr1OAHPHttpRequestHandlerResolver;
+  Arr3OAHPHttpRequestHandlerResolver = array of Arr2OAHPHttpRequestHandlerResolver;
+
+  OWDNameList = interface;
+  Arr1OWDNameList = array of OWDNameList;
+  Arr2OWDNameList = array of Arr1OWDNameList;
+  Arr3OWDNameList = array of Arr2OWDNameList;
+
+  OAHCCookieSpecFactory = interface;
+  Arr1OAHCCookieSpecFactory = array of OAHCCookieSpecFactory;
+  Arr2OAHCCookieSpecFactory = array of Arr1OAHCCookieSpecFactory;
+  Arr3OAHCCookieSpecFactory = array of Arr2OAHCCookieSpecFactory;
+
+  JSPooledConnection = interface;
+  Arr1JSPooledConnection = array of JSPooledConnection;
+  Arr2JSPooledConnection = array of Arr1JSPooledConnection;
+  Arr3JSPooledConnection = array of Arr2JSPooledConnection;
+
+  ABBluetoothProfile = interface;
+  Arr1ABBluetoothProfile = array of ABBluetoothProfile;
+  Arr2ABBluetoothProfile = array of Arr1ABBluetoothProfile;
+  Arr3ABBluetoothProfile = array of Arr2ABBluetoothProfile;
+
+  JNURLStreamHandlerFactory = interface;
+  Arr1JNURLStreamHandlerFactory = array of JNURLStreamHandlerFactory;
+  Arr2JNURLStreamHandlerFactory = array of Arr1JNURLStreamHandlerFactory;
+  Arr3JNURLStreamHandlerFactory = array of Arr2JNURLStreamHandlerFactory;
+
+  JSAAcl = interface;
+  Arr1JSAAcl = array of JSAAcl;
+  Arr2JSAAcl = array of Arr1JSAAcl;
+  Arr3JSAAcl = array of Arr2JSAAcl;
+
+  OAHCSM = interface;
+  Arr1OAHCSM = array of OAHCSM;
+  Arr2OAHCSM = array of Arr1OAHCSM;
+  Arr3OAHCSM = array of Arr2OAHCSM;
+
+  ASStartElementListener = interface;
+  Arr1ASStartElementListener = array of ASStartElementListener;
+  Arr2ASStartElementListener = array of Arr1ASStartElementListener;
+  Arr3ASStartElementListener = array of Arr2ASStartElementListener;
+
+  JUPNodeChangeListener = interface;
+  Arr1JUPNodeChangeListener = array of JUPNodeChangeListener;
+  Arr2JUPNodeChangeListener = array of Arr1JUPNodeChangeListener;
+  Arr3JUPNodeChangeListener = array of Arr2JUPNodeChangeListener;
+
+  ATGetChars = interface;
+  Arr1ATGetChars = array of ATGetChars;
+  Arr2ATGetChars = array of Arr1ATGetChars;
+  Arr3ATGetChars = array of Arr2ATGetChars;
+
+  JLAAnnotation = interface;
+  Arr1JLAAnnotation = array of JLAAnnotation;
+  Arr2JLAAnnotation = array of Arr1JLAAnnotation;
+  Arr3JLAAnnotation = array of Arr2JLAAnnotation;
+
+  AVIInputConnection = interface;
+  Arr1AVIInputConnection = array of AVIInputConnection;
+  Arr2AVIInputConnection = array of Arr1AVIInputConnection;
+  Arr3AVIInputConnection = array of Arr2AVIInputConnection;
+
+  JIDataInput = interface;
+  Arr1JIDataInput = array of JIDataInput;
+  Arr2JIDataInput = array of Arr1JIDataInput;
+  Arr3JIDataInput = array of Arr2JIDataInput;
+
+  OAHCPConnRoutePNames = interface;
+  Arr1OAHCPConnRoutePNames = array of OAHCPConnRoutePNames;
+  Arr2OAHCPConnRoutePNames = array of Arr1OAHCPConnRoutePNames;
+  Arr3OAHCPConnRoutePNames = array of Arr2OAHCPConnRoutePNames;
+
+  JSRowSetMetaData = interface;
+  Arr1JSRowSetMetaData = array of JSRowSetMetaData;
+  Arr2JSRowSetMetaData = array of Arr1JSRowSetMetaData;
+  Arr3JSRowSetMetaData = array of Arr2JSRowSetMetaData;
+
+  JUPPreferencesFactory = interface;
+  Arr1JUPPreferencesFactory = array of JUPPreferencesFactory;
+  Arr2JUPPreferencesFactory = array of Arr1JUPPreferencesFactory;
+  Arr3JUPPreferencesFactory = array of Arr2JUPPreferencesFactory;
+
+  JSStatement = interface;
+  Arr1JSStatement = array of JSStatement;
+  Arr2JSStatement = array of Arr1JSStatement;
+  Arr3JSStatement = array of Arr2JSStatement;
+
+  OAHCRHttpRouteDirector = interface;
+  Arr1OAHCRHttpRouteDirector = array of OAHCRHttpRouteDirector;
+  Arr2OAHCRHttpRouteDirector = array of Arr1OAHCRHttpRouteDirector;
+  Arr3OAHCRHttpRouteDirector = array of Arr2OAHCRHttpRouteDirector;
+
+  JMKOGL = interface;
+  Arr1JMKOGL = array of JMKOGL;
+  Arr2JMKOGL = array of Arr1JMKOGL;
+  Arr3JMKOGL = array of Arr2JMKOGL;
+
+  JNFileNameMap = interface;
+  Arr1JNFileNameMap = array of JNFileNameMap;
+  Arr2JNFileNameMap = array of Arr1JNFileNameMap;
+  Arr3JNFileNameMap = array of Arr2JNFileNameMap;
+
+  JSSQLInput = interface;
+  Arr1JSSQLInput = array of JSSQLInput;
+  Arr2JSSQLInput = array of Arr1JSSQLInput;
+  Arr3JSSQLInput = array of Arr2JSSQLInput;
+
+  AVAInterpolator = interface;
+  Arr1AVAInterpolator = array of AVAInterpolator;
+  Arr2AVAInterpolator = array of Arr1AVAInterpolator;
+  Arr3AVAInterpolator = array of Arr2AVAInterpolator;
+
+  OAHCHttpClient = interface;
+  Arr1OAHCHttpClient = array of OAHCHttpClient;
+  Arr2OAHCHttpClient = array of Arr1OAHCHttpClient;
+  Arr3OAHCHttpClient = array of Arr2OAHCHttpClient;
+
+  JNSSSLSessionBindingListener = interface;
+  Arr1JNSSSLSessionBindingListener = array of JNSSSLSessionBindingListener;
+  Arr2JNSSSLSessionBindingListener = array of Arr1JNSSSLSessionBindingListener;
+  Arr3JNSSSLSessionBindingListener = array of Arr2JNSSSLSessionBindingListener;
+
+  OAHCMAbortableHttpRequest = interface;
+  Arr1OAHCMAbortableHttpRequest = array of OAHCMAbortableHttpRequest;
+  Arr2OAHCMAbortableHttpRequest = array of Arr1OAHCMAbortableHttpRequest;
+  Arr3OAHCMAbortableHttpRequest = array of Arr2OAHCMAbortableHttpRequest;
+
+  OAHHeaderElementIterator = interface;
+  Arr1OAHHeaderElementIterator = array of OAHHeaderElementIterator;
+  Arr2OAHHeaderElementIterator = array of Arr1OAHHeaderElementIterator;
+  Arr3OAHHeaderElementIterator = array of Arr2OAHHeaderElementIterator;
+
+  ATSASmoke = interface;
+  Arr1ATSASmoke = array of ATSASmoke;
+  Arr2ATSASmoke = array of Arr1ATSASmoke;
+  Arr3ATSASmoke = array of Arr2ATSASmoke;
+
+  OAHHeaderElement = interface;
+  Arr1OAHHeaderElement = array of OAHHeaderElement;
+  Arr2OAHHeaderElement = array of Arr1OAHHeaderElement;
+  Arr3OAHHeaderElement = array of Arr2OAHHeaderElement;
+
+  ATMTransformationMethod = interface;
+  Arr1ATMTransformationMethod = array of ATMTransformationMethod;
+  Arr2ATMTransformationMethod = array of Arr1ATMTransformationMethod;
+  Arr3ATMTransformationMethod = array of Arr2ATMTransformationMethod;
+
+  JUCLCondition = interface;
+  Arr1JUCLCondition = array of JUCLCondition;
+  Arr2JUCLCondition = array of Arr1JUCLCondition;
+  Arr3JUCLCondition = array of Arr2JUCLCondition;
+
+  JSRowSetInternal = interface;
+  Arr1JSRowSetInternal = array of JSRowSetInternal;
+  Arr2JSRowSetInternal = array of Arr1JSRowSetInternal;
+  Arr3JSRowSetInternal = array of Arr2JSRowSetInternal;
+
+  OAHCRequestDirector = interface;
+  Arr1OAHCRequestDirector = array of OAHCRequestDirector;
+  Arr2OAHCRequestDirector = array of Arr1OAHCRequestDirector;
+  Arr3OAHCRequestDirector = array of Arr2OAHCRequestDirector;
+
+  JXXXPath = interface;
+  Arr1JXXXPath = array of JXXXPath;
+  Arr2JXXXPath = array of Arr1JXXXPath;
+  Arr3JXXXPath = array of Arr2JXXXPath;
+
+  JLRTypeVariable = interface;
+  Arr1JLRTypeVariable = array of JLRTypeVariable;
+  Arr2JLRTypeVariable = array of Arr1JLRTypeVariable;
+  Arr3JLRTypeVariable = array of Arr2JLRTypeVariable;
+
+  JNSKeyManager = interface;
+  Arr1JNSKeyManager = array of JNSKeyManager;
+  Arr2JNSKeyManager = array of Arr1JNSKeyManager;
+  Arr3JNSKeyManager = array of Arr2JNSKeyManager;
+
+  JNContentHandlerFactory = interface;
+  Arr1JNContentHandlerFactory = array of JNContentHandlerFactory;
+  Arr2JNContentHandlerFactory = array of Arr1JNContentHandlerFactory;
+  Arr3JNContentHandlerFactory = array of Arr2JNContentHandlerFactory;
+
+  OWDNodeList = interface;
+  Arr1OWDNodeList = array of OWDNodeList;
+  Arr2OWDNodeList = array of Arr1OWDNodeList;
+  Arr3OWDNodeList = array of Arr2OWDNodeList;
+
+  OAHIHttpMessageWriter = interface;
+  Arr1OAHIHttpMessageWriter = array of OAHIHttpMessageWriter;
+  Arr2OAHIHttpMessageWriter = array of Arr1OAHIHttpMessageWriter;
+  Arr3OAHIHttpMessageWriter = array of Arr2OAHIHttpMessageWriter;
+
+  JNCWritableByteChannel = interface;
+  Arr1JNCWritableByteChannel = array of JNCWritableByteChannel;
+  Arr2JNCWritableByteChannel = array of Arr1JNCWritableByteChannel;
+  Arr3JNCWritableByteChannel = array of Arr2JNCWritableByteChannel;
+
+  JRTestSuiteLoader = interface;
+  Arr1JRTestSuiteLoader = array of JRTestSuiteLoader;
+  Arr2JRTestSuiteLoader = array of Arr1JRTestSuiteLoader;
+  Arr3JRTestSuiteLoader = array of Arr2JRTestSuiteLoader;
+
+  JIFlushable = interface;
+  Arr1JIFlushable = array of JIFlushable;
+  Arr2JIFlushable = array of Arr1JIFlushable;
+  Arr3JIFlushable = array of Arr2JIFlushable;
+
+  OAHHttpStatus = interface;
+  Arr1OAHHttpStatus = array of OAHHttpStatus;
+  Arr2OAHHttpStatus = array of Arr1OAHHttpStatus;
+  Arr3OAHHttpStatus = array of Arr2OAHHttpStatus;
+
+  ATSLineBackgroundSpan = interface;
+  Arr1ATSLineBackgroundSpan = array of ATSLineBackgroundSpan;
+  Arr2ATSLineBackgroundSpan = array of Arr1ATSLineBackgroundSpan;
+  Arr3ATSLineBackgroundSpan = array of Arr2ATSLineBackgroundSpan;
+
+  JXTDDOMLocator = interface;
+  Arr1JXTDDOMLocator = array of JXTDDOMLocator;
+  Arr2JXTDDOMLocator = array of Arr1JXTDDOMLocator;
+  Arr3JXTDDOMLocator = array of Arr2JXTDDOMLocator;
+
+  JLRParameterizedType = interface;
+  Arr1JLRParameterizedType = array of JLRParameterizedType;
+  Arr2JLRParameterizedType = array of Arr1JLRParameterizedType;
+  Arr3JLRParameterizedType = array of Arr2JLRParameterizedType;
+
+  JSCertificate = interface;
+  Arr1JSCertificate = array of JSCertificate;
+  Arr2JSCertificate = array of Arr1JSCertificate;
+  Arr3JSCertificate = array of Arr2JSCertificate;
+
+  JSIDSAParams = interface;
+  Arr1JSIDSAParams = array of JSIDSAParams;
+  Arr2JSIDSAParams = array of Arr1JSIDSAParams;
+  Arr3JSIDSAParams = array of Arr2JSIDSAParams;
+
+  JLAInherited = interface;
+  Arr1JLAInherited = array of JLAInherited;
+  Arr2JLAInherited = array of Arr1JLAInherited;
+  Arr3JLAInherited = array of Arr2JLAInherited;
+
+  JBPropertyChangeListener = interface;
+  Arr1JBPropertyChangeListener = array of JBPropertyChangeListener;
+  Arr2JBPropertyChangeListener = array of Arr1JBPropertyChangeListener;
+  Arr3JBPropertyChangeListener = array of Arr2JBPropertyChangeListener;
+
+  JXTSource = interface;
+  Arr1JXTSource = array of JXTSource;
+  Arr2JXTSource = array of Arr1JXTSource;
+  Arr3JXTSource = array of Arr2JXTSource;
+
+  OAHCConnectionReleaseTrigger = interface;
+  Arr1OAHCConnectionReleaseTrigger = array of OAHCConnectionReleaseTrigger;
+  Arr2OAHCConnectionReleaseTrigger = array of Arr1OAHCConnectionReleaseTrigger;
+  Arr3OAHCConnectionReleaseTrigger = array of Arr2OAHCConnectionReleaseTrigger;
+
+  JSRowSetReader = interface;
+  Arr1JSRowSetReader = array of JSRowSetReader;
+  Arr2JSRowSetReader = array of Arr1JSRowSetReader;
+  Arr3JSRowSetReader = array of Arr2JSRowSetReader;
+
+  JUEnumeration = interface;
+  Arr1JUEnumeration = array of JUEnumeration;
+  Arr2JUEnumeration = array of Arr1JUEnumeration;
+  Arr3JUEnumeration = array of Arr2JUEnumeration;
+
+  OWDLLSOutput = interface;
+  Arr1OWDLLSOutput = array of OWDLLSOutput;
+  Arr2OWDLLSOutput = array of Arr1OWDLLSOutput;
+  Arr3OWDLLSOutput = array of Arr2OWDLLSOutput;
+
+  JNSHandshakeCompletedListener = interface;
+  Arr1JNSHandshakeCompletedListener = array of JNSHandshakeCompletedListener;
+  Arr2JNSHandshakeCompletedListener = array of Arr1JNSHandshakeCompletedListener;
+  Arr3JNSHandshakeCompletedListener = array of Arr2JNSHandshakeCompletedListener;
+
+  JUCLReadWriteLock = interface;
+  Arr1JUCLReadWriteLock = array of JUCLReadWriteLock;
+  Arr2JUCLReadWriteLock = array of Arr1JUCLReadWriteLock;
+  Arr3JUCLReadWriteLock = array of Arr2JUCLReadWriteLock;
+
+  ATInputType = interface;
+  Arr1ATInputType = array of ATInputType;
+  Arr2ATInputType = array of Arr1ATInputType;
+  Arr3ATInputType = array of Arr2ATInputType;
+
+  JSDriver = interface;
+  Arr1JSDriver = array of JSDriver;
+  Arr2JSDriver = array of Arr1JSDriver;
+  Arr3JSDriver = array of Arr2JSDriver;
+
+  JSIRSAPrivateKey = interface;
+  Arr1JSIRSAPrivateKey = array of JSIRSAPrivateKey;
+  Arr2JSIRSAPrivateKey = array of Arr1JSIRSAPrivateKey;
+  Arr3JSIRSAPrivateKey = array of Arr2JSIRSAPrivateKey;
+
+  OWDLDOMImplementationLS = interface;
+  Arr1OWDLDOMImplementationLS = array of OWDLDOMImplementationLS;
+  Arr2OWDLDOMImplementationLS = array of Arr1OWDLDOMImplementationLS;
+  Arr3OWDLDOMImplementationLS = array of Arr2OWDLDOMImplementationLS;
+
+  OAHCSetCookie2 = interface;
+  Arr1OAHCSetCookie2 = array of OAHCSetCookie2;
+  Arr2OAHCSetCookie2 = array of Arr1OAHCSetCookie2;
+  Arr3OAHCSetCookie2 = array of Arr2OAHCSetCookie2;
+
+  JXTSTransformerHandler = interface;
+  Arr1JXTSTransformerHandler = array of JXTSTransformerHandler;
+  Arr2JXTSTransformerHandler = array of Arr1JXTSTransformerHandler;
+  Arr3JXTSTransformerHandler = array of Arr2JXTSTransformerHandler;
+
+  ATSASuppress = interface;
+  Arr1ATSASuppress = array of ATSASuppress;
+  Arr2ATSASuppress = array of Arr1ATSASuppress;
+  Arr3ATSASuppress = array of Arr2ATSASuppress;
+
+  OXSDTDHandler = interface;
+  Arr1OXSDTDHandler = array of OXSDTDHandler;
+  Arr2OXSDTDHandler = array of Arr1OXSDTDHandler;
+  Arr3OXSDTDHandler = array of Arr2OXSDTDHandler;
+
+  OAHICTPoolEntryRequest = interface;
+  Arr1OAHICTPoolEntryRequest = array of OAHICTPoolEntryRequest;
+  Arr2OAHICTPoolEntryRequest = array of Arr1OAHICTPoolEntryRequest;
+  Arr3OAHICTPoolEntryRequest = array of Arr2OAHICTPoolEntryRequest;
+
+  ATSLineHeightSpan = interface;
+  Arr1ATSLineHeightSpan = array of ATSLineHeightSpan;
+  Arr2ATSLineHeightSpan = array of Arr1ATSLineHeightSpan;
+  Arr3ATSLineHeightSpan = array of Arr2ATSLineHeightSpan;
+
+  JSBlob = interface;
+  Arr1JSBlob = array of JSBlob;
+  Arr2JSBlob = array of Arr1JSBlob;
+  Arr3JSBlob = array of Arr2JSBlob;
+
+  JIObjectOutput = interface;
+  Arr1JIObjectOutput = array of JIObjectOutput;
+  Arr2JIObjectOutput = array of Arr1JIObjectOutput;
+  Arr3JIObjectOutput = array of Arr2JIObjectOutput;
+
+  JSCCertPathParameters = interface;
+  Arr1JSCCertPathParameters = array of JSCCertPathParameters;
+  Arr2JSCCertPathParameters = array of Arr1JSCCertPathParameters;
+  Arr3JSCCertPathParameters = array of Arr2JSCCertPathParameters;
+
+  JSADestroyable = interface;
+  Arr1JSADestroyable = array of JSADestroyable;
+  Arr2JSADestroyable = array of Arr1JSADestroyable;
+  Arr3JSADestroyable = array of Arr2JSADestroyable;
+
+  JUNavigableMap = interface;
+  Arr1JUNavigableMap = array of JUNavigableMap;
+  Arr2JUNavigableMap = array of Arr1JUNavigableMap;
+  Arr3JUNavigableMap = array of Arr2JUNavigableMap;
+
+  OXSELocator2 = interface;
+  Arr1OXSELocator2 = array of OXSELocator2;
+  Arr2OXSELocator2 = array of Arr1OXSELocator2;
+  Arr3OXSELocator2 = array of Arr2OXSELocator2;
+
+  JULFilter = interface;
+  Arr1JULFilter = array of JULFilter;
+  Arr2JULFilter = array of Arr1JULFilter;
+  Arr3JULFilter = array of Arr2JULFilter;
+
+  OWDDocument = interface;
+  Arr1OWDDocument = array of OWDDocument;
+  Arr2OWDDocument = array of Arr1OWDDocument;
+  Arr3OWDDocument = array of Arr2OWDDocument;
+
+  OWDDocumentType = interface;
+  Arr1OWDDocumentType = array of OWDDocumentType;
+  Arr2OWDDocumentType = array of Arr1OWDDocumentType;
+  Arr3OWDDocumentType = array of Arr2OWDDocumentType;
+
+  JSIDSAKey = interface;
+  Arr1JSIDSAKey = array of JSIDSAKey;
+  Arr2JSIDSAKey = array of Arr1JSIDSAKey;
+  Arr3JSIDSAKey = array of Arr2JSIDSAKey;
+
+  AUAttributeSet = interface;
+  Arr1AUAttributeSet = array of AUAttributeSet;
+  Arr2AUAttributeSet = array of Arr1AUAttributeSet;
+  Arr3AUAttributeSet = array of Arr2AUAttributeSet;
+
+  ASTextElementListener = interface;
+  Arr1ASTextElementListener = array of ASTextElementListener;
+  Arr2ASTextElementListener = array of Arr1ASTextElementListener;
+  Arr3ASTextElementListener = array of Arr2ASTextElementListener;
+
+  AWFilterQueryProvider = interface;
+  Arr1AWFilterQueryProvider = array of AWFilterQueryProvider;
+  Arr2AWFilterQueryProvider = array of Arr1AWFilterQueryProvider;
+  Arr3AWFilterQueryProvider = array of Arr2AWFilterQueryProvider;
+
+  JSSECField = interface;
+  Arr1JSSECField = array of JSSECField;
+  Arr2JSSECField = array of Arr1JSSECField;
+  Arr3JSSECField = array of Arr2JSSECField;
+
+  AVSurfaceHolder = interface;
+  Arr1AVSurfaceHolder = array of AVSurfaceHolder;
+  Arr2AVSurfaceHolder = array of Arr1AVSurfaceHolder;
+  Arr3AVSurfaceHolder = array of Arr2AVSurfaceHolder;
+
+  ACServiceConnection = interface;
+  Arr1ACServiceConnection = array of ACServiceConnection;
+  Arr2ACServiceConnection = array of Arr1ACServiceConnection;
+  Arr3ACServiceConnection = array of Arr2ACServiceConnection;
+
+  JSCCertPathBuilderResult = interface;
+  Arr1JSCCertPathBuilderResult = array of JSCCertPathBuilderResult;
+  Arr2JSCCertPathBuilderResult = array of Arr1JSCCertPathBuilderResult;
+  Arr3JSCCertPathBuilderResult = array of Arr2JSCCertPathBuilderResult;
+
+  JSIRSAKey = interface;
+  Arr1JSIRSAKey = array of JSIRSAKey;
+  Arr2JSIRSAKey = array of Arr1JSIRSAKey;
+  Arr3JSIRSAKey = array of Arr2JSIRSAKey;
+
+  JSPreparedStatement = interface;
+  Arr1JSPreparedStatement = array of JSPreparedStatement;
+  Arr2JSPreparedStatement = array of Arr1JSPreparedStatement;
+  Arr3JSPreparedStatement = array of Arr2JSPreparedStatement;
+
+  AWFilterable = interface;
+  Arr1AWFilterable = array of AWFilterable;
+  Arr2AWFilterable = array of Arr1AWFilterable;
+  Arr3AWFilterable = array of Arr2AWFilterable;
+
+  OWDProcessingInstruction = interface;
+  Arr1OWDProcessingInstruction = array of OWDProcessingInstruction;
+  Arr2OWDProcessingInstruction = array of Arr1OWDProcessingInstruction;
+  Arr3OWDProcessingInstruction = array of Arr2OWDProcessingInstruction;
+
+  JUCCompletionService = interface;
+  Arr1JUCCompletionService = array of JUCCompletionService;
+  Arr2JUCCompletionService = array of Arr1JUCCompletionService;
+  Arr3JUCCompletionService = array of Arr2JUCCompletionService;
+
+  OAHPHttpResponseInterceptorList = interface;
+  Arr1OAHPHttpResponseInterceptorList = array of OAHPHttpResponseInterceptorList;
+  Arr2OAHPHttpResponseInterceptorList = array of Arr1OAHPHttpResponseInterceptorList;
+  Arr3OAHPHttpResponseInterceptorList = array of Arr2OAHPHttpResponseInterceptorList;
+
+  JNSocketImplFactory = interface;
+  Arr1JNSocketImplFactory = array of JNSocketImplFactory;
+  Arr2JNSocketImplFactory = array of Arr1JNSocketImplFactory;
+  Arr3JNSocketImplFactory = array of Arr2JNSocketImplFactory;
+
+  AATypeEvaluator = interface;
+  Arr1AATypeEvaluator = array of AATypeEvaluator;
+  Arr2AATypeEvaluator = array of Arr1AATypeEvaluator;
+  Arr3AATypeEvaluator = array of Arr2AATypeEvaluator;
+
+  AVCollapsibleActionView = interface;
+  Arr1AVCollapsibleActionView = array of AVCollapsibleActionView;
+  Arr2AVCollapsibleActionView = array of Arr1AVCollapsibleActionView;
+  Arr3AVCollapsibleActionView = array of Arr2AVCollapsibleActionView;
+
+  OAHCManagedClientConnection = interface;
+  Arr1OAHCManagedClientConnection = array of OAHCManagedClientConnection;
+  Arr2OAHCManagedClientConnection = array of Arr1OAHCManagedClientConnection;
+  Arr3OAHCManagedClientConnection = array of Arr2OAHCManagedClientConnection;
+
+  ANSSipRegistrationListener = interface;
+  Arr1ANSSipRegistrationListener = array of ANSSipRegistrationListener;
+  Arr2ANSSipRegistrationListener = array of Arr1ANSSipRegistrationListener;
+  Arr3ANSSipRegistrationListener = array of Arr2ANSSipRegistrationListener;
+
+  JSPublicKey = interface;
+  Arr1JSPublicKey = array of JSPublicKey;
+  Arr2JSPublicKey = array of Arr1JSPublicKey;
+  Arr3JSPublicKey = array of Arr2JSPublicKey;
+
+  OXSContentHandler = interface;
+  Arr1OXSContentHandler = array of OXSContentHandler;
+  Arr2OXSContentHandler = array of Arr1OXSContentHandler;
+  Arr3OXSContentHandler = array of Arr2OXSContentHandler;
+
+  JNSManagerFactoryParameters = interface;
+  Arr1JNSManagerFactoryParameters = array of JNSManagerFactoryParameters;
+  Arr2JNSManagerFactoryParameters = array of Arr1JNSManagerFactoryParameters;
+  Arr3JNSManagerFactoryParameters = array of Arr2JNSManagerFactoryParameters;
+
+  OAHCPClientContext = interface;
+  Arr1OAHCPClientContext = array of OAHCPClientContext;
+  Arr2OAHCPClientContext = array of Arr1OAHCPClientContext;
+  Arr3OAHCPClientContext = array of Arr2OAHCPClientContext;
+
+  ATMKeyListener = interface;
+  Arr1ATMKeyListener = array of ATMKeyListener;
+  Arr2ATMKeyListener = array of Arr1ATMKeyListener;
+  Arr3ATMKeyListener = array of Arr2ATMKeyListener;
+
+  JSResultSetMetaData = interface;
+  Arr1JSResultSetMetaData = array of JSResultSetMetaData;
+  Arr2JSResultSetMetaData = array of Arr1JSResultSetMetaData;
+  Arr3JSResultSetMetaData = array of Arr2JSResultSetMetaData;
+
+  AAAccountManagerFuture = interface;
+  Arr1AAAccountManagerFuture = array of AAAccountManagerFuture;
+  Arr2AAAccountManagerFuture = array of Arr1AAAccountManagerFuture;
+  Arr3AAAccountManagerFuture = array of Arr2AAAccountManagerFuture;
+
+  JXTTemplates = interface;
+  Arr1JXTTemplates = array of JXTTemplates;
+  Arr2JXTTemplates = array of Arr1JXTTemplates;
+  Arr3JXTTemplates = array of Arr2JXTTemplates;
+
+  JSStruct = interface;
+  Arr1JSStruct = array of JSStruct;
+  Arr2JSStruct = array of Arr1JSStruct;
+  Arr3JSStruct = array of Arr2JSStruct;
+
+  OWDDOMLocator = interface;
+  Arr1OWDDOMLocator = array of OWDDOMLocator;
+  Arr2OWDDOMLocator = array of Arr1OWDDOMLocator;
+  Arr3OWDDOMLocator = array of Arr2OWDDOMLocator;
+
+  JUCConcurrentNavigableMap = interface;
+  Arr1JUCConcurrentNavigableMap = array of JUCConcurrentNavigableMap;
+  Arr2JUCConcurrentNavigableMap = array of Arr1JUCConcurrentNavigableMap;
+  Arr3JUCConcurrentNavigableMap = array of Arr2JUCConcurrentNavigableMap;
+
+  AVIInputMethodSession = interface;
+  Arr1AVIInputMethodSession = array of AVIInputMethodSession;
+  Arr2AVIInputMethodSession = array of Arr1AVIInputMethodSession;
+  Arr3AVIInputMethodSession = array of Arr2AVIInputMethodSession;
+
+  JSDatabaseMetaData = interface;
+  Arr1JSDatabaseMetaData = array of JSDatabaseMetaData;
+  Arr2JSDatabaseMetaData = array of Arr1JSDatabaseMetaData;
+  Arr3JSDatabaseMetaData = array of Arr2JSDatabaseMetaData;
+
+  JTAttributedCharacterIterator = interface;
+  Arr1JTAttributedCharacterIterator = array of JTAttributedCharacterIterator;
+  Arr2JTAttributedCharacterIterator = array of Arr1JTAttributedCharacterIterator;
+  Arr3JTAttributedCharacterIterator = array of Arr2JTAttributedCharacterIterator;
+
+  OAHCPConnManagerPNames = interface;
+  Arr1OAHCPConnManagerPNames = array of OAHCPConnManagerPNames;
+  Arr2OAHCPConnManagerPNames = array of Arr1OAHCPConnManagerPNames;
+  Arr3OAHCPConnManagerPNames = array of Arr2OAHCPConnManagerPNames;
+
+  ASTSynthesisCallback = interface;
+  Arr1ASTSynthesisCallback = array of ASTSynthesisCallback;
+  Arr2ASTSynthesisCallback = array of Arr1ASTSynthesisCallback;
+  Arr3ASTSynthesisCallback = array of Arr2ASTSynthesisCallback;
+
+  OAHMHeaderValueParser = interface;
+  Arr1OAHMHeaderValueParser = array of OAHMHeaderValueParser;
+  Arr2OAHMHeaderValueParser = array of Arr1OAHMHeaderValueParser;
+  Arr3OAHMHeaderValueParser = array of Arr2OAHMHeaderValueParser;
+
+  JSWrapper = interface;
+  Arr1JSWrapper = array of JSWrapper;
+  Arr2JSWrapper = array of Arr1JSWrapper;
+  Arr3JSWrapper = array of Arr2JSWrapper;
+
+  OAHCConnectionKeepAliveStrategy = interface;
+  Arr1OAHCConnectionKeepAliveStrategy = array of OAHCConnectionKeepAliveStrategy;
+  Arr2OAHCConnectionKeepAliveStrategy = array of Arr1OAHCConnectionKeepAliveStrategy;
+  Arr3OAHCConnectionKeepAliveStrategy = array of Arr2OAHCConnectionKeepAliveStrategy;
+
+  OAHCSSocketFactory = interface;
+  Arr1OAHCSSocketFactory = array of OAHCSSocketFactory;
+  Arr2OAHCSSocketFactory = array of Arr1OAHCSSocketFactory;
+  Arr3OAHCSSocketFactory = array of Arr2OAHCSSocketFactory;
+
+  AWSpinnerAdapter = interface;
+  Arr1AWSpinnerAdapter = array of AWSpinnerAdapter;
+  Arr2AWSpinnerAdapter = array of Arr1AWSpinnerAdapter;
+  Arr3AWSpinnerAdapter = array of Arr2AWSpinnerAdapter;
+
+  JSAAclEntry = interface;
+  Arr1JSAAclEntry = array of JSAAclEntry;
+  Arr2JSAAclEntry = array of Arr1JSAAclEntry;
+  Arr3JSAAclEntry = array of Arr2JSAAclEntry;
+
+  OXSAttributes = interface;
+  Arr1OXSAttributes = array of OXSAttributes;
+  Arr2OXSAttributes = array of Arr1OXSAttributes;
+  Arr3OXSAttributes = array of Arr2OXSAttributes;
+
+  JSSAlgorithmParameterSpec = interface;
+  Arr1JSSAlgorithmParameterSpec = array of JSSAlgorithmParameterSpec;
+  Arr2JSSAlgorithmParameterSpec = array of Arr1JSSAlgorithmParameterSpec;
+  Arr3JSSAlgorithmParameterSpec = array of Arr2JSSAlgorithmParameterSpec;
+
+  OAHReasonPhraseCatalog = interface;
+  Arr1OAHReasonPhraseCatalog = array of OAHReasonPhraseCatalog;
+  Arr2OAHReasonPhraseCatalog = array of Arr1OAHReasonPhraseCatalog;
+  Arr3OAHReasonPhraseCatalog = array of Arr2OAHReasonPhraseCatalog;
+
+  JUQueue = interface;
+  Arr1JUQueue = array of JUQueue;
+  Arr2JUQueue = array of Arr1JUQueue;
+  Arr3JUQueue = array of Arr2JUQueue;
+
+  OXSErrorHandler = interface;
+  Arr1OXSErrorHandler = array of OXSErrorHandler;
+  Arr2OXSErrorHandler = array of Arr1OXSErrorHandler;
+  Arr3OXSErrorHandler = array of Arr2OXSErrorHandler;
+
+  ACDialogInterface = interface;
+  Arr1ACDialogInterface = array of ACDialogInterface;
+  Arr2ACDialogInterface = array of Arr1ACDialogInterface;
+  Arr3ACDialogInterface = array of Arr2ACDialogInterface;
+
+  ATSUpdateLayout = interface;
+  Arr1ATSUpdateLayout = array of ATSUpdateLayout;
+  Arr2ATSUpdateLayout = array of Arr1ATSUpdateLayout;
+  Arr3ATSUpdateLayout = array of Arr2ATSUpdateLayout;
+
+  OAHCSX509HostnameVerifier = interface;
+  Arr1OAHCSX509HostnameVerifier = array of OAHCSX509HostnameVerifier;
+  Arr2OAHCSX509HostnameVerifier = array of Arr1OAHCSX509HostnameVerifier;
+  Arr3OAHCSX509HostnameVerifier = array of Arr2OAHCSX509HostnameVerifier;
+
+  JUZChecksum = interface;
+  Arr1JUZChecksum = array of JUZChecksum;
+  Arr2JUZChecksum = array of Arr1JUZChecksum;
+  Arr3JUZChecksum = array of Arr2JUZChecksum;
+
+  OWDNode = interface;
+  Arr1OWDNode = array of OWDNode;
+  Arr2OWDNode = array of Arr1OWDNode;
+  Arr3OWDNode = array of Arr2OWDNode;
+
+  ATSLeadingMarginSpan = interface;
+  Arr1ATSLeadingMarginSpan = array of ATSLeadingMarginSpan;
+  Arr2ATSLeadingMarginSpan = array of Arr1ATSLeadingMarginSpan;
+  Arr3ATSLeadingMarginSpan = array of Arr2ATSLeadingMarginSpan;
+
+  OAHACredentials = interface;
+  Arr1OAHACredentials = array of OAHACredentials;
+  Arr2OAHACredentials = array of Arr1OAHACredentials;
+  Arr3OAHACredentials = array of Arr2OAHACredentials;
+
+  JSIDSAPublicKey = interface;
+  Arr1JSIDSAPublicKey = array of JSIDSAPublicKey;
+  Arr2JSIDSAPublicKey = array of Arr1JSIDSAPublicKey;
+  Arr3JSIDSAPublicKey = array of Arr2JSIDSAPublicKey;
+
+  OAHHttpRequestInterceptor = interface;
+  Arr1OAHHttpRequestInterceptor = array of OAHHttpRequestInterceptor;
+  Arr2OAHHttpRequestInterceptor = array of Arr1OAHHttpRequestInterceptor;
+  Arr3OAHHttpRequestInterceptor = array of Arr2OAHHttpRequestInterceptor;
+
+  JLARetention = interface;
+  Arr1JLARetention = array of JLARetention;
+  Arr2JLARetention = array of Arr1JLARetention;
+  Arr3JLARetention = array of Arr2JLARetention;
+
+  OAHIHttpMessageParser = interface;
+  Arr1OAHIHttpMessageParser = array of OAHIHttpMessageParser;
+  Arr2OAHIHttpMessageParser = array of Arr1OAHIHttpMessageParser;
+  Arr3OAHIHttpMessageParser = array of Arr2OAHIHttpMessageParser;
+
+  OWDLLSParser = interface;
+  Arr1OWDLLSParser = array of OWDLLSParser;
+  Arr2OWDLLSParser = array of Arr1OWDLLSParser;
+  Arr3OWDLLSParser = array of Arr2OWDLLSParser;
+
+  APBaseColumns = interface;
+  Arr1APBaseColumns = array of APBaseColumns;
+  Arr2APBaseColumns = array of Arr1APBaseColumns;
+  Arr3APBaseColumns = array of Arr2APBaseColumns;
+
+  AMEEffectUpdateListener = interface;
+  Arr1AMEEffectUpdateListener = array of AMEEffectUpdateListener;
+  Arr2AMEEffectUpdateListener = array of Arr1AMEEffectUpdateListener;
+  Arr3AMEEffectUpdateListener = array of Arr2AMEEffectUpdateListener;
+
+  OAHTokenIterator = interface;
+  Arr1OAHTokenIterator = array of OAHTokenIterator;
+  Arr2OAHTokenIterator = array of Arr1OAHTokenIterator;
+  Arr3OAHTokenIterator = array of Arr2OAHTokenIterator;
+
+  OAHCPAllClientPNames = interface;
+  Arr1OAHCPAllClientPNames = array of OAHCPAllClientPNames;
+  Arr2OAHCPAllClientPNames = array of Arr1OAHCPAllClientPNames;
+  Arr3OAHCPAllClientPNames = array of Arr2OAHCPAllClientPNames;
+
+  JXNNamespaceContext = interface;
+  Arr1JXNNamespaceContext = array of JXNNamespaceContext;
+  Arr2JXNNamespaceContext = array of Arr1JXNNamespaceContext;
+  Arr3JXNNamespaceContext = array of Arr2JXNNamespaceContext;
+
+  JUSortedSet = interface;
+  Arr1JUSortedSet = array of JUSortedSet;
+  Arr2JUSortedSet = array of Arr1JUSortedSet;
+  Arr3JUSortedSet = array of Arr2JUSortedSet;
+
+  JSCallableStatement = interface;
+  Arr1JSCallableStatement = array of JSCallableStatement;
+  Arr2JSCallableStatement = array of Arr1JSCallableStatement;
+  Arr3JSCallableStatement = array of Arr2JSCallableStatement;
+
+  AWListAdapter = interface;
+  Arr1AWListAdapter = array of AWListAdapter;
+  Arr2AWListAdapter = array of Arr1AWListAdapter;
+  Arr3AWListAdapter = array of Arr2AWListAdapter;
+
+  JNSSSLSession = interface;
+  Arr1JNSSSLSession = array of JNSSSLSession;
+  Arr2JNSSSLSession = array of Arr1JNSSSLSession;
+  Arr3JNSSSLSession = array of Arr2JNSSSLSession;
+
+  ANTTagTechnology = interface;
+  Arr1ANTTagTechnology = array of ANTTagTechnology;
+  Arr2ANTTagTechnology = array of Arr1ANTTagTechnology;
+  Arr3ANTTagTechnology = array of Arr2ANTTagTechnology;
+
+  JSCCertStoreParameters = interface;
+  Arr1JSCCertStoreParameters = array of JSCCertStoreParameters;
+  Arr2JSCCertStoreParameters = array of Arr1JSCCertStoreParameters;
+  Arr3JSCCertStoreParameters = array of Arr2JSCCertStoreParameters;
+
+  JLRWildcardType = interface;
+  Arr1JLRWildcardType = array of JLRWildcardType;
+  Arr2JLRWildcardType = array of Arr1JLRWildcardType;
+  Arr3JLRWildcardType = array of Arr2JLRWildcardType;
+
+  OAHRequestLine = interface;
+  Arr1OAHRequestLine = array of OAHRequestLine;
+  Arr2OAHRequestLine = array of Arr1OAHRequestLine;
+  Arr3OAHRequestLine = array of Arr2OAHRequestLine;
+
+  OAHPHttpParams = interface;
+  Arr1OAHPHttpParams = array of OAHPHttpParams;
+  Arr2OAHPHttpParams = array of Arr1OAHPHttpParams;
+  Arr3OAHPHttpParams = array of Arr2OAHPHttpParams;
+
+  OAHHttpRequest = interface;
+  Arr1OAHHttpRequest = array of OAHHttpRequest;
+  Arr2OAHHttpRequest = array of Arr1OAHHttpRequest;
+  Arr3OAHHttpRequest = array of Arr2OAHHttpRequest;
+
+  JIFileFilter = interface;
+  Arr1JIFileFilter = array of JIFileFilter;
+  Arr2JIFileFilter = array of Arr1JIFileFilter;
+  Arr3JIFileFilter = array of Arr2JIFileFilter;
+
+  JFTest = interface;
+  Arr1JFTest = array of JFTest;
+  Arr2JFTest = array of Arr1JFTest;
+  Arr3JFTest = array of Arr2JFTest;
+
+  OAHEContentLengthStrategy = interface;
+  Arr1OAHEContentLengthStrategy = array of OAHEContentLengthStrategy;
+  Arr2OAHEContentLengthStrategy = array of Arr1OAHEContentLengthStrategy;
+  Arr3OAHEContentLengthStrategy = array of Arr2OAHEContentLengthStrategy;
+
+  ASKeyChainAliasCallback = interface;
+  Arr1ASKeyChainAliasCallback = array of ASKeyChainAliasCallback;
+  Arr2ASKeyChainAliasCallback = array of Arr1ASKeyChainAliasCallback;
+  Arr3ASKeyChainAliasCallback = array of Arr2ASKeyChainAliasCallback;
+
+  ATSpanned = interface;
+  Arr1ATSpanned = array of ATSpanned;
+  Arr2ATSpanned = array of Arr1ATSpanned;
+  Arr3ATSpanned = array of Arr2ATSpanned;
+
+  AUPrinter = interface;
+  Arr1AUPrinter = array of AUPrinter;
+  Arr2AUPrinter = array of Arr1AUPrinter;
+  Arr3AUPrinter = array of Arr2AUPrinter;
+
+  OAHCAuthenticationHandler = interface;
+  Arr1OAHCAuthenticationHandler = array of OAHCAuthenticationHandler;
+  Arr2OAHCAuthenticationHandler = array of Arr1OAHCAuthenticationHandler;
+  Arr3OAHCAuthenticationHandler = array of Arr2OAHCAuthenticationHandler;
+
+  OAHCOperatedClientConnection = interface;
+  Arr1OAHCOperatedClientConnection = array of OAHCOperatedClientConnection;
+  Arr2OAHCOperatedClientConnection = array of Arr1OAHCOperatedClientConnection;
+  Arr3OAHCOperatedClientConnection = array of Arr2OAHCOperatedClientConnection;
+
+  ATPerformanceTestCase = interface;
+  Arr1ATPerformanceTestCase = array of ATPerformanceTestCase;
+  Arr2ATPerformanceTestCase = array of Arr1ATPerformanceTestCase;
+  Arr3ATPerformanceTestCase = array of Arr2ATPerformanceTestCase;
+
+  AGDAnimatable = interface;
+  Arr1AGDAnimatable = array of AGDAnimatable;
+  Arr2AGDAnimatable = array of Arr1AGDAnimatable;
+  Arr3AGDAnimatable = array of Arr2AGDAnimatable;
+
+  OWDDOMImplementationSource = interface;
+  Arr1OWDDOMImplementationSource = array of OWDDOMImplementationSource;
+  Arr2OWDDOMImplementationSource = array of Arr1OWDDOMImplementationSource;
+  Arr3OWDDOMImplementationSource = array of Arr2OWDDOMImplementationSource;
+
+  OXSLocator = interface;
+  Arr1OXSLocator = array of OXSLocator;
+  Arr2OXSLocator = array of Arr1OXSLocator;
+  Arr3OXSLocator = array of Arr2OXSLocator;
+
+  JNSX509KeyManager = interface;
+  Arr1JNSX509KeyManager = array of JNSX509KeyManager;
+  Arr2JNSX509KeyManager = array of Arr1JNSX509KeyManager;
+  Arr3JNSX509KeyManager = array of Arr2JNSX509KeyManager;
+
+  JLATarget = interface;
+  Arr1JLATarget = array of JLATarget;
+  Arr2JLATarget = array of Arr1JLATarget;
+  Arr3JLATarget = array of Arr2JLATarget;
+
+  JIObjectInputValidation = interface;
+  Arr1JIObjectInputValidation = array of JIObjectInputValidation;
+  Arr2JIObjectInputValidation = array of Arr1JIObjectInputValidation;
+  Arr3JIObjectInputValidation = array of Arr2JIObjectInputValidation;
+
+  OAHHttpConnection = interface;
+  Arr1OAHHttpConnection = array of OAHHttpConnection;
+  Arr2OAHHttpConnection = array of Arr1OAHHttpConnection;
+  Arr3OAHHttpConnection = array of Arr2OAHHttpConnection;
+
+  JSGuard = interface;
+  Arr1JSGuard = array of JSGuard;
+  Arr2JSGuard = array of Arr1JSGuard;
+  Arr3JSGuard = array of Arr2JSGuard;
+
+  JIObjectInput = interface;
+  Arr1JIObjectInput = array of JIObjectInput;
+  Arr2JIObjectInput = array of Arr1JIObjectInput;
+  Arr3JIObjectInput = array of Arr2JIObjectInput;
+
+  JNCGatheringByteChannel = interface;
+  Arr1JNCGatheringByteChannel = array of JNCGatheringByteChannel;
+  Arr2JNCGatheringByteChannel = array of Arr1JNCGatheringByteChannel;
+  Arr3JNCGatheringByteChannel = array of Arr2JNCGatheringByteChannel;
+
+  JSConnectionPoolDataSource = interface;
+  Arr1JSConnectionPoolDataSource = array of JSConnectionPoolDataSource;
+  Arr2JSConnectionPoolDataSource = array of Arr1JSConnectionPoolDataSource;
+  Arr3JSConnectionPoolDataSource = array of Arr2JSConnectionPoolDataSource;
+
+  JLRunnable = interface;
+  Arr1JLRunnable = array of JLRunnable;
+  Arr2JLRunnable = array of Arr1JLRunnable;
+  Arr3JLRunnable = array of Arr2JLRunnable;
+
+  AWAdapter = interface;
+  Arr1AWAdapter = array of AWAdapter;
+  Arr2AWAdapter = array of Arr1AWAdapter;
+  Arr3AWAdapter = array of Arr2AWAdapter;
+
+  OXVXmlSerializer = interface;
+  Arr1OXVXmlSerializer = array of OXVXmlSerializer;
+  Arr2OXVXmlSerializer = array of Arr1OXVXmlSerializer;
+  Arr3OXVXmlSerializer = array of Arr2OXVXmlSerializer;
+
+  OWDLLSResourceResolver = interface;
+  Arr1OWDLLSResourceResolver = array of OWDLLSResourceResolver;
+  Arr2OWDLLSResourceResolver = array of Arr1OWDLLSResourceResolver;
+  Arr3OWDLLSResourceResolver = array of Arr2OWDLLSResourceResolver;
+
+  JSIRSAPrivateCrtKey = interface;
+  Arr1JSIRSAPrivateCrtKey = array of JSIRSAPrivateCrtKey;
+  Arr2JSIRSAPrivateCrtKey = array of Arr1JSIRSAPrivateCrtKey;
+  Arr3JSIRSAPrivateCrtKey = array of Arr2JSIRSAPrivateCrtKey;
+
+  ATParcelableSpan = interface;
+  Arr1ATParcelableSpan = array of ATParcelableSpan;
+  Arr2ATParcelableSpan = array of Arr1ATParcelableSpan;
+  Arr3ATParcelableSpan = array of Arr2ATParcelableSpan;
+
+  JFProtectable = interface;
+  Arr1JFProtectable = array of JFProtectable;
+  Arr2JFProtectable = array of Arr1JFProtectable;
+  Arr3JFProtectable = array of Arr2JFProtectable;
+
+  AVAAccessibilityEventSource = interface;
+  Arr1AVAAccessibilityEventSource = array of AVAAccessibilityEventSource;
+  Arr2AVAAccessibilityEventSource = array of Arr1AVAAccessibilityEventSource;
+  Arr3AVAAccessibilityEventSource = array of Arr2AVAAccessibilityEventSource;
+
+  JXXXPathExpression = interface;
+  Arr1JXXXPathExpression = array of JXXXPathExpression;
+  Arr2JXXXPathExpression = array of Arr1JXXXPathExpression;
+  Arr3JXXXPathExpression = array of Arr2JXXXPathExpression;
+
+  JSPrincipal = interface;
+  Arr1JSPrincipal = array of JSPrincipal;
+  Arr2JSPrincipal = array of Arr1JSPrincipal;
+  Arr3JSPrincipal = array of Arr2JSPrincipal;
+
+  OWDDOMErrorHandler = interface;
+  Arr1OWDDOMErrorHandler = array of OWDDOMErrorHandler;
+  Arr2OWDDOMErrorHandler = array of Arr1OWDDOMErrorHandler;
+  Arr3OWDDOMErrorHandler = array of Arr2OWDDOMErrorHandler;
+
+  OAHCPClientPNames = interface;
+  Arr1OAHCPClientPNames = array of OAHCPClientPNames;
+  Arr2OAHCPClientPNames = array of Arr1OAHCPClientPNames;
+  Arr3OAHCPClientPNames = array of Arr2OAHCPClientPNames;
+
+  OAHCSetCookie = interface;
+  Arr1OAHCSetCookie = array of OAHCSetCookie;
+  Arr2OAHCSetCookie = array of Arr1OAHCSetCookie;
+  Arr3OAHCSetCookie = array of Arr2OAHCSetCookie;
+
+  JXTSourceLocator = interface;
+  Arr1JXTSourceLocator = array of JXTSourceLocator;
+  Arr2JXTSourceLocator = array of Arr1JXTSourceLocator;
+  Arr3JXTSourceLocator = array of Arr2JXTSourceLocator;
+
+  ATInputFilter = interface;
+  Arr1ATInputFilter = array of ATInputFilter;
+  Arr2ATInputFilter = array of Arr1ATInputFilter;
+  Arr3ATInputFilter = array of Arr2ATInputFilter;
+
+  JUCCallable = interface;
+  Arr1JUCCallable = array of JUCCallable;
+  Arr2JUCCallable = array of Arr1JUCCallable;
+  Arr3JUCCallable = array of Arr2JUCCallable;
+
+  OAHCEofSensorWatcher = interface;
+  Arr1OAHCEofSensorWatcher = array of OAHCEofSensorWatcher;
+  Arr2OAHCEofSensorWatcher = array of Arr1OAHCEofSensorWatcher;
+  Arr3OAHCEofSensorWatcher = array of Arr2OAHCEofSensorWatcher;
+
+  OWDAttr = interface;
+  Arr1OWDAttr = array of OWDAttr;
+  Arr2OWDAttr = array of Arr1OWDAttr;
+  Arr3OWDAttr = array of Arr2OWDAttr;
+
+  ATSASmallTest = interface;
+  Arr1ATSASmallTest = array of ATSASmallTest;
+  Arr2ATSASmallTest = array of Arr1ATSASmallTest;
+  Arr3ATSASmallTest = array of Arr2ATSASmallTest;
+
+  AVContextMenu = interface;
+  Arr1AVContextMenu = array of AVContextMenu;
+  Arr2AVContextMenu = array of Arr1AVContextMenu;
+  Arr3AVContextMenu = array of Arr2AVContextMenu;
+
+  OWDNotation = interface;
+  Arr1OWDNotation = array of OWDNotation;
+  Arr2OWDNotation = array of Arr1OWDNotation;
+  Arr3OWDNotation = array of Arr2OWDNotation;
+
+  JNCookiePolicy = interface;
+  Arr1JNCookiePolicy = array of JNCookiePolicy;
+  Arr2JNCookiePolicy = array of Arr1JNCookiePolicy;
+  Arr3JNCookiePolicy = array of Arr2JNCookiePolicy;
+
+  OAHCSHostNameResolver = interface;
+  Arr1OAHCSHostNameResolver = array of OAHCSHostNameResolver;
+  Arr2OAHCSHostNameResolver = array of Arr1OAHCSHostNameResolver;
+  Arr3OAHCSHostNameResolver = array of Arr2OAHCSHostNameResolver;
+
+  AABBackupHelper = interface;
+  Arr1AABBackupHelper = array of AABBackupHelper;
+  Arr2AABBackupHelper = array of Arr1AABBackupHelper;
+  Arr3AABBackupHelper = array of Arr2AABBackupHelper;
+
+  OAHCClientConnectionRequest = interface;
+  Arr1OAHCClientConnectionRequest = array of OAHCClientConnectionRequest;
+  Arr2OAHCClientConnectionRequest = array of Arr1OAHCClientConnectionRequest;
+  Arr3OAHCClientConnectionRequest = array of Arr2OAHCClientConnectionRequest;
+
+  OAHNameValuePair = interface;
+  Arr1OAHNameValuePair = array of OAHNameValuePair;
+  Arr2OAHNameValuePair = array of Arr1OAHNameValuePair;
+  Arr3OAHNameValuePair = array of Arr2OAHNameValuePair;
+
+  AWDownloadListener = interface;
+  Arr1AWDownloadListener = array of AWDownloadListener;
+  Arr2AWDownloadListener = array of Arr1AWDownloadListener;
+  Arr3AWDownloadListener = array of Arr2AWDownloadListener;
+
+  JNCReadableByteChannel = interface;
+  Arr1JNCReadableByteChannel = array of JNCReadableByteChannel;
+  Arr2JNCReadableByteChannel = array of Arr1JNCReadableByteChannel;
+  Arr3JNCReadableByteChannel = array of Arr2JNCReadableByteChannel;
+
+  JNSTrustManager = interface;
+  Arr1JNSTrustManager = array of JNSTrustManager;
+  Arr2JNSTrustManager = array of Arr1JNSTrustManager;
+  Arr3JNSTrustManager = array of Arr2JNSTrustManager;
+
+  JSCCertPathValidatorResult = interface;
+  Arr1JSCCertPathValidatorResult = array of JSCCertPathValidatorResult;
+  Arr2JSCCertPathValidatorResult = array of Arr1JSCCertPathValidatorResult;
+  Arr3JSCCertPathValidatorResult = array of Arr2JSCCertPathValidatorResult;
+
+  JSSavepoint = interface;
+  Arr1JSSavepoint = array of JSSavepoint;
+  Arr2JSSavepoint = array of Arr1JSSavepoint;
+  Arr3JSSavepoint = array of Arr2JSSavepoint;
+
+  JUList = interface;
+  Arr1JUList = array of JUList;
+  Arr2JUList = array of Arr1JUList;
+  Arr3JUList = array of Arr2JUList;
+
+  JSAGroup = interface;
+  Arr1JSAGroup = array of JSAGroup;
+  Arr2JSAGroup = array of Arr1JSAGroup;
+  Arr3JSAGroup = array of Arr2JSAGroup;
+
+  OAHHeader = interface;
+  Arr1OAHHeader = array of OAHHeader;
+  Arr2OAHHeader = array of Arr1OAHHeader;
+  Arr3OAHHeader = array of Arr2OAHHeader;
+
+  OAHCPCookieSpecPNames = interface;
+  Arr1OAHCPCookieSpecPNames = array of OAHCPCookieSpecPNames;
+  Arr2OAHCPCookieSpecPNames = array of Arr1OAHCPCookieSpecPNames;
+  Arr3OAHCPCookieSpecPNames = array of Arr2OAHCPCookieSpecPNames;
+
+  AWValueCallback = interface;
+  Arr1AWValueCallback = array of AWValueCallback;
+  Arr2AWValueCallback = array of Arr1AWValueCallback;
+  Arr3AWValueCallback = array of Arr2AWValueCallback;
+
+  JXTSTemplatesHandler = interface;
+  Arr1JXTSTemplatesHandler = array of JXTSTemplatesHandler;
+  Arr2JXTSTemplatesHandler = array of Arr1JXTSTemplatesHandler;
+  Arr3JXTSTemplatesHandler = array of Arr2JXTSTemplatesHandler;
+
+  JUCExecutor = interface;
+  Arr1JUCExecutor = array of JUCExecutor;
+  Arr2JUCExecutor = array of Arr1JUCExecutor;
+  Arr3JUCExecutor = array of Arr2JUCExecutor;
+
+  OWDLLSParserFilter = interface;
+  Arr1OWDLLSParserFilter = array of OWDLLSParserFilter;
+  Arr2OWDLLSParserFilter = array of Arr1OWDLLSParserFilter;
+  Arr3OWDLLSParserFilter = array of Arr2OWDLLSParserFilter;
+
+  OAHHttpEntity = interface;
+  Arr1OAHHttpEntity = array of OAHHttpEntity;
+  Arr2OAHHttpEntity = array of Arr1OAHHttpEntity;
+  Arr3OAHHttpEntity = array of Arr2OAHHttpEntity;
+
+  AHSensorListener = interface;
+  Arr1AHSensorListener = array of AHSensorListener;
+  Arr2AHSensorListener = array of Arr1AHSensorListener;
+  Arr3AHSensorListener = array of Arr2AHSensorListener;
+
+  OAHIHttpTransportMetrics = interface;
+  Arr1OAHIHttpTransportMetrics = array of OAHIHttpTransportMetrics;
+  Arr2OAHIHttpTransportMetrics = array of Arr1OAHIHttpTransportMetrics;
+  Arr3OAHIHttpTransportMetrics = array of Arr2OAHIHttpTransportMetrics;
+
+  ATEditable = interface;
+  Arr1ATEditable = array of ATEditable;
+  Arr2ATEditable = array of Arr1ATEditable;
+  Arr3ATEditable = array of Arr2ATEditable;
+
+  OWDNamedNodeMap = interface;
+  Arr1OWDNamedNodeMap = array of OWDNamedNodeMap;
+  Arr2OWDNamedNodeMap = array of Arr1OWDNamedNodeMap;
+  Arr3OWDNamedNodeMap = array of Arr2OWDNamedNodeMap;
+
+  OAHEContentProducer = interface;
+  Arr1OAHEContentProducer = array of OAHEContentProducer;
+  Arr2OAHEContentProducer = array of Arr1OAHEContentProducer;
+  Arr3OAHEContentProducer = array of Arr2OAHEContentProducer;
+
+  JUFormattable = interface;
+  Arr1JUFormattable = array of JUFormattable;
+  Arr2JUFormattable = array of Arr1JUFormattable;
+  Arr3JUFormattable = array of Arr2JUFormattable;
+
+  JCIPBEKey = interface;
+  Arr1JCIPBEKey = array of JCIPBEKey;
+  Arr2JCIPBEKey = array of Arr1JCIPBEKey;
+  Arr3JCIPBEKey = array of Arr2JCIPBEKey;
+
+  ACComponentCallbacks2 = interface;
+  Arr1ACComponentCallbacks2 = array of ACComponentCallbacks2;
+  Arr2ACComponentCallbacks2 = array of Arr1ACComponentCallbacks2;
+  Arr3ACComponentCallbacks2 = array of Arr2ACComponentCallbacks2;
+
+  OAHAAuthSchemeFactory = interface;
+  Arr1OAHAAuthSchemeFactory = array of OAHAAuthSchemeFactory;
+  Arr2OAHAAuthSchemeFactory = array of Arr1OAHAAuthSchemeFactory;
+  Arr3OAHAAuthSchemeFactory = array of Arr2OAHAAuthSchemeFactory;
+
+  ACComponentCallbacks = interface;
+  Arr1ACComponentCallbacks = array of ACComponentCallbacks;
+  Arr2ACComponentCallbacks = array of Arr1ACComponentCallbacks;
+  Arr3ACComponentCallbacks = array of Arr2ACComponentCallbacks;
+
+  JSIECKey = interface;
+  Arr1JSIECKey = array of JSIECKey;
+  Arr2JSIECKey = array of Arr1JSIECKey;
+  Arr3JSIECKey = array of Arr2JSIECKey;
+
+  ATSTabStopSpan = interface;
+  Arr1ATSTabStopSpan = array of ATSTabStopSpan;
+  Arr2ATSTabStopSpan = array of Arr1ATSTabStopSpan;
+  Arr3ATSTabStopSpan = array of Arr2ATSTabStopSpan;
+
+  OAHCRHttpRoutePlanner = interface;
+  Arr1OAHCRHttpRoutePlanner = array of OAHCRHttpRoutePlanner;
+  Arr2OAHCRHttpRoutePlanner = array of Arr1OAHCRHttpRoutePlanner;
+  Arr3OAHCRHttpRoutePlanner = array of Arr2OAHCRHttpRoutePlanner;
+
+  JSIRSAPublicKey = interface;
+  Arr1JSIRSAPublicKey = array of JSIRSAPublicKey;
+  Arr2JSIRSAPublicKey = array of Arr1JSIRSAPublicKey;
+  Arr3JSIRSAPublicKey = array of Arr2JSIRSAPublicKey;
+
+  JURandomAccess = interface;
+  Arr1JURandomAccess = array of JURandomAccess;
+  Arr2JURandomAccess = array of Arr1JURandomAccess;
+  Arr3JURandomAccess = array of Arr2JURandomAccess;
+
+  JMKOGL10Ext = interface;
+  Arr1JMKOGL10Ext = array of JMKOGL10Ext;
+  Arr2JMKOGL10Ext = array of Arr1JMKOGL10Ext;
+  Arr3JMKOGL10Ext = array of Arr2JMKOGL10Ext;
+
+  ATTestSuiteProvider = interface;
+  Arr1ATTestSuiteProvider = array of ATTestSuiteProvider;
+  Arr2ATTestSuiteProvider = array of Arr1ATTestSuiteProvider;
+  Arr3ATTestSuiteProvider = array of Arr2ATTestSuiteProvider;
+
+  OWDEntityReference = interface;
+  Arr1OWDEntityReference = array of OWDEntityReference;
+  Arr2OWDEntityReference = array of Arr1OWDEntityReference;
+  Arr3OWDEntityReference = array of Arr2OWDEntityReference;
+
+  JUCRunnableFuture = interface;
+  Arr1JUCRunnableFuture = array of JUCRunnableFuture;
+  Arr2JUCRunnableFuture = array of Arr1JUCRunnableFuture;
+  Arr3JUCRunnableFuture = array of Arr2JUCRunnableFuture;
+
+  JSRowSet = interface;
+  Arr1JSRowSet = array of JSRowSet;
+  Arr2JSRowSet = array of Arr1JSRowSet;
+  Arr3JSRowSet = array of Arr2JSRowSet;
+
+  ADCrossProcessCursor = interface;
+  Arr1ADCrossProcessCursor = array of ADCrossProcessCursor;
+  Arr2ADCrossProcessCursor = array of Arr1ADCrossProcessCursor;
+  Arr3ADCrossProcessCursor = array of Arr2ADCrossProcessCursor;
+
+  ADSSQLiteTransactionListener = interface;
+  Arr1ADSSQLiteTransactionListener = array of ADSSQLiteTransactionListener;
+  Arr2ADSSQLiteTransactionListener = array of Arr1ADSSQLiteTransactionListener;
+  Arr3ADSSQLiteTransactionListener = array of Arr2ADSSQLiteTransactionListener;
+
+  ADDatabaseErrorHandler = interface;
+  Arr1ADDatabaseErrorHandler = array of ADDatabaseErrorHandler;
+  Arr2ADDatabaseErrorHandler = array of Arr1ADDatabaseErrorHandler;
+  Arr3ADDatabaseErrorHandler = array of Arr2ADDatabaseErrorHandler;
+
+  OWDCDATASection = interface;
+  Arr1OWDCDATASection = array of OWDCDATASection;
+  Arr2OWDCDATASection = array of Arr1OWDCDATASection;
+  Arr3OWDCDATASection = array of Arr2OWDCDATASection;
+
+  OAHPExecutionContext = interface;
+  Arr1OAHPExecutionContext = array of OAHPExecutionContext;
+  Arr2OAHPExecutionContext = array of Arr1OAHPExecutionContext;
+  Arr3OAHPExecutionContext = array of Arr2OAHPExecutionContext;
+
+  JSKey = interface;
+  Arr1JSKey = array of JSKey;
+  Arr2JSKey = array of Arr1JSKey;
+  Arr3JSKey = array of Arr2JSKey;
+
+  AOIInterface = interface;
+  Arr1AOIInterface = array of AOIInterface;
+  Arr2AOIInterface = array of Arr1AOIInterface;
+  Arr3AOIInterface = array of Arr2AOIInterface;
+
+  OAHCClientConnectionManager = interface;
+  Arr1OAHCClientConnectionManager = array of OAHCClientConnectionManager;
+  Arr2OAHCClientConnectionManager = array of Arr1OAHCClientConnectionManager;
+  Arr3OAHCClientConnectionManager = array of Arr2OAHCClientConnectionManager;
+
+  JSRowSetListener = interface;
+  Arr1JSRowSetListener = array of JSRowSetListener;
+  Arr2JSRowSetListener = array of Arr1JSRowSetListener;
+  Arr3JSRowSetListener = array of Arr2JSRowSetListener;
+
+  OAHHttpConnectionMetrics = interface;
+  Arr1OAHHttpConnectionMetrics = array of OAHHttpConnectionMetrics;
+  Arr2OAHHttpConnectionMetrics = array of Arr1OAHHttpConnectionMetrics;
+  Arr3OAHHttpConnectionMetrics = array of Arr2OAHHttpConnectionMetrics;
+
+  OAHCSLayeredSocketFactory = interface;
+  Arr1OAHCSLayeredSocketFactory = array of OAHCSLayeredSocketFactory;
+  Arr2OAHCSLayeredSocketFactory = array of Arr1OAHCSLayeredSocketFactory;
+  Arr3OAHCSLayeredSocketFactory = array of Arr2OAHCSLayeredSocketFactory;
+
+  JCIDHPublicKey = interface;
+  Arr1JCIDHPublicKey = array of JCIDHPublicKey;
+  Arr2JCIDHPublicKey = array of Arr1JCIDHPublicKey;
+  Arr3JCIDHPublicKey = array of Arr2JCIDHPublicKey;
+
+  JNCookieStore = interface;
+  Arr1JNCookieStore = array of JNCookieStore;
+  Arr2JNCookieStore = array of Arr1JNCookieStore;
+  Arr3JNCookieStore = array of Arr2JNCookieStore;
+
+  ACSharedPreferences = interface;
+  Arr1ACSharedPreferences = array of ACSharedPreferences;
+  Arr2ACSharedPreferences = array of Arr1ACSharedPreferences;
+  Arr3ACSharedPreferences = array of Arr2ACSharedPreferences;
+
+  OAHMHeaderValueFormatter = interface;
+  Arr1OAHMHeaderValueFormatter = array of OAHMHeaderValueFormatter;
+  Arr2OAHMHeaderValueFormatter = array of Arr1OAHMHeaderValueFormatter;
+  Arr3OAHMHeaderValueFormatter = array of Arr2OAHMHeaderValueFormatter;
+
+  JXTErrorListener = interface;
+  Arr1JXTErrorListener = array of JXTErrorListener;
+  Arr2JXTErrorListener = array of Arr1JXTErrorListener;
+  Arr3JXTErrorListener = array of Arr2JXTErrorListener;
+
+  OAHHttpClientConnection = interface;
+  Arr1OAHHttpClientConnection = array of OAHHttpClientConnection;
+  Arr2OAHHttpClientConnection = array of Arr1OAHHttpClientConnection;
+  Arr3OAHHttpClientConnection = array of Arr2OAHHttpClientConnection;
+
+  ADSSQLiteCursorDriver = interface;
+  Arr1ADSSQLiteCursorDriver = array of ADSSQLiteCursorDriver;
+  Arr2ADSSQLiteCursorDriver = array of Arr1ADSSQLiteCursorDriver;
+  Arr3ADSSQLiteCursorDriver = array of Arr2ADSSQLiteCursorDriver;
+
+  JSPrivilegedAction = interface;
+  Arr1JSPrivilegedAction = array of JSPrivilegedAction;
+  Arr2JSPrivilegedAction = array of Arr1JSPrivilegedAction;
+  Arr3JSPrivilegedAction = array of Arr2JSPrivilegedAction;
+
+  OAHCUserTokenHandler = interface;
+  Arr1OAHCUserTokenHandler = array of OAHCUserTokenHandler;
+  Arr2OAHCUserTokenHandler = array of Arr1OAHCUserTokenHandler;
+  Arr3OAHCUserTokenHandler = array of Arr2OAHCUserTokenHandler;
+
+  OXSXMLFilter = interface;
+  Arr1OXSXMLFilter = array of OXSXMLFilter;
+  Arr2OXSXMLFilter = array of Arr1OXSXMLFilter;
+  Arr3OXSXMLFilter = array of Arr2OXSXMLFilter;
+
+  JUObserver = interface;
+  Arr1JUObserver = array of JUObserver;
+  Arr2JUObserver = array of Arr1JUObserver;
+  Arr3JUObserver = array of Arr2JUObserver;
+
+  OAHPCoreProtocolPNames = interface;
+  Arr1OAHPCoreProtocolPNames = array of OAHPCoreProtocolPNames;
+  Arr2OAHPCoreProtocolPNames = array of Arr1OAHPCoreProtocolPNames;
+  Arr3OAHPCoreProtocolPNames = array of Arr2OAHPCoreProtocolPNames;
+
+  OAHCCookieStore = interface;
+  Arr1OAHCCookieStore = array of OAHCCookieStore;
+  Arr2OAHCCookieStore = array of Arr1OAHCCookieStore;
+  Arr3OAHCCookieStore = array of Arr2OAHCCookieStore;
+
+  ASElementListener = interface;
+  Arr1ASElementListener = array of ASElementListener;
+  Arr2ASElementListener = array of Arr1ASElementListener;
+  Arr3ASElementListener = array of Arr2ASElementListener;
+
+  OWDDOMStringList = interface;
+  Arr1OWDDOMStringList = array of OWDDOMStringList;
+  Arr2OWDDOMStringList = array of Arr1OWDDOMStringList;
+  Arr3OWDDOMStringList = array of Arr2OWDDOMStringList;
+
+  OWDText = interface;
+  Arr1OWDText = array of OWDText;
+  Arr2OWDText = array of Arr1OWDText;
+  Arr3OWDText = array of Arr2OWDText;
+
+  JUDeque = interface;
+  Arr1JUDeque = array of JUDeque;
+  Arr2JUDeque = array of Arr1JUDeque;
+  Arr3JUDeque = array of Arr2JUDeque;
+
+  JUCBlockingDeque = interface;
+  Arr1JUCBlockingDeque = array of JUCBlockingDeque;
+  Arr2JUCBlockingDeque = array of Arr1JUCBlockingDeque;
+  Arr3JUCBlockingDeque = array of Arr2JUCBlockingDeque;
+
+  JXXXPathVariableResolver = interface;
+  Arr1JXXXPathVariableResolver = array of JXXXPathVariableResolver;
+  Arr2JXXXPathVariableResolver = array of Arr1JXXXPathVariableResolver;
+  Arr3JXXXPathVariableResolver = array of Arr2JXXXPathVariableResolver;
+
+  OAHMLineParser = interface;
+  Arr1OAHMLineParser = array of OAHMLineParser;
+  Arr2OAHMLineParser = array of Arr1OAHMLineParser;
+  Arr3OAHMLineParser = array of Arr2OAHMLineParser;
+
+  JSStatementEventListener = interface;
+  Arr1JSStatementEventListener = array of JSStatementEventListener;
+  Arr2JSStatementEventListener = array of Arr1JSStatementEventListener;
+  Arr3JSStatementEventListener = array of Arr2JSStatementEventListener;
+
+  ATMMovementMethod = interface;
+  Arr1ATMMovementMethod = array of ATMMovementMethod;
+  Arr2ATMMovementMethod = array of Arr1ATMMovementMethod;
+  Arr3ATMMovementMethod = array of Arr2ATMMovementMethod;
+
+  AAOnAccountsUpdateListener = interface;
+  Arr1AAOnAccountsUpdateListener = array of AAOnAccountsUpdateListener;
+  Arr2AAOnAccountsUpdateListener = array of Arr1AAOnAccountsUpdateListener;
+  Arr3AAOnAccountsUpdateListener = array of Arr2AAOnAccountsUpdateListener;
+
+  ASRecognitionListener = interface;
+  Arr1ASRecognitionListener = array of ASRecognitionListener;
+  Arr2ASRecognitionListener = array of Arr1ASRecognitionListener;
+  Arr3ASRecognitionListener = array of Arr2ASRecognitionListener;
+
+  JSIDSAPrivateKey = interface;
+  Arr1JSIDSAPrivateKey = array of JSIDSAPrivateKey;
+  Arr2JSIDSAPrivateKey = array of Arr1JSIDSAPrivateKey;
+  Arr3JSIDSAPrivateKey = array of Arr2JSIDSAPrivateKey;
+
+  JSConnectionEventListener = interface;
+  Arr1JSConnectionEventListener = array of JSConnectionEventListener;
+  Arr2JSConnectionEventListener = array of Arr1JSConnectionEventListener;
+  Arr3JSConnectionEventListener = array of Arr2JSConnectionEventListener;
+
+  JSACCallbackHandler = interface;
+  Arr1JSACCallbackHandler = array of JSACCallbackHandler;
+  Arr2JSACCallbackHandler = array of Arr1JSACCallbackHandler;
+  Arr3JSACCallbackHandler = array of Arr2JSACCallbackHandler;
+
+  OXSEAttributes2 = interface;
+  Arr1OXSEAttributes2 = array of OXSEAttributes2;
+  Arr2OXSEAttributes2 = array of Arr1OXSEAttributes2;
+  Arr3OXSEAttributes2 = array of Arr2OXSEAttributes2;
+
+  JUNavigableSet = interface;
+  Arr1JUNavigableSet = array of JUNavigableSet;
+  Arr2JUNavigableSet = array of Arr1JUNavigableSet;
+  Arr3JUNavigableSet = array of Arr2JUNavigableSet;
+
+  OAHCPConnPerRoute = interface;
+  Arr1OAHCPConnPerRoute = array of OAHCPConnPerRoute;
+  Arr2OAHCPConnPerRoute = array of Arr1OAHCPConnPerRoute;
+  Arr3OAHCPConnPerRoute = array of Arr2OAHCPConnPerRoute;
+
+  AVMenuItem = interface;
+  Arr1AVMenuItem = array of AVMenuItem;
+  Arr2AVMenuItem = array of Arr1AVMenuItem;
+  Arr3AVMenuItem = array of Arr2AVMenuItem;
+
+  JMKEEGL11 = interface;
+  Arr1JMKEEGL11 = array of JMKEEGL11;
+  Arr2JMKEEGL11 = array of Arr1JMKEEGL11;
+  Arr3JMKEEGL11 = array of Arr2JMKEEGL11;
+
+  JMKEEGL10 = interface;
+  Arr1JMKEEGL10 = array of JMKEEGL10;
+  Arr2JMKEEGL10 = array of Arr1JMKEEGL10;
+  Arr3JMKEEGL10 = array of Arr2JMKEEGL10;
+
+  OXSEEntityResolver2 = interface;
+  Arr1OXSEEntityResolver2 = array of OXSEEntityResolver2;
+  Arr2OXSEEntityResolver2 = array of Arr1OXSEEntityResolver2;
+  Arr3OXSEEntityResolver2 = array of Arr2OXSEEntityResolver2;
+
+  JMKEEGL = interface;
+  Arr1JMKEEGL = array of JMKEEGL;
+  Arr2JMKEEGL = array of Arr1JMKEEGL;
+  Arr3JMKEEGL = array of Arr2JMKEEGL;
+
+  OAHCCookieAttributeHandler = interface;
+  Arr1OAHCCookieAttributeHandler = array of OAHCCookieAttributeHandler;
+  Arr2OAHCCookieAttributeHandler = array of Arr1OAHCCookieAttributeHandler;
+  Arr3OAHCCookieAttributeHandler = array of Arr2OAHCCookieAttributeHandler;
+
+  JSArray = interface;
+  Arr1JSArray = array of JSArray;
+  Arr2JSArray = array of Arr1JSArray;
+  Arr3JSArray = array of Arr2JSArray;
+
+  JCIDHPrivateKey = interface;
+  Arr1JCIDHPrivateKey = array of JCIDHPrivateKey;
+  Arr2JCIDHPrivateKey = array of Arr1JCIDHPrivateKey;
+  Arr3JCIDHPrivateKey = array of Arr2JCIDHPrivateKey;
+
+  JIFilenameFilter = interface;
+  Arr1JIFilenameFilter = array of JIFilenameFilter;
+  Arr2JIFilenameFilter = array of Arr1JIFilenameFilter;
+  Arr3JIFilenameFilter = array of Arr2JIFilenameFilter;
+
+  JXTURIResolver = interface;
+  Arr1JXTURIResolver = array of JXTURIResolver;
+  Arr2JXTURIResolver = array of Arr1JXTURIResolver;
+  Arr3JXTURIResolver = array of Arr2JXTURIResolver;
+
+  OXSParser = interface;
+  Arr1OXSParser = array of OXSParser;
+  Arr2OXSParser = array of Arr1OXSParser;
+  Arr3OXSParser = array of Arr2OXSParser;
+
+  AOIBinder = interface;
+  Arr1AOIBinder = array of AOIBinder;
+  Arr2AOIBinder = array of Arr1AOIBinder;
+  Arr3AOIBinder = array of Arr2AOIBinder;
+
+  ATSParagraphStyle = interface;
+  Arr1ATSParagraphStyle = array of ATSParagraphStyle;
+  Arr2ATSParagraphStyle = array of Arr1ATSParagraphStyle;
+  Arr3ATSParagraphStyle = array of Arr2ATSParagraphStyle;
+
+  JSCX509Extension = interface;
+  Arr1JSCX509Extension = array of JSCX509Extension;
+  Arr2JSCX509Extension = array of Arr1JSCX509Extension;
+  Arr3JSCX509Extension = array of Arr2JSCX509Extension;
+
+  OAHPHttpRequestInterceptorList = interface;
+  Arr1OAHPHttpRequestInterceptorList = array of OAHPHttpRequestInterceptorList;
+  Arr2OAHPHttpRequestInterceptorList = array of Arr1OAHPHttpRequestInterceptorList;
+  Arr3OAHPHttpRequestInterceptorList = array of Arr2OAHPHttpRequestInterceptorList;
+
+  JUListIterator = interface;
+  Arr1JUListIterator = array of JUListIterator;
+  Arr2JUListIterator = array of Arr1JUListIterator;
+  Arr3JUListIterator = array of Arr2JUListIterator;
+
+  JMKOGL11ExtensionPack = interface;
+  Arr1JMKOGL11ExtensionPack = array of JMKOGL11ExtensionPack;
+  Arr2JMKOGL11ExtensionPack = array of Arr1JMKOGL11ExtensionPack;
+  Arr3JMKOGL11ExtensionPack = array of Arr2JMKOGL11ExtensionPack;
+
+  AWExpandableListAdapter = interface;
+  Arr1AWExpandableListAdapter = array of AWExpandableListAdapter;
+  Arr2AWExpandableListAdapter = array of Arr1AWExpandableListAdapter;
+  Arr3AWExpandableListAdapter = array of Arr2AWExpandableListAdapter;
+
+  OWDDOMError = interface;
+  Arr1OWDDOMError = array of OWDDOMError;
+  Arr2OWDDOMError = array of Arr1OWDDOMError;
+  Arr3OWDDOMError = array of Arr2OWDDOMError;
+
+  ACEntityIterator = interface;
+  Arr1ACEntityIterator = array of ACEntityIterator;
+  Arr2ACEntityIterator = array of Arr1ACEntityIterator;
+  Arr3ACEntityIterator = array of Arr2ACEntityIterator;
+
+  OAHCCredentialsProvider = interface;
+  Arr1OAHCCredentialsProvider = array of OAHCCredentialsProvider;
+  Arr2OAHCCredentialsProvider = array of Arr1OAHCCredentialsProvider;
+  Arr3OAHCCredentialsProvider = array of Arr2OAHCCredentialsProvider;
+
+  OXSELexicalHandler = interface;
+  Arr1OXSELexicalHandler = array of OXSELexicalHandler;
+  Arr2OXSELexicalHandler = array of Arr1OXSELexicalHandler;
+  Arr3OXSELexicalHandler = array of Arr2OXSELexicalHandler;
+
+  JSCPolicyNode = interface;
+  Arr1JSCPolicyNode = array of JSCPolicyNode;
+  Arr2JSCPolicyNode = array of Arr1JSCPolicyNode;
+  Arr3JSCPolicyNode = array of Arr2JSCPolicyNode;
+
+  ASEndElementListener = interface;
+  Arr1ASEndElementListener = array of ASEndElementListener;
+  Arr2ASEndElementListener = array of Arr1ASEndElementListener;
+  Arr3ASEndElementListener = array of Arr2ASEndElementListener;
+
+  AATimeInterpolator = interface;
+  Arr1AATimeInterpolator = array of AATimeInterpolator;
+  Arr2AATimeInterpolator = array of Arr1AATimeInterpolator;
+  Arr3AATimeInterpolator = array of Arr2AATimeInterpolator;
+
+  OAHISessionInputBuffer = interface;
+  Arr1OAHISessionInputBuffer = array of OAHISessionInputBuffer;
+  Arr2OAHISessionInputBuffer = array of Arr1OAHISessionInputBuffer;
+  Arr3OAHISessionInputBuffer = array of Arr2OAHISessionInputBuffer;
+
+  OAHHttpInetConnection = interface;
+  Arr1OAHHttpInetConnection = array of OAHHttpInetConnection;
+  Arr2OAHHttpInetConnection = array of Arr1OAHHttpInetConnection;
+  Arr3OAHHttpInetConnection = array of Arr2OAHHttpInetConnection;
+
+  OWDDOMConfiguration = interface;
+  Arr1OWDDOMConfiguration = array of OWDDOMConfiguration;
+  Arr2OWDDOMConfiguration = array of Arr1OWDDOMConfiguration;
+  Arr3OWDDOMConfiguration = array of Arr2OWDDOMConfiguration;
+
+  JSIECPublicKey = interface;
+  Arr1JSIECPublicKey = array of JSIECPublicKey;
+  Arr2JSIECPublicKey = array of Arr1JSIECPublicKey;
+  Arr3JSIECPublicKey = array of Arr2JSIECPublicKey;
+
+  APOpenableColumns = interface;
+  Arr1APOpenableColumns = array of APOpenableColumns;
+  Arr2APOpenableColumns = array of Arr1APOpenableColumns;
+  Arr3APOpenableColumns = array of Arr2APOpenableColumns;
+
+  ATSpannable = interface;
+  Arr1ATSpannable = array of ATSpannable;
+  Arr2ATSpannable = array of Arr1ATSpannable;
+  Arr3ATSpannable = array of Arr2ATSpannable;
+
+  JNDatagramSocketImplFactory = interface;
+  Arr1JNDatagramSocketImplFactory = array of JNDatagramSocketImplFactory;
+  Arr2JNDatagramSocketImplFactory = array of Arr1JNDatagramSocketImplFactory;
+  Arr3JNDatagramSocketImplFactory = array of Arr2JNDatagramSocketImplFactory;
+
+  JSSQLXML = interface;
+  Arr1JSSQLXML = array of JSSQLXML;
+  Arr2JSSQLXML = array of Arr1JSSQLXML;
+  Arr3JSSQLXML = array of Arr2JSSQLXML;
+
+  JSResultSet = interface;
+  Arr1JSResultSet = array of JSResultSet;
+  Arr2JSResultSet = array of Arr1JSResultSet;
+  Arr3JSResultSet = array of Arr2JSResultSet;
+
+  ATSAMediumTest = interface;
+  Arr1ATSAMediumTest = array of ATSAMediumTest;
+  Arr2ATSAMediumTest = array of Arr1ATSAMediumTest;
+  Arr3ATSAMediumTest = array of Arr2ATSAMediumTest;
+
+  OAHPCoreConnectionPNames = interface;
+  Arr1OAHPCoreConnectionPNames = array of OAHPCoreConnectionPNames;
+  Arr2OAHPCoreConnectionPNames = array of Arr1OAHPCoreConnectionPNames;
+  Arr3OAHPCoreConnectionPNames = array of Arr2OAHPCoreConnectionPNames;
+
+  JSDomainCombiner = interface;
+  Arr1JSDomainCombiner = array of JSDomainCombiner;
+  Arr2JSDomainCombiner = array of Arr1JSDomainCombiner;
+  Arr3JSDomainCombiner = array of Arr2JSDomainCombiner;
+
+  OAHHttpResponseInterceptor = interface;
+  Arr1OAHHttpResponseInterceptor = array of OAHHttpResponseInterceptor;
+  Arr2OAHHttpResponseInterceptor = array of Arr1OAHHttpResponseInterceptor;
+  Arr3OAHHttpResponseInterceptor = array of Arr2OAHHttpResponseInterceptor;
+
+  OAHCResponseHandler = interface;
+  Arr1OAHCResponseHandler = array of OAHCResponseHandler;
+  Arr2OAHCResponseHandler = array of Arr1OAHCResponseHandler;
+  Arr3OAHCResponseHandler = array of Arr2OAHCResponseHandler;
+
+  JUCThreadFactory = interface;
+  Arr1JUCThreadFactory = array of JUCThreadFactory;
+  Arr2JUCThreadFactory = array of Arr1JUCThreadFactory;
+  Arr3JUCThreadFactory = array of Arr2JUCThreadFactory;
+
+  OAHCMHttpUriRequest = interface;
+  Arr1OAHCMHttpUriRequest = array of OAHCMHttpUriRequest;
+  Arr2OAHCMHttpUriRequest = array of Arr1OAHCMHttpUriRequest;
+  Arr3OAHCMHttpUriRequest = array of Arr2OAHCMHttpUriRequest;
+
+  JSCCertSelector = interface;
+  Arr1JSCCertSelector = array of JSCCertSelector;
+  Arr2JSCCertSelector = array of Arr1JSCCertSelector;
+  Arr3JSCCertSelector = array of Arr2JSCCertSelector;
+
+  AOParcelable = interface;
+  Arr1AOParcelable = array of AOParcelable;
+  Arr2AOParcelable = array of Arr1AOParcelable;
+  Arr3AOParcelable = array of Arr2AOParcelable;
+
+  JLStringBuffer = class external 'java.lang' name 'StringBuffer';
+  Arr1JLStringBuffer = array of JLStringBuffer;
+  Arr2JLStringBuffer = array of Arr1JLStringBuffer;
+  Arr3JLStringBuffer = array of Arr2JLStringBuffer;
+
+  JLObject = class external 'java.lang' name 'Object';
+  Arr1JLObject = array of JLObject;
+  Arr2JLObject = array of Arr1JLObject;
+  Arr3JLObject = array of Arr2JLObject;
+
+  JLStringBuilder = class external 'java.lang' name 'StringBuilder';
+  Arr1JLStringBuilder = array of JLStringBuilder;
+  Arr2JLStringBuilder = array of Arr1JLStringBuilder;
+  Arr3JLStringBuilder = array of Arr2JLStringBuilder;
+
+  JNByteBuffer = class external 'java.nio' name 'ByteBuffer';
+  Arr1JNByteBuffer = array of JNByteBuffer;
+  Arr2JNByteBuffer = array of Arr1JNByteBuffer;
+  Arr3JNByteBuffer = array of Arr2JNByteBuffer;
+
+  JLEnum = class external 'java.lang' name 'Enum';
+  Arr1JLEnum = array of JLEnum;
+  Arr2JLEnum = array of Arr1JLEnum;
+  Arr3JLEnum = array of Arr2JLEnum;
+
+  JLError = class external 'java.lang' name 'Error';
+  Arr1JLError = array of JLError;
+  Arr2JLError = array of Arr1JLError;
+  Arr3JLError = array of Arr2JLError;
+
+  JLNumber = class external 'java.lang' name 'Number';
+  Arr1JLNumber = array of JLNumber;
+  Arr2JLNumber = array of Arr1JLNumber;
+  Arr3JLNumber = array of Arr2JLNumber;
+
+  JLRMethod = class external 'java.lang.reflect' name 'Method';
+  Arr1JLRMethod = array of JLRMethod;
+  Arr2JLRMethod = array of Arr1JLRMethod;
+  Arr3JLRMethod = array of Arr2JLRMethod;
+
+  JIIOException = class external 'java.io' name 'IOException';
+  Arr1JIIOException = array of JIIOException;
+  Arr2JIIOException = array of Arr1JIIOException;
+  Arr3JIIOException = array of Arr2JIIOException;
+
+  JNBuffer = class external 'java.nio' name 'Buffer';
+  Arr1JNBuffer = array of JNBuffer;
+  Arr2JNBuffer = array of Arr1JNBuffer;
+  Arr3JNBuffer = array of Arr2JNBuffer;
+
+  JMBigInteger = class external 'java.math' name 'BigInteger';
+  Arr1JMBigInteger = array of JMBigInteger;
+  Arr2JMBigInteger = array of Arr1JMBigInteger;
+  Arr3JMBigInteger = array of Arr2JMBigInteger;
+
+  JLBoolean = class external 'java.lang' name 'Boolean';
+  Arr1JLBoolean = array of JLBoolean;
+  Arr2JLBoolean = array of Arr1JLBoolean;
+  Arr3JLBoolean = array of Arr2JLBoolean;
+
+  JNCCharsetDecoder = class external 'java.nio.charset' name 'CharsetDecoder';
+  Arr1JNCCharsetDecoder = array of JNCCharsetDecoder;
+  Arr2JNCCharsetDecoder = array of Arr1JNCCharsetDecoder;
+  Arr3JNCCharsetDecoder = array of Arr2JNCCharsetDecoder;
+
+  JLLong = class external 'java.lang' name 'Long';
+  Arr1JLLong = array of JLLong;
+  Arr2JLLong = array of Arr1JLLong;
+  Arr3JLLong = array of Arr2JLLong;
+
+  JNCCharset = class external 'java.nio.charset' name 'Charset';
+  Arr1JNCCharset = array of JNCCharset;
+  Arr2JNCCharset = array of Arr1JNCCharset;
+  Arr3JNCCharset = array of Arr2JNCCharset;
+
+  JLShort = class external 'java.lang' name 'Short';
+  Arr1JLShort = array of JLShort;
+  Arr2JLShort = array of Arr1JLShort;
+  Arr3JLShort = array of Arr2JLShort;
+
+  JNCharBuffer = class external 'java.nio' name 'CharBuffer';
+  Arr1JNCharBuffer = array of JNCharBuffer;
+  Arr2JNCharBuffer = array of Arr1JNCharBuffer;
+  Arr3JNCharBuffer = array of Arr2JNCharBuffer;
+
+  JLInteger = class external 'java.lang' name 'Integer';
+  Arr1JLInteger = array of JLInteger;
+  Arr2JLInteger = array of Arr1JLInteger;
+  Arr3JLInteger = array of Arr2JLInteger;
+
+  JLThrowable = class external 'java.lang' name 'Throwable';
+  Arr1JLThrowable = array of JLThrowable;
+  Arr2JLThrowable = array of Arr1JLThrowable;
+  Arr3JLThrowable = array of Arr2JLThrowable;
+
+  JLByte = class external 'java.lang' name 'Byte';
+  Arr1JLByte = array of JLByte;
+  Arr2JLByte = array of Arr1JLByte;
+  Arr3JLByte = array of Arr2JLByte;
+
+  JLLinkageError = class external 'java.lang' name 'LinkageError';
+  Arr1JLLinkageError = array of JLLinkageError;
+  Arr2JLLinkageError = array of Arr1JLLinkageError;
+  Arr3JLLinkageError = array of Arr2JLLinkageError;
+
+  JNCCharsetEncoder = class external 'java.nio.charset' name 'CharsetEncoder';
+  Arr1JNCCharsetEncoder = array of JNCCharsetEncoder;
+  Arr2JNCCharsetEncoder = array of Arr1JNCCharsetEncoder;
+  Arr3JNCCharsetEncoder = array of Arr2JNCCharsetEncoder;
+
+  JUAbstractCollection = class external 'java.util' name 'AbstractCollection';
+  Arr1JUAbstractCollection = array of JUAbstractCollection;
+  Arr2JUAbstractCollection = array of Arr1JUAbstractCollection;
+  Arr3JUAbstractCollection = array of Arr2JUAbstractCollection;
+
+  JLThreadLocal = class external 'java.lang' name 'ThreadLocal';
+  Arr1JLThreadLocal = array of JLThreadLocal;
+  Arr2JLThreadLocal = array of Arr1JLThreadLocal;
+  Arr3JLThreadLocal = array of Arr2JLThreadLocal;
+
+  JUAbstractMap = class external 'java.util' name 'AbstractMap';
+  Arr1JUAbstractMap = array of JUAbstractMap;
+  Arr2JUAbstractMap = array of Arr1JUAbstractMap;
+  Arr3JUAbstractMap = array of Arr2JUAbstractMap;
+
+  JLUnsupportedOperationException = class external 'java.lang' name 'UnsupportedOperationException';
+  Arr1JLUnsupportedOperationException = array of JLUnsupportedOperationException;
+  Arr2JLUnsupportedOperationException = array of Arr1JLUnsupportedOperationException;
+  Arr3JLUnsupportedOperationException = array of Arr2JLUnsupportedOperationException;
+
+  JLException = class external 'java.lang' name 'Exception';
+  Arr1JLException = array of JLException;
+  Arr2JLException = array of Arr1JLException;
+  Arr3JLException = array of Arr2JLException;
+
+  JLIndexOutOfBoundsException = class external 'java.lang' name 'IndexOutOfBoundsException';
+  Arr1JLIndexOutOfBoundsException = array of JLIndexOutOfBoundsException;
+  Arr2JLIndexOutOfBoundsException = array of Arr1JLIndexOutOfBoundsException;
+  Arr3JLIndexOutOfBoundsException = array of Arr2JLIndexOutOfBoundsException;
+
+  JUHashMap = class external 'java.util' name 'HashMap';
+  Arr1JUHashMap = array of JUHashMap;
+  Arr2JUHashMap = array of Arr1JUHashMap;
+  Arr3JUHashMap = array of Arr2JUHashMap;
+
+  JLDouble = class external 'java.lang' name 'Double';
+  Arr1JLDouble = array of JLDouble;
+  Arr2JLDouble = array of Arr1JLDouble;
+  Arr3JLDouble = array of Arr2JLDouble;
+
+  JUCalendar = class external 'java.util' name 'Calendar';
+  Arr1JUCalendar = array of JUCalendar;
+  Arr2JUCalendar = array of Arr1JUCalendar;
+  Arr3JUCalendar = array of Arr2JUCalendar;
+
+  JTCollator = class external 'java.text' name 'Collator';
+  Arr1JTCollator = array of JTCollator;
+  Arr2JTCollator = array of Arr1JTCollator;
+  Arr3JTCollator = array of Arr2JTCollator;
+
+  JUBitSet = class external 'java.util' name 'BitSet';
+  Arr1JUBitSet = array of JUBitSet;
+  Arr2JUBitSet = array of Arr1JUBitSet;
+  Arr3JUBitSet = array of Arr2JUBitSet;
+
+  JLClass = class external 'java.lang' name 'Class';
+  Arr1JLClass = array of JLClass;
+  Arr2JLClass = array of Arr1JLClass;
+  Arr3JLClass = array of Arr2JLClass;
+
+  JLIllegalArgumentException = class external 'java.lang' name 'IllegalArgumentException';
+  Arr1JLIllegalArgumentException = array of JLIllegalArgumentException;
+  Arr2JLIllegalArgumentException = array of Arr1JLIllegalArgumentException;
+  Arr3JLIllegalArgumentException = array of Arr2JLIllegalArgumentException;
+
+  JUAbstractSet = class external 'java.util' name 'AbstractSet';
+  Arr1JUAbstractSet = array of JUAbstractSet;
+  Arr2JUAbstractSet = array of Arr1JUAbstractSet;
+  Arr3JUAbstractSet = array of Arr2JUAbstractSet;
+
+  JLString = class external 'java.lang' name 'String';
+  Arr1JLString = array of JLString;
+  Arr2JLString = array of Arr1JLString;
+  Arr3JLString = array of Arr2JLString;
+
+  JLFloat = class external 'java.lang' name 'Float';
+  Arr1JLFloat = array of JLFloat;
+  Arr2JLFloat = array of Arr1JLFloat;
+  Arr3JLFloat = array of Arr2JLFloat;
+
+  JLRuntimeException = class external 'java.lang' name 'RuntimeException';
+  Arr1JLRuntimeException = array of JLRuntimeException;
+  Arr2JLRuntimeException = array of Arr1JLRuntimeException;
+  Arr3JLRuntimeException = array of Arr2JLRuntimeException;
+
+  JLIllegalStateException = class external 'java.lang' name 'IllegalStateException';
+  Arr1JLIllegalStateException = array of JLIllegalStateException;
+  Arr2JLIllegalStateException = array of Arr1JLIllegalStateException;
+  Arr3JLIllegalStateException = array of Arr2JLIllegalStateException;
+
+  JLRAccessibleObject = class external 'java.lang.reflect' name 'AccessibleObject';
+  Arr1JLRAccessibleObject = array of JLRAccessibleObject;
+  Arr2JLRAccessibleObject = array of Arr1JLRAccessibleObject;
+  Arr3JLRAccessibleObject = array of Arr2JLRAccessibleObject;
+
+  JLIterable = interface external 'java.lang' name 'Iterable';
+  Arr1JLIterable = array of JLIterable;
+  Arr2JLIterable = array of Arr1JLIterable;
+  Arr3JLIterable = array of Arr2JLIterable;
+
+  JLCloneable = interface external 'java.lang' name 'Cloneable';
+  Arr1JLCloneable = array of JLCloneable;
+  Arr2JLCloneable = array of Arr1JLCloneable;
+  Arr3JLCloneable = array of Arr2JLCloneable;
+
+  JUIterator = interface external 'java.util' name 'Iterator';
+  Arr1JUIterator = array of JUIterator;
+  Arr2JUIterator = array of Arr1JUIterator;
+  Arr3JUIterator = array of Arr2JUIterator;
+
+  JUCollection = interface external 'java.util' name 'Collection';
+  Arr1JUCollection = array of JUCollection;
+  Arr2JUCollection = array of Arr1JUCollection;
+  Arr3JUCollection = array of Arr2JUCollection;
+
+  JLAppendable = interface external 'java.lang' name 'Appendable';
+  Arr1JLAppendable = array of JLAppendable;
+  Arr2JLAppendable = array of Arr1JLAppendable;
+  Arr3JLAppendable = array of Arr2JLAppendable;
+
+  JUMap = interface external 'java.util' name 'Map';
+  Arr1JUMap = array of JUMap;
+  Arr2JUMap = array of Arr1JUMap;
+  Arr3JUMap = array of Arr2JUMap;
+
+  JUSet = interface external 'java.util' name 'Set';
+  Arr1JUSet = array of JUSet;
+  Arr2JUSet = array of Arr1JUSet;
+  Arr3JUSet = array of Arr2JUSet;
+
+  JLRType = interface external 'java.lang.reflect' name 'Type';
+  Arr1JLRType = array of JLRType;
+  Arr2JLRType = array of Arr1JLRType;
+  Arr3JLRType = array of Arr2JLRType;
+
+  CAIUPredicate = interface external 'com.android.internal.util' name 'Predicate';
+  Arr1CAIUPredicate = array of CAIUPredicate;
+  Arr2CAIUPredicate = array of Arr1CAIUPredicate;
+  Arr3CAIUPredicate = array of Arr2CAIUPredicate;
+
+  JLComparable = interface external 'java.lang' name 'Comparable';
+  Arr1JLComparable = array of JLComparable;
+  Arr2JLComparable = array of Arr1JLComparable;
+  Arr3JLComparable = array of Arr2JLComparable;
+
+  JLRMember = interface external 'java.lang.reflect' name 'Member';
+  Arr1JLRMember = array of JLRMember;
+  Arr2JLRMember = array of Arr1JLRMember;
+  Arr3JLRMember = array of Arr2JLRMember;
+
+  JLCharSequence = interface external 'java.lang' name 'CharSequence';
+  Arr1JLCharSequence = array of JLCharSequence;
+  Arr2JLCharSequence = array of Arr1JLCharSequence;
+  Arr3JLCharSequence = array of Arr2JLCharSequence;
+
+  JLRGenericDeclaration = interface external 'java.lang.reflect' name 'GenericDeclaration';
+  Arr1JLRGenericDeclaration = array of JLRGenericDeclaration;
+  Arr2JLRGenericDeclaration = array of Arr1JLRGenericDeclaration;
+  Arr3JLRGenericDeclaration = array of Arr2JLRGenericDeclaration;
+
+  JLRAnnotatedElement = interface external 'java.lang.reflect' name 'AnnotatedElement';
+  Arr1JLRAnnotatedElement = array of JLRAnnotatedElement;
+  Arr2JLRAnnotatedElement = array of Arr1JLRAnnotatedElement;
+  Arr3JLRAnnotatedElement = array of Arr2JLRAnnotatedElement;
+
+  JUComparator = interface external 'java.util' name 'Comparator';
+  Arr1JUComparator = array of JUComparator;
+  Arr2JUComparator = array of Arr1JUComparator;
+  Arr3JUComparator = array of Arr2JUComparator;
+
+  JISerializable = interface external 'java.io' name 'Serializable';
+  Arr1JISerializable = array of JISerializable;
+  Arr2JISerializable = array of Arr1JISerializable;
+  Arr3JISerializable = array of Arr2JISerializable;
+
+  JLReadable = interface external 'java.lang' name 'Readable';
+  Arr1JLReadable = array of JLReadable;
+  Arr2JLReadable = array of Arr1JLReadable;
+  Arr3JLReadable = array of Arr2JLReadable;
+
+  AVViewGroup_LayoutParams = class;
+  Arr1AVViewGroup_LayoutParams = array of AVViewGroup_LayoutParams;
+  Arr2AVViewGroup_LayoutParams = array of Arr1AVViewGroup_LayoutParams;
+  Arr3AVViewGroup_LayoutParams = array of Arr2AVViewGroup_LayoutParams;
+
+{$include androidr14.inc}
+
+implementation
+
+end.

+ 2345 - 0
rtl/android/jvm/java_sys_android.inc

@@ -0,0 +1,2345 @@
+  JLObject = class external 'java.lang' name 'Object' 
+  public
+    constructor create(); overload;
+  strict protected
+    function clone(): JLObject; overload; virtual;  // throws java.lang.CloneNotSupportedException
+  public
+    function equals(para1: JLObject): jboolean; overload; virtual;
+  strict protected
+    procedure finalize(); overload; virtual;  // throws java.lang.Throwable
+  public
+    function getClass(): JLClass; overload; virtual; final;
+    function hashCode(): jint; overload; virtual;
+    procedure notify(); overload; virtual; final;
+    procedure notifyAll(); overload; virtual; final;
+    function toString(): JLString; overload; virtual;
+    procedure wait(); overload; virtual; final;  // throws java.lang.InterruptedException
+    procedure wait(para1: jlong); overload; virtual; final;  // throws java.lang.InterruptedException
+    procedure wait(para1: jlong; para2: jint); overload; virtual; final;  // throws java.lang.InterruptedException
+  end;
+
+  JISerializable = interface external 'java.io' name 'Serializable' 
+  end;
+
+  JLAbstractStringBuilder = class abstract external 'java.lang' name 'AbstractStringBuilder' (JLObject)
+  public
+    function capacity(): jint; overload; virtual;
+    function charAt(para1: jint): jchar; overload; virtual;
+    procedure ensureCapacity(para1: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; para3: Arr1jchar; para4: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; var para3: array of jchar; para4: jint); overload; virtual;
+    function length(): jint; overload; virtual;
+    procedure setCharAt(para1: jint; para2: jchar); overload; virtual;
+    procedure setLength(para1: jint); overload; virtual;
+    function substring(para1: jint): JLString; overload; virtual;
+    function substring(para1: jint; para2: jint): JLString; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload; virtual;
+    function indexOf(para1: JLString): jint; overload; virtual;
+    function indexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function lastIndexOf(para1: JLString): jint; overload; virtual;
+    function lastIndexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    procedure trimToSize(); overload; virtual;
+    function codePointAt(para1: jint): jint; overload; virtual;
+    function codePointBefore(para1: jint): jint; overload; virtual;
+    function codePointCount(para1: jint; para2: jint): jint; overload; virtual;
+    function offsetByCodePoints(para1: jint; para2: jint): jint; overload; virtual;
+  end;
+
+  JLAppendable = interface external 'java.lang' name 'Appendable' 
+    function append(para1: jchar): JLAppendable; overload;  // throws java.io.IOException
+    function append(para1: JLCharSequence): JLAppendable; overload;  // throws java.io.IOException
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLAppendable; overload;  // throws java.io.IOException
+  end;
+
+  JLCharSequence = interface external 'java.lang' name 'CharSequence' 
+    function length(): jint; overload;
+    function charAt(para1: jint): jchar; overload;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload;
+    function toString(): JLString; overload;
+  end;
+
+  JLCloneable = interface external 'java.lang' name 'Cloneable' 
+  end;
+
+  JLComparable = interface external 'java.lang' name 'Comparable' 
+    function compareTo(para1: JLObject): jint; overload;
+  end;
+
+  JLIterable = interface external 'java.lang' name 'Iterable' 
+    function iterator(): JUIterator; overload;
+  end;
+
+  JLMath = class sealed external 'java.lang' name 'Math' (JLObject)
+  public
+    const
+      E = jdouble(2.718281828459045);
+      PI = jdouble(3.141592653589793);
+  public
+    class function abs(para1: jdouble): jdouble; static; overload;
+    class function abs(para1: jfloat): jfloat; static; overload;
+    class function abs(para1: jint): jint; static; overload;
+    class function abs(para1: jlong): jlong; static; overload;
+    class function acos(para1: jdouble): jdouble; static; overload;
+    class function asin(para1: jdouble): jdouble; static; overload;
+    class function atan(para1: jdouble): jdouble; static; overload;
+    class function atan2(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function cbrt(para1: jdouble): jdouble; static; overload;
+    class function ceil(para1: jdouble): jdouble; static; overload;
+    class function cos(para1: jdouble): jdouble; static; overload;
+    class function cosh(para1: jdouble): jdouble; static; overload;
+    class function exp(para1: jdouble): jdouble; static; overload;
+    class function expm1(para1: jdouble): jdouble; static; overload;
+    class function floor(para1: jdouble): jdouble; static; overload;
+    class function hypot(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function IEEEremainder(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function log(para1: jdouble): jdouble; static; overload;
+    class function log10(para1: jdouble): jdouble; static; overload;
+    class function log1p(para1: jdouble): jdouble; static; overload;
+    class function max(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function max(para1: jfloat; para2: jfloat): jfloat; static; overload;
+    class function max(para1: jint; para2: jint): jint; static; overload;
+    class function max(para1: jlong; para2: jlong): jlong; static; overload;
+    class function min(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function min(para1: jfloat; para2: jfloat): jfloat; static; overload;
+    class function min(para1: jint; para2: jint): jint; static; overload;
+    class function min(para1: jlong; para2: jlong): jlong; static; overload;
+    class function pow(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function rint(para1: jdouble): jdouble; static; overload;
+    class function round(para1: jdouble): jlong; static; overload;
+    class function round(para1: jfloat): jint; static; overload;
+    class function signum(para1: jdouble): jdouble; static; overload;
+    class function signum(para1: jfloat): jfloat; static; overload;
+    class function sin(para1: jdouble): jdouble; static; overload;
+    class function sinh(para1: jdouble): jdouble; static; overload;
+    class function sqrt(para1: jdouble): jdouble; static; overload;
+    class function tan(para1: jdouble): jdouble; static; overload;
+    class function tanh(para1: jdouble): jdouble; static; overload;
+    class function random(): jdouble; static; overload;
+    class function toRadians(para1: jdouble): jdouble; static; overload;
+    class function toDegrees(para1: jdouble): jdouble; static; overload;
+    class function ulp(para1: jdouble): jdouble; static; overload;
+    class function ulp(para1: jfloat): jfloat; static; overload;
+    class function copySign(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function copySign(para1: jfloat; para2: jfloat): jfloat; static; overload;
+    class function getExponent(para1: jfloat): jint; static; overload;
+    class function getExponent(para1: jdouble): jint; static; overload;
+    class function nextAfter(para1: jdouble; para2: jdouble): jdouble; static; overload;
+    class function nextAfter(para1: jfloat; para2: jdouble): jfloat; static; overload;
+    class function nextUp(para1: jdouble): jdouble; static; overload;
+    class function nextUp(para1: jfloat): jfloat; static; overload;
+    class function scalb(para1: jdouble; para2: jint): jdouble; static; overload;
+    class function scalb(para1: jfloat; para2: jint): jfloat; static; overload;
+  end;
+
+  JLReadable = interface external 'java.lang' name 'Readable' 
+    function read(para1: JNCharBuffer): jint; overload;  // throws java.io.IOException
+  end;
+
+  JLRuntime = class external 'java.lang' name 'Runtime' (JLObject)
+  public
+    function exec(para1: Arr1JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(var para1: array of JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: Arr1JLString; para2: Arr1JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(var para1: array of JLString; var para2: array of JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: Arr1JLString; para2: Arr1JLString; para3: JIFile): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(var para1: array of JLString; var para2: array of JLString; para3: JIFile): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: JLString; para2: Arr1JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: JLString; var para2: array of JLString): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: JLString; para2: Arr1JLString; para3: JIFile): JLProcess; overload; virtual;  // throws java.io.IOException
+    function exec(para1: JLString; var para2: array of JLString; para3: JIFile): JLProcess; overload; virtual;  // throws java.io.IOException
+    procedure exit(para1: jint); overload; virtual;
+    function freeMemory(): jlong; overload; virtual;
+    procedure gc(); overload; virtual;
+    class function getRuntime(): JLRuntime; static; overload;
+    procedure load(para1: JLString); overload; virtual;
+    procedure loadLibrary(para1: JLString); overload; virtual;
+    procedure runFinalization(); overload; virtual;
+    class procedure runFinalizersOnExit(para1: jboolean); static; overload;
+    function totalMemory(): jlong; overload; virtual;
+    procedure traceInstructions(para1: jboolean); overload; virtual;
+    procedure traceMethodCalls(para1: jboolean); overload; virtual;
+    function getLocalizedInputStream(para1: JIInputStream): JIInputStream; overload; virtual;
+    function getLocalizedOutputStream(para1: JIOutputStream): JIOutputStream; overload; virtual;
+    procedure addShutdownHook(para1: JLThread); overload; virtual;
+    function removeShutdownHook(para1: JLThread): jboolean; overload; virtual;
+    procedure halt(para1: jint); overload; virtual;
+    function availableProcessors(): jint; overload; virtual;
+    function maxMemory(): jlong; overload; virtual;
+  end;
+
+  JLSystem = class sealed external 'java.lang' name 'System' (JLObject)
+  public
+    final class var
+      fin: JIInputStream; external name 'in';
+      fout: JIPrintStream; external name 'out';
+      ferr: JIPrintStream; external name 'err';
+  public
+    class procedure setIn(para1: JIInputStream); static; overload;
+    class procedure setOut(para1: JIPrintStream); static; overload;
+    class procedure setErr(para1: JIPrintStream); static; overload;
+    class procedure arraycopy(para1: JLObject; para2: jint; para3: JLObject; para4: jint; para5: jint); static; overload;
+    class function currentTimeMillis(): jlong; static; overload;
+    class function nanoTime(): jlong; static; overload;
+    class procedure exit(para1: jint); static; overload;
+    class procedure gc(); static; overload;
+    class function getenv(para1: JLString): JLString; static; overload;
+    class function getenv(): JUMap; static; overload;
+    class function inheritedChannel(): JNCChannel; static; overload;  // throws java.io.IOException
+    class function getProperties(): JUProperties; static; overload;
+    class function getProperty(para1: JLString): JLString; static; overload;
+    class function getProperty(para1: JLString; para2: JLString): JLString; static; overload;
+    class function setProperty(para1: JLString; para2: JLString): JLString; static; overload;
+    class function clearProperty(para1: JLString): JLString; static; overload;
+    class function console(): JIConsole; static; overload;
+    class function getSecurityManager(): JLSecurityManager; static; overload;
+    class function identityHashCode(para1: JLObject): jint; static; overload;
+    class procedure load(para1: JLString); static; overload;
+    class procedure loadLibrary(para1: JLString); static; overload;
+    class procedure runFinalization(); static; overload;
+    class procedure runFinalizersOnExit(para1: jboolean); static; overload;
+    class procedure setProperties(para1: JUProperties); static; overload;
+    class procedure setSecurityManager(para1: JLSecurityManager); static; overload;
+    class function mapLibraryName(para1: JLString): JLString; static; overload;
+  end;
+
+  JLThreadLocal = class external 'java.lang' name 'ThreadLocal' (JLObject)
+  public
+    constructor create(); overload;
+    function get(): JLObject; overload; virtual;
+  strict protected
+    function initialValue(): JLObject; overload; virtual;
+  public
+    procedure &set(para1: JLObject); overload; virtual;
+    procedure remove(); overload; virtual;
+  end;
+
+  JLRAnnotatedElement = interface external 'java.lang.reflect' name 'AnnotatedElement' 
+    function getAnnotation(para1: JLClass): JLAAnnotation; overload;
+    function getAnnotations(): Arr1JLAAnnotation; overload;
+    function getDeclaredAnnotations(): Arr1JLAAnnotation; overload;
+    function isAnnotationPresent(para1: JLClass): jboolean; overload;
+  end;
+
+  JLRArray = class sealed external 'java.lang.reflect' name 'Array' (JLObject)
+  public
+    class function get(para1: JLObject; para2: jint): JLObject; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getBoolean(para1: JLObject; para2: jint): jboolean; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getByte(para1: JLObject; para2: jint): jbyte; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getChar(para1: JLObject; para2: jint): jchar; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getDouble(para1: JLObject; para2: jint): jdouble; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getFloat(para1: JLObject; para2: jint): jfloat; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getInt(para1: JLObject; para2: jint): jint; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getLength(para1: JLObject): jint; static; overload;
+    class function getLong(para1: JLObject; para2: jint): jlong; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function getShort(para1: JLObject; para2: jint): jshort; static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class function newInstance(para1: JLClass; para2: Arr1jint): JLObject; static; overload;  // throws java.lang.NegativeArraySizeException, java.lang.IllegalArgumentException
+    class function newInstance(para1: JLClass; const para2: array of jint): JLObject; static; overload;  // throws java.lang.NegativeArraySizeException, java.lang.IllegalArgumentException
+    class function newInstance(para1: JLClass; para2: jint): JLObject; static; overload;  // throws java.lang.NegativeArraySizeException
+    class procedure &set(para1: JLObject; para2: jint; para3: JLObject); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setBoolean(para1: JLObject; para2: jint; para3: jboolean); static; overload;
+    class procedure setByte(para1: JLObject; para2: jint; para3: jbyte); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setChar(para1: JLObject; para2: jint; para3: jchar); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setDouble(para1: JLObject; para2: jint; para3: jdouble); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setFloat(para1: JLObject; para2: jint; para3: jfloat); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setInt(para1: JLObject; para2: jint; para3: jint); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setLong(para1: JLObject; para2: jint; para3: jlong); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+    class procedure setShort(para1: JLObject; para2: jint; para3: jshort); static; overload;  // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException
+  end;
+
+  JLRGenericDeclaration = interface external 'java.lang.reflect' name 'GenericDeclaration' 
+    function getTypeParameters(): Arr1JLRTypeVariable; overload;
+  end;
+
+  JLRMember = interface external 'java.lang.reflect' name 'Member' 
+    const
+      &PUBLIC = 0;
+      DECLARED = 1;
+    function getDeclaringClass(): JLClass; overload;
+    function getModifiers(): jint; overload;
+    function getName(): JLString; overload;
+    function isSynthetic(): jboolean; overload;
+  end;
+
+  JLRType = interface external 'java.lang.reflect' name 'Type' 
+  end;
+
+  JNBuffer = class abstract external 'java.nio' name 'Buffer' (JLObject)
+  public
+    function &array(): JLObject; overload; virtual; abstract;
+    function arrayOffset(): jint; overload; virtual; abstract;
+    function capacity(): jint; overload; virtual; final;
+    function clear(): JNBuffer; overload; virtual; final;
+    function flip(): JNBuffer; overload; virtual; final;
+    function hasArray(): jboolean; overload; virtual; abstract;
+    function hasRemaining(): jboolean; overload; virtual; final;
+    function isDirect(): jboolean; overload; virtual; abstract;
+    function isReadOnly(): jboolean; overload; virtual; abstract;
+    function limit(): jint; overload; virtual; final;
+    function limit(para1: jint): JNBuffer; overload; virtual; final;
+    function mark(): JNBuffer; overload; virtual; final;
+    function position(): jint; overload; virtual; final;
+    function position(para1: jint): JNBuffer; overload; virtual; final;
+    function remaining(): jint; overload; virtual; final;
+    function reset(): JNBuffer; overload; virtual; final;
+    function rewind(): JNBuffer; overload; virtual; final;
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JNCCharsetDecoder = class abstract external 'java.nio.charset' name 'CharsetDecoder' (JLObject)
+  strict protected
+    constructor create(para1: JNCCharset; para2: jfloat; para3: jfloat); overload;
+  public
+    function averageCharsPerByte(): jfloat; overload; virtual; final;
+    function charset(): JNCCharset; overload; virtual; final;
+    function decode(para1: JNByteBuffer): JNCharBuffer; overload; virtual; final;  // throws java.nio.charset.CharacterCodingException
+    function decode(para1: JNByteBuffer; para2: JNCharBuffer; para3: jboolean): JNCCoderResult; overload; virtual; final;
+  strict protected
+    function decodeLoop(para1: JNByteBuffer; para2: JNCharBuffer): JNCCoderResult; overload; virtual; abstract;
+  public
+    function detectedCharset(): JNCCharset; overload; virtual;
+    function flush(para1: JNCharBuffer): JNCCoderResult; overload; virtual; final;
+  strict protected
+    function implFlush(para1: JNCharBuffer): JNCCoderResult; overload; virtual;
+    procedure implOnMalformedInput(para1: JNCCodingErrorAction); overload; virtual;
+    procedure implOnUnmappableCharacter(para1: JNCCodingErrorAction); overload; virtual;
+    procedure implReplaceWith(para1: JLString); overload; virtual;
+    procedure implReset(); overload; virtual;
+  public
+    function isAutoDetecting(): jboolean; overload; virtual;
+    function isCharsetDetected(): jboolean; overload; virtual;
+    function malformedInputAction(): JNCCodingErrorAction; overload; virtual;
+    function maxCharsPerByte(): jfloat; overload; virtual; final;
+    function onMalformedInput(para1: JNCCodingErrorAction): JNCCharsetDecoder; overload; virtual; final;
+    function onUnmappableCharacter(para1: JNCCodingErrorAction): JNCCharsetDecoder; overload; virtual; final;
+    function replacement(): JLString; overload; virtual; final;
+    function replaceWith(para1: JLString): JNCCharsetDecoder; overload; virtual; final;
+    function reset(): JNCCharsetDecoder; overload; virtual; final;
+    function unmappableCharacterAction(): JNCCodingErrorAction; overload; virtual;
+  end;
+
+  JNCCharsetEncoder = class abstract external 'java.nio.charset' name 'CharsetEncoder' (JLObject)
+  strict protected
+    constructor create(para1: JNCCharset; para2: jfloat; para3: jfloat); overload;
+    constructor create(para1: JNCCharset; para2: jfloat; para3: jfloat; para4: Arr1jbyte); overload;
+    constructor create(para1: JNCCharset; para2: jfloat; para3: jfloat; const para4: array of jbyte); overload;
+  public
+    function averageBytesPerChar(): jfloat; overload; virtual; final;
+    function canEncode(para1: jchar): jboolean; overload; virtual;
+    function canEncode(para1: JLCharSequence): jboolean; overload; virtual;
+    function charset(): JNCCharset; overload; virtual; final;
+    function encode(para1: JNCharBuffer): JNByteBuffer; overload; virtual; final;  // throws java.nio.charset.CharacterCodingException
+    function encode(para1: JNCharBuffer; para2: JNByteBuffer; para3: jboolean): JNCCoderResult; overload; virtual; final;
+  strict protected
+    function encodeLoop(para1: JNCharBuffer; para2: JNByteBuffer): JNCCoderResult; overload; virtual; abstract;
+  public
+    function flush(para1: JNByteBuffer): JNCCoderResult; overload; virtual; final;
+  strict protected
+    function implFlush(para1: JNByteBuffer): JNCCoderResult; overload; virtual;
+    procedure implOnMalformedInput(para1: JNCCodingErrorAction); overload; virtual;
+    procedure implOnUnmappableCharacter(para1: JNCCodingErrorAction); overload; virtual;
+    procedure implReplaceWith(para1: Arr1jbyte); overload; virtual;
+    procedure implReplaceWith(var para1: array of jbyte); overload; virtual;
+    procedure implReset(); overload; virtual;
+  public
+    function isLegalReplacement(para1: Arr1jbyte): jboolean; overload; virtual;
+    function isLegalReplacement(var para1: array of jbyte): jboolean; overload; virtual;
+    function malformedInputAction(): JNCCodingErrorAction; overload; virtual;
+    function maxBytesPerChar(): jfloat; overload; virtual; final;
+    function onMalformedInput(para1: JNCCodingErrorAction): JNCCharsetEncoder; overload; virtual; final;
+    function onUnmappableCharacter(para1: JNCCodingErrorAction): JNCCharsetEncoder; overload; virtual; final;
+    function replacement(): Arr1jbyte; overload; virtual; final;
+    function replaceWith(para1: Arr1jbyte): JNCCharsetEncoder; overload; virtual; final;
+    function replaceWith(var para1: array of jbyte): JNCCharsetEncoder; overload; virtual; final;
+    function reset(): JNCCharsetEncoder; overload; virtual; final;
+    function unmappableCharacterAction(): JNCCodingErrorAction; overload; virtual;
+  end;
+
+  JNCCoderResult = class external 'java.nio.charset' name 'CoderResult' (JLObject)
+  public
+    final class var
+      fUNDERFLOW: JNCCoderResult; external name 'UNDERFLOW';
+      fOVERFLOW: JNCCoderResult; external name 'OVERFLOW';
+  public
+    class function malformedForLength(para1: jint): JNCCoderResult; static; overload;  // throws java.lang.IllegalArgumentException
+    class function unmappableForLength(para1: jint): JNCCoderResult; static; overload;  // throws java.lang.IllegalArgumentException
+    function isUnderflow(): jboolean; overload; virtual;
+    function isError(): jboolean; overload; virtual;
+    function isMalformed(): jboolean; overload; virtual;
+    function isOverflow(): jboolean; overload; virtual;
+    function isUnmappable(): jboolean; overload; virtual;
+    function length(): jint; overload; virtual;  // throws java.lang.UnsupportedOperationException
+    procedure throwException(); overload; virtual;  // throws java.nio.BufferUnderflowException, java.nio.BufferOverflowException, java.nio.charset.UnmappableCharacterException, java.nio.charset.MalformedInputException, java.nio.charset.CharacterCodingException
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JNCCodingErrorAction = class external 'java.nio.charset' name 'CodingErrorAction' (JLObject)
+  public
+    final class var
+      fIGNORE: JNCCodingErrorAction; external name 'IGNORE';
+      fREPLACE: JNCCodingErrorAction; external name 'REPLACE';
+      fREPORT: JNCCodingErrorAction; external name 'REPORT';
+  public
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JNCSCharsetProvider = class abstract external 'java.nio.charset.spi' name 'CharsetProvider' (JLObject)
+  strict protected
+    constructor create(); overload;
+  public
+    function charsets(): JUIterator; overload; virtual; abstract;
+    function charsetForName(para1: JLString): JNCCharset; overload; virtual; abstract;
+  end;
+
+  JUArrays = class external 'java.util' name 'Arrays' (JLObject)
+  public
+    class function asList(para1: Arr1JLObject): JUList; static; overload;
+    class function asList(const para1: array of JLObject): JUList; static; overload;
+    class function binarySearch(para1: Arr1jbyte; para2: jbyte): jint; static; overload;
+    class function binarySearch(var para1: array of jbyte; para2: jbyte): jint; static; overload;
+    class function binarySearch(para1: Arr1jbyte; para2: jint; para3: jint; para4: jbyte): jint; static; overload;
+    class function binarySearch(var para1: array of jbyte; para2: jint; para3: jint; para4: jbyte): jint; static; overload;
+    class function binarySearch(para1: Arr1jchar; para2: jchar): jint; static; overload;
+    class function binarySearch(var para1: array of jchar; para2: jchar): jint; static; overload;
+    class function binarySearch(para1: Arr1jchar; para2: jint; para3: jint; para4: jchar): jint; static; overload;
+    class function binarySearch(var para1: array of jchar; para2: jint; para3: jint; para4: jchar): jint; static; overload;
+    class function binarySearch(para1: Arr1jdouble; para2: jdouble): jint; static; overload;
+    class function binarySearch(var para1: array of jdouble; para2: jdouble): jint; static; overload;
+    class function binarySearch(para1: Arr1jdouble; para2: jint; para3: jint; para4: jdouble): jint; static; overload;
+    class function binarySearch(var para1: array of jdouble; para2: jint; para3: jint; para4: jdouble): jint; static; overload;
+    class function binarySearch(para1: Arr1jfloat; para2: jfloat): jint; static; overload;
+    class function binarySearch(var para1: array of jfloat; para2: jfloat): jint; static; overload;
+    class function binarySearch(para1: Arr1jfloat; para2: jint; para3: jint; para4: jfloat): jint; static; overload;
+    class function binarySearch(var para1: array of jfloat; para2: jint; para3: jint; para4: jfloat): jint; static; overload;
+    class function binarySearch(para1: Arr1jint; para2: jint): jint; static; overload;
+    class function binarySearch(var para1: array of jint; para2: jint): jint; static; overload;
+    class function binarySearch(para1: Arr1jint; para2: jint; para3: jint; para4: jint): jint; static; overload;
+    class function binarySearch(var para1: array of jint; para2: jint; para3: jint; para4: jint): jint; static; overload;
+    class function binarySearch(para1: Arr1jlong; para2: jlong): jint; static; overload;
+    class function binarySearch(var para1: array of jlong; para2: jlong): jint; static; overload;
+    class function binarySearch(para1: Arr1jlong; para2: jint; para3: jint; para4: jlong): jint; static; overload;
+    class function binarySearch(var para1: array of jlong; para2: jint; para3: jint; para4: jlong): jint; static; overload;
+    class function binarySearch(para1: Arr1JLObject; para2: JLObject): jint; static; overload;
+    class function binarySearch(var para1: array of JLObject; para2: JLObject): jint; static; overload;
+    class function binarySearch(para1: Arr1JLObject; para2: jint; para3: jint; para4: JLObject): jint; static; overload;
+    class function binarySearch(var para1: array of JLObject; para2: jint; para3: jint; para4: JLObject): jint; static; overload;
+    class function binarySearch(para1: Arr1JLObject; para2: JLObject; para3: JUComparator): jint; static; overload;
+    class function binarySearch(var para1: array of JLObject; para2: JLObject; para3: JUComparator): jint; static; overload;
+    class function binarySearch(para1: Arr1JLObject; para2: jint; para3: jint; para4: JLObject; para5: JUComparator): jint; static; overload;
+    class function binarySearch(var para1: array of JLObject; para2: jint; para3: jint; para4: JLObject; para5: JUComparator): jint; static; overload;
+    class function binarySearch(para1: Arr1jshort; para2: jshort): jint; static; overload;
+    class function binarySearch(var para1: array of jshort; para2: jshort): jint; static; overload;
+    class function binarySearch(para1: Arr1jshort; para2: jint; para3: jint; para4: jshort): jint; static; overload;
+    class function binarySearch(var para1: array of jshort; para2: jint; para3: jint; para4: jshort): jint; static; overload;
+    class procedure fill(para1: Arr1jbyte; para2: jbyte); static; overload;
+    class procedure fill(var para1: array of jbyte; para2: jbyte); static; overload;
+    class procedure fill(para1: Arr1jbyte; para2: jint; para3: jint; para4: jbyte); static; overload;
+    class procedure fill(var para1: array of jbyte; para2: jint; para3: jint; para4: jbyte); static; overload;
+    class procedure fill(para1: Arr1jshort; para2: jshort); static; overload;
+    class procedure fill(var para1: array of jshort; para2: jshort); static; overload;
+    class procedure fill(para1: Arr1jshort; para2: jint; para3: jint; para4: jshort); static; overload;
+    class procedure fill(var para1: array of jshort; para2: jint; para3: jint; para4: jshort); static; overload;
+    class procedure fill(para1: Arr1jchar; para2: jchar); static; overload;
+    class procedure fill(var para1: array of jchar; para2: jchar); static; overload;
+    class procedure fill(para1: Arr1jchar; para2: jint; para3: jint; para4: jchar); static; overload;
+    class procedure fill(var para1: array of jchar; para2: jint; para3: jint; para4: jchar); static; overload;
+    class procedure fill(para1: Arr1jint; para2: jint); static; overload;
+    class procedure fill(var para1: array of jint; para2: jint); static; overload;
+    class procedure fill(para1: Arr1jint; para2: jint; para3: jint; para4: jint); static; overload;
+    class procedure fill(var para1: array of jint; para2: jint; para3: jint; para4: jint); static; overload;
+    class procedure fill(para1: Arr1jlong; para2: jlong); static; overload;
+    class procedure fill(var para1: array of jlong; para2: jlong); static; overload;
+    class procedure fill(para1: Arr1jlong; para2: jint; para3: jint; para4: jlong); static; overload;
+    class procedure fill(var para1: array of jlong; para2: jint; para3: jint; para4: jlong); static; overload;
+    class procedure fill(para1: Arr1jfloat; para2: jfloat); static; overload;
+    class procedure fill(var para1: array of jfloat; para2: jfloat); static; overload;
+    class procedure fill(para1: Arr1jfloat; para2: jint; para3: jint; para4: jfloat); static; overload;
+    class procedure fill(var para1: array of jfloat; para2: jint; para3: jint; para4: jfloat); static; overload;
+    class procedure fill(para1: Arr1jdouble; para2: jdouble); static; overload;
+    class procedure fill(var para1: array of jdouble; para2: jdouble); static; overload;
+    class procedure fill(para1: Arr1jdouble; para2: jint; para3: jint; para4: jdouble); static; overload;
+    class procedure fill(var para1: array of jdouble; para2: jint; para3: jint; para4: jdouble); static; overload;
+    class procedure fill(para1: Arr1jboolean; para2: jboolean); static; overload;
+    class procedure fill(var para1: array of jboolean; para2: jboolean); static; overload;
+    class procedure fill(para1: Arr1jboolean; para2: jint; para3: jint; para4: jboolean); static; overload;
+    class procedure fill(var para1: array of jboolean; para2: jint; para3: jint; para4: jboolean); static; overload;
+    class procedure fill(para1: Arr1JLObject; para2: JLObject); static; overload;
+    class procedure fill(var para1: array of JLObject; para2: JLObject); static; overload;
+    class procedure fill(para1: Arr1JLObject; para2: jint; para3: jint; para4: JLObject); static; overload;
+    class procedure fill(var para1: array of JLObject; para2: jint; para3: jint; para4: JLObject); static; overload;
+    class function hashCode(para1: Arr1jboolean): jint; static; overload;
+    class function hashCode(var para1: array of jboolean): jint; static; overload;
+    class function hashCode(para1: Arr1jint): jint; static; overload;
+    class function hashCode(var para1: array of jint): jint; static; overload;
+    class function hashCode(para1: Arr1jshort): jint; static; overload;
+    class function hashCode(var para1: array of jshort): jint; static; overload;
+    class function hashCode(para1: Arr1jchar): jint; static; overload;
+    class function hashCode(var para1: array of jchar): jint; static; overload;
+    class function hashCode(para1: Arr1jbyte): jint; static; overload;
+    class function hashCode(var para1: array of jbyte): jint; static; overload;
+    class function hashCode(para1: Arr1jlong): jint; static; overload;
+    class function hashCode(var para1: array of jlong): jint; static; overload;
+    class function hashCode(para1: Arr1jfloat): jint; static; overload;
+    class function hashCode(var para1: array of jfloat): jint; static; overload;
+    class function hashCode(para1: Arr1jdouble): jint; static; overload;
+    class function hashCode(var para1: array of jdouble): jint; static; overload;
+    class function hashCode(para1: Arr1JLObject): jint; static; overload;
+    class function hashCode(var para1: array of JLObject): jint; static; overload;
+    class function deepHashCode(para1: Arr1JLObject): jint; static; overload;
+    class function deepHashCode(var para1: array of JLObject): jint; static; overload;
+    class function equals(para1: Arr1jbyte; para2: Arr1jbyte): jboolean; static; overload;
+    class function equals(var para1: array of jbyte; var para2: array of jbyte): jboolean; static; overload;
+    class function equals(para1: Arr1jshort; para2: Arr1jshort): jboolean; static; overload;
+    class function equals(var para1: array of jshort; var para2: array of jshort): jboolean; static; overload;
+    class function equals(para1: Arr1jchar; para2: Arr1jchar): jboolean; static; overload;
+    class function equals(var para1: array of jchar; var para2: array of jchar): jboolean; static; overload;
+    class function equals(para1: Arr1jint; para2: Arr1jint): jboolean; static; overload;
+    class function equals(var para1: array of jint; var para2: array of jint): jboolean; static; overload;
+    class function equals(para1: Arr1jlong; para2: Arr1jlong): jboolean; static; overload;
+    class function equals(var para1: array of jlong; var para2: array of jlong): jboolean; static; overload;
+    class function equals(para1: Arr1jfloat; para2: Arr1jfloat): jboolean; static; overload;
+    class function equals(var para1: array of jfloat; var para2: array of jfloat): jboolean; static; overload;
+    class function equals(para1: Arr1jdouble; para2: Arr1jdouble): jboolean; static; overload;
+    class function equals(var para1: array of jdouble; var para2: array of jdouble): jboolean; static; overload;
+    class function equals(para1: Arr1jboolean; para2: Arr1jboolean): jboolean; static; overload;
+    class function equals(var para1: array of jboolean; var para2: array of jboolean): jboolean; static; overload;
+    class function equals(para1: Arr1JLObject; para2: Arr1JLObject): jboolean; static; overload;
+    class function equals(var para1: array of JLObject; var para2: array of JLObject): jboolean; static; overload;
+    class function deepEquals(para1: Arr1JLObject; para2: Arr1JLObject): jboolean; static; overload;
+    class function deepEquals(var para1: array of JLObject; var para2: array of JLObject): jboolean; static; overload;
+    class procedure sort(para1: Arr1jbyte); static; overload;
+    class procedure sort(var para1: array of jbyte); static; overload;
+    class procedure sort(para1: Arr1jbyte; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jbyte; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jchar); static; overload;
+    class procedure sort(var para1: array of jchar); static; overload;
+    class procedure sort(para1: Arr1jchar; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jchar; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jdouble); static; overload;
+    class procedure sort(var para1: array of jdouble); static; overload;
+    class procedure sort(para1: Arr1jdouble; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jdouble; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jfloat); static; overload;
+    class procedure sort(var para1: array of jfloat); static; overload;
+    class procedure sort(para1: Arr1jfloat; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jfloat; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jint); static; overload;
+    class procedure sort(var para1: array of jint); static; overload;
+    class procedure sort(para1: Arr1jint; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jint; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jlong); static; overload;
+    class procedure sort(var para1: array of jlong); static; overload;
+    class procedure sort(para1: Arr1jlong; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jlong; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1jshort); static; overload;
+    class procedure sort(var para1: array of jshort); static; overload;
+    class procedure sort(para1: Arr1jshort; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of jshort; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1JLObject); static; overload;
+    class procedure sort(var para1: array of JLObject); static; overload;
+    class procedure sort(para1: Arr1JLObject; para2: jint; para3: jint); static; overload;
+    class procedure sort(var para1: array of JLObject; para2: jint; para3: jint); static; overload;
+    class procedure sort(para1: Arr1JLObject; para2: jint; para3: jint; para4: JUComparator); static; overload;
+    class procedure sort(var para1: array of JLObject; para2: jint; para3: jint; para4: JUComparator); static; overload;
+    class procedure sort(para1: Arr1JLObject; para2: JUComparator); static; overload;
+    class procedure sort(var para1: array of JLObject; para2: JUComparator); static; overload;
+    class function toString(para1: Arr1jboolean): JLString; static; overload;
+    class function toString(var para1: array of jboolean): JLString; static; overload;
+    class function toString(para1: Arr1jbyte): JLString; static; overload;
+    class function toString(var para1: array of jbyte): JLString; static; overload;
+    class function toString(para1: Arr1jchar): JLString; static; overload;
+    class function toString(var para1: array of jchar): JLString; static; overload;
+    class function toString(para1: Arr1jdouble): JLString; static; overload;
+    class function toString(var para1: array of jdouble): JLString; static; overload;
+    class function toString(para1: Arr1jfloat): JLString; static; overload;
+    class function toString(var para1: array of jfloat): JLString; static; overload;
+    class function toString(para1: Arr1jint): JLString; static; overload;
+    class function toString(var para1: array of jint): JLString; static; overload;
+    class function toString(para1: Arr1jlong): JLString; static; overload;
+    class function toString(var para1: array of jlong): JLString; static; overload;
+    class function toString(para1: Arr1jshort): JLString; static; overload;
+    class function toString(var para1: array of jshort): JLString; static; overload;
+    class function toString(para1: Arr1JLObject): JLString; static; overload;
+    class function toString(var para1: array of JLObject): JLString; static; overload;
+    class function deepToString(para1: Arr1JLObject): JLString; static; overload;
+    class function deepToString(var para1: array of JLObject): JLString; static; overload;
+    class function copyOf(para1: Arr1jboolean; para2: jint): Arr1jboolean; static; overload;
+    class function copyOf(var para1: array of jboolean; para2: jint): Arr1jboolean; static; overload;
+    class function copyOf(para1: Arr1jbyte; para2: jint): Arr1jbyte; static; overload;
+    class function copyOf(var para1: array of jbyte; para2: jint): Arr1jbyte; static; overload;
+    class function copyOf(para1: Arr1jchar; para2: jint): Arr1jchar; static; overload;
+    class function copyOf(var para1: array of jchar; para2: jint): Arr1jchar; static; overload;
+    class function copyOf(para1: Arr1jdouble; para2: jint): Arr1jdouble; static; overload;
+    class function copyOf(var para1: array of jdouble; para2: jint): Arr1jdouble; static; overload;
+    class function copyOf(para1: Arr1jfloat; para2: jint): Arr1jfloat; static; overload;
+    class function copyOf(var para1: array of jfloat; para2: jint): Arr1jfloat; static; overload;
+    class function copyOf(para1: Arr1jint; para2: jint): Arr1jint; static; overload;
+    class function copyOf(var para1: array of jint; para2: jint): Arr1jint; static; overload;
+    class function copyOf(para1: Arr1jlong; para2: jint): Arr1jlong; static; overload;
+    class function copyOf(var para1: array of jlong; para2: jint): Arr1jlong; static; overload;
+    class function copyOf(para1: Arr1jshort; para2: jint): Arr1jshort; static; overload;
+    class function copyOf(var para1: array of jshort; para2: jint): Arr1jshort; static; overload;
+    class function copyOf(para1: Arr1JLObject; para2: jint): Arr1JLObject; static; overload;
+    class function copyOf(var para1: array of JLObject; para2: jint): Arr1JLObject; static; overload;
+    class function copyOf(para1: Arr1JLObject; para2: jint; para3: JLClass): Arr1JLObject; static; overload;
+    class function copyOf(var para1: array of JLObject; para2: jint; para3: JLClass): Arr1JLObject; static; overload;
+    class function copyOfRange(para1: Arr1jboolean; para2: jint; para3: jint): Arr1jboolean; static; overload;
+    class function copyOfRange(var para1: array of jboolean; para2: jint; para3: jint): Arr1jboolean; static; overload;
+    class function copyOfRange(para1: Arr1jbyte; para2: jint; para3: jint): Arr1jbyte; static; overload;
+    class function copyOfRange(var para1: array of jbyte; para2: jint; para3: jint): Arr1jbyte; static; overload;
+    class function copyOfRange(para1: Arr1jchar; para2: jint; para3: jint): Arr1jchar; static; overload;
+    class function copyOfRange(var para1: array of jchar; para2: jint; para3: jint): Arr1jchar; static; overload;
+    class function copyOfRange(para1: Arr1jdouble; para2: jint; para3: jint): Arr1jdouble; static; overload;
+    class function copyOfRange(var para1: array of jdouble; para2: jint; para3: jint): Arr1jdouble; static; overload;
+    class function copyOfRange(para1: Arr1jfloat; para2: jint; para3: jint): Arr1jfloat; static; overload;
+    class function copyOfRange(var para1: array of jfloat; para2: jint; para3: jint): Arr1jfloat; static; overload;
+    class function copyOfRange(para1: Arr1jint; para2: jint; para3: jint): Arr1jint; static; overload;
+    class function copyOfRange(var para1: array of jint; para2: jint; para3: jint): Arr1jint; static; overload;
+    class function copyOfRange(para1: Arr1jlong; para2: jint; para3: jint): Arr1jlong; static; overload;
+    class function copyOfRange(var para1: array of jlong; para2: jint; para3: jint): Arr1jlong; static; overload;
+    class function copyOfRange(para1: Arr1jshort; para2: jint; para3: jint): Arr1jshort; static; overload;
+    class function copyOfRange(var para1: array of jshort; para2: jint; para3: jint): Arr1jshort; static; overload;
+    class function copyOfRange(para1: Arr1JLObject; para2: jint; para3: jint): Arr1JLObject; static; overload;
+    class function copyOfRange(var para1: array of JLObject; para2: jint; para3: jint): Arr1JLObject; static; overload;
+    class function copyOfRange(para1: Arr1JLObject; para2: jint; para3: jint; para4: JLClass): Arr1JLObject; static; overload;
+    class function copyOfRange(var para1: array of JLObject; para2: jint; para3: jint; para4: JLClass): Arr1JLObject; static; overload;
+  end;
+
+  JUComparator = interface external 'java.util' name 'Comparator' 
+    function compare(para1: JLObject; para2: JLObject): jint; overload;
+    function equals(para1: JLObject): jboolean; overload;
+  end;
+
+  JUIterator = interface external 'java.util' name 'Iterator' 
+    function hasNext(): jboolean; overload;
+    function next(): JLObject; overload;
+    procedure remove(); overload;
+  end;
+
+  JUMap = interface external 'java.util' name 'Map' 
+    type
+      InnerEntry = interface;
+      Arr1InnerEntry = array of InnerEntry;
+      Arr2InnerEntry = array of Arr1InnerEntry;
+      Arr3InnerEntry = array of Arr2InnerEntry;
+      InnerEntry = interface external 'java.util' name 'Entry' 
+        function equals(para1: JLObject): jboolean; overload;
+        function getKey(): JLObject; overload;
+        function getValue(): JLObject; overload;
+        function hashCode(): jint; overload;
+        function setValue(para1: JLObject): JLObject; overload;
+      end;
+
+    procedure clear(); overload;
+    function containsKey(para1: JLObject): jboolean; overload;
+    function containsValue(para1: JLObject): jboolean; overload;
+    function entrySet(): JUSet; overload;
+    function equals(para1: JLObject): jboolean; overload;
+    function get(para1: JLObject): JLObject; overload;
+    function hashCode(): jint; overload;
+    function isEmpty(): jboolean; overload;
+    function keySet(): JUSet; overload;
+    function put(para1: JLObject; para2: JLObject): JLObject; overload;
+    procedure putAll(para1: JUMap); overload;
+    function remove(para1: JLObject): JLObject; overload;
+    function size(): jint; overload;
+    function values(): JUCollection; overload;
+  end;
+
+  JLNumber = class abstract external 'java.lang' name 'Number' (JLObject, JISerializable)
+  public
+    constructor create(); overload;
+    function byteValue(): jbyte; overload; virtual;
+    function doubleValue(): jdouble; overload; virtual; abstract;
+    function floatValue(): jfloat; overload; virtual; abstract;
+    function intValue(): jint; overload; virtual; abstract;
+    function longValue(): jlong; overload; virtual; abstract;
+    function shortValue(): jshort; overload; virtual;
+  end;
+
+  JLThrowable = class external 'java.lang' name 'Throwable' (JLObject, JISerializable)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+    function fillInStackTrace(): JLThrowable; overload; virtual;
+    function getMessage(): JLString; overload; virtual;
+    function getLocalizedMessage(): JLString; overload; virtual;
+    function getStackTrace(): Arr1JLStackTraceElement; overload; virtual;
+    procedure setStackTrace(para1: Arr1JLStackTraceElement); overload; virtual;
+    procedure setStackTrace(var para1: array of JLStackTraceElement); overload; virtual;
+    procedure printStackTrace(); overload; virtual;
+    procedure printStackTrace(para1: JIPrintStream); overload; virtual;
+    procedure printStackTrace(para1: JIPrintWriter); overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function initCause(para1: JLThrowable): JLThrowable; overload; virtual;
+    function getCause(): JLThrowable; overload; virtual;
+  end;
+
+  JLStringBuffer = class sealed external 'java.lang' name 'StringBuffer' (JLAbstractStringBuilder, JLAppendable, JISerializable, JLCharSequence)
+  public
+    constructor create(); overload;
+    constructor create(para1: jint); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLCharSequence); overload;
+    function append(para1: jboolean): JLStringBuffer; overload; virtual;
+    function append(para1: jchar): JLStringBuffer; overload; virtual;
+    function append(para1: jdouble): JLStringBuffer; overload; virtual;
+    function append(para1: jfloat): JLStringBuffer; overload; virtual;
+    function append(para1: jint): JLStringBuffer; overload; virtual;
+    function append(para1: jlong): JLStringBuffer; overload; virtual;
+    function append(para1: JLObject): JLStringBuffer; overload; virtual;
+    function append(para1: JLString): JLStringBuffer; overload; virtual;
+    function append(para1: JLStringBuffer): JLStringBuffer; overload; virtual;
+    function append(para1: Arr1jchar): JLStringBuffer; overload; virtual;
+    function append(var para1: array of jchar): JLStringBuffer; overload; virtual;
+    function append(para1: Arr1jchar; para2: jint; para3: jint): JLStringBuffer; overload; virtual;
+    function append(var para1: array of jchar; para2: jint; para3: jint): JLStringBuffer; overload; virtual;
+    function append(para1: JLCharSequence): JLStringBuffer; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLStringBuffer; overload; virtual;
+    function appendCodePoint(para1: jint): JLStringBuffer; overload; virtual;
+    function charAt(para1: jint): jchar; overload; virtual;
+    function codePointAt(para1: jint): jint; overload; virtual;
+    function codePointBefore(para1: jint): jint; overload; virtual;
+    function codePointCount(para1: jint; para2: jint): jint; overload; virtual;
+    function delete(para1: jint; para2: jint): JLStringBuffer; overload; virtual;
+    function deleteCharAt(para1: jint): JLStringBuffer; overload; virtual;
+    procedure ensureCapacity(para1: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; para3: Arr1jchar; para4: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; var para3: array of jchar; para4: jint); overload; virtual;
+    function indexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function insert(para1: jint; para2: jchar): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: jboolean): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: jint): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: jlong): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: jdouble): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: jfloat): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: JLObject): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: JLString): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: Arr1jchar): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; var para2: array of jchar): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: Arr1jchar; para3: jint; para4: jint): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; var para2: array of jchar; para3: jint; para4: jint): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: JLCharSequence): JLStringBuffer; overload; virtual;
+    function insert(para1: jint; para2: JLCharSequence; para3: jint; para4: jint): JLStringBuffer; overload; virtual;
+    function lastIndexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function offsetByCodePoints(para1: jint; para2: jint): jint; overload; virtual;
+    function replace(para1: jint; para2: jint; para3: JLString): JLStringBuffer; overload; virtual;
+    function reverse(): JLStringBuffer; overload; virtual;
+    procedure setCharAt(para1: jint; para2: jchar); overload; virtual;
+    procedure setLength(para1: jint); overload; virtual;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload; virtual;
+    function substring(para1: jint): JLString; overload; virtual;
+    function substring(para1: jint; para2: jint): JLString; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    procedure trimToSize(); overload; virtual;
+    function lastIndexOf(para1: JLString): jint; overload; virtual;
+    function indexOf(para1: JLString): jint; overload; virtual;
+    function length(): jint; overload; virtual;
+    function capacity(): jint; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: JLCharSequence): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: jchar): JLAppendable; overload; virtual;  // throws java.io.IOException
+  end;
+
+  JLStringBuilder = class sealed external 'java.lang' name 'StringBuilder' (JLAbstractStringBuilder, JLAppendable, JLCharSequence, JISerializable)
+  public
+    constructor create(); overload;
+    constructor create(para1: jint); overload;
+    constructor create(para1: JLCharSequence); overload;
+    constructor create(para1: JLString); overload;
+    function append(para1: jboolean): JLStringBuilder; overload; virtual;
+    function append(para1: jchar): JLStringBuilder; overload; virtual;
+    function append(para1: jint): JLStringBuilder; overload; virtual;
+    function append(para1: jlong): JLStringBuilder; overload; virtual;
+    function append(para1: jfloat): JLStringBuilder; overload; virtual;
+    function append(para1: jdouble): JLStringBuilder; overload; virtual;
+    function append(para1: JLObject): JLStringBuilder; overload; virtual;
+    function append(para1: JLString): JLStringBuilder; overload; virtual;
+    function append(para1: JLStringBuffer): JLStringBuilder; overload; virtual;
+    function append(para1: Arr1jchar): JLStringBuilder; overload; virtual;
+    function append(var para1: array of jchar): JLStringBuilder; overload; virtual;
+    function append(para1: Arr1jchar; para2: jint; para3: jint): JLStringBuilder; overload; virtual;
+    function append(var para1: array of jchar; para2: jint; para3: jint): JLStringBuilder; overload; virtual;
+    function append(para1: JLCharSequence): JLStringBuilder; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLStringBuilder; overload; virtual;
+    function appendCodePoint(para1: jint): JLStringBuilder; overload; virtual;
+    function delete(para1: jint; para2: jint): JLStringBuilder; overload; virtual;
+    function deleteCharAt(para1: jint): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jboolean): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jchar): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jint): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jlong): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jfloat): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: jdouble): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: JLObject): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: JLString): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: Arr1jchar): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; var para2: array of jchar): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: Arr1jchar; para3: jint; para4: jint): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; var para2: array of jchar; para3: jint; para4: jint): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: JLCharSequence): JLStringBuilder; overload; virtual;
+    function insert(para1: jint; para2: JLCharSequence; para3: jint; para4: jint): JLStringBuilder; overload; virtual;
+    function replace(para1: jint; para2: jint; para3: JLString): JLStringBuilder; overload; virtual;
+    function reverse(): JLStringBuilder; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function offsetByCodePoints(para1: jint; para2: jint): jint; overload; virtual;
+    function codePointCount(para1: jint; para2: jint): jint; overload; virtual;
+    function codePointBefore(para1: jint): jint; overload; virtual;
+    function codePointAt(para1: jint): jint; overload; virtual;
+    procedure trimToSize(); overload; virtual;
+    function lastIndexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function lastIndexOf(para1: JLString): jint; overload; virtual;
+    function indexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function indexOf(para1: JLString): jint; overload; virtual;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload; virtual;
+    function substring(para1: jint; para2: jint): JLString; overload; virtual;
+    function substring(para1: jint): JLString; overload; virtual;
+    procedure setLength(para1: jint); overload; virtual;
+    procedure setCharAt(para1: jint; para2: jchar); overload; virtual;
+    function length(): jint; overload; virtual;
+    procedure getChars(para1: jint; para2: jint; para3: Arr1jchar; para4: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; var para3: array of jchar; para4: jint); overload; virtual;
+    procedure ensureCapacity(para1: jint); overload; virtual;
+    function charAt(para1: jint): jchar; overload; virtual;
+    function capacity(): jint; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: JLCharSequence): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: jchar): JLAppendable; overload; virtual;  // throws java.io.IOException
+  end;
+
+  JUBitSet = class external 'java.util' name 'BitSet' (JLObject, JISerializable, JLCloneable)
+  public
+    constructor create(); overload;
+    constructor create(para1: jint); overload;
+    function clone(): JLObject; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function get(para1: jint): jboolean; overload; virtual;
+    procedure &set(para1: jint); overload; virtual;
+    procedure clear(para1: jint); overload; virtual;
+    procedure flip(para1: jint); overload; virtual;
+    function get(para1: jint; para2: jint): JUBitSet; overload; virtual;
+    procedure &set(para1: jint; para2: jboolean); overload; virtual;
+    procedure &set(para1: jint; para2: jint; para3: jboolean); overload; virtual;
+    procedure clear(); overload; virtual;
+    procedure &set(para1: jint; para2: jint); overload; virtual;
+    procedure clear(para1: jint; para2: jint); overload; virtual;
+    procedure flip(para1: jint; para2: jint); overload; virtual;
+    function intersects(para1: JUBitSet): jboolean; overload; virtual;
+    procedure &and(para1: JUBitSet); overload; virtual;
+    procedure andNot(para1: JUBitSet); overload; virtual;
+    procedure &or(para1: JUBitSet); overload; virtual;
+    procedure &xor(para1: JUBitSet); overload; virtual;
+    function size(): jint; overload; virtual;
+    function length(): jint; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function nextSetBit(para1: jint): jint; overload; virtual;
+    function nextClearBit(para1: jint): jint; overload; virtual;
+    function isEmpty(): jboolean; overload; virtual;
+    function cardinality(): jint; overload; virtual;
+  end;
+
+  JLBoolean = class sealed external 'java.lang' name 'Boolean' (JLObject, JISerializable, JLComparable)
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+      fTRUE: JLBoolean; external name 'TRUE';
+      fFALSE: JLBoolean; external name 'FALSE';
+  public
+    constructor create(para1: JLString); overload;
+    constructor create(para1: jboolean); overload;
+    function booleanValue(): jboolean; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function compareTo(para1: JLBoolean): jint; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    class function getBoolean(para1: JLString): jboolean; static; overload;
+    class function parseBoolean(para1: JLString): jboolean; static; overload;
+    class function toString(para1: jboolean): JLString; static; overload;
+    class function valueOf(para1: JLString): JLBoolean; static; overload;
+    class function valueOf(para1: jboolean): JLBoolean; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLCharacter = class sealed external 'java.lang' name 'Character' (JLObject, JISerializable, JLComparable)
+  public
+    type
+      InnerSubset = class;
+      Arr1InnerSubset = array of InnerSubset;
+      Arr2InnerSubset = array of Arr1InnerSubset;
+      Arr3InnerSubset = array of Arr2InnerSubset;
+      InnerUnicodeBlock = class;
+      Arr1InnerUnicodeBlock = array of InnerUnicodeBlock;
+      Arr2InnerUnicodeBlock = array of Arr1InnerUnicodeBlock;
+      Arr3InnerUnicodeBlock = array of Arr2InnerUnicodeBlock;
+      InnerSubset = class external 'java.lang' name 'Subset' (JLObject)
+      strict protected
+        constructor create(para1: JLString); overload;
+      public
+        function equals(para1: JLObject): jboolean; overload; virtual; final;
+        function hashCode(): jint; overload; virtual; final;
+        function toString(): JLString; overload; virtual; final;
+      end;
+
+      InnerUnicodeBlock = class sealed external 'java.lang' name 'UnicodeBlock' (InnerSubset)
+      public
+        final class var
+          fSURROGATES_AREA: JLCharacter.InnerUnicodeBlock; external name 'SURROGATES_AREA';
+          fBASIC_LATIN: JLCharacter.InnerUnicodeBlock; external name 'BASIC_LATIN';
+          fLATIN_1_SUPPLEMENT: JLCharacter.InnerUnicodeBlock; external name 'LATIN_1_SUPPLEMENT';
+          fLATIN_EXTENDED_A: JLCharacter.InnerUnicodeBlock; external name 'LATIN_EXTENDED_A';
+          fLATIN_EXTENDED_B: JLCharacter.InnerUnicodeBlock; external name 'LATIN_EXTENDED_B';
+          fIPA_EXTENSIONS: JLCharacter.InnerUnicodeBlock; external name 'IPA_EXTENSIONS';
+          fSPACING_MODIFIER_LETTERS: JLCharacter.InnerUnicodeBlock; external name 'SPACING_MODIFIER_LETTERS';
+          fCOMBINING_DIACRITICAL_MARKS: JLCharacter.InnerUnicodeBlock; external name 'COMBINING_DIACRITICAL_MARKS';
+          fGREEK: JLCharacter.InnerUnicodeBlock; external name 'GREEK';
+          fCYRILLIC: JLCharacter.InnerUnicodeBlock; external name 'CYRILLIC';
+          fCYRILLIC_SUPPLEMENTARY: JLCharacter.InnerUnicodeBlock; external name 'CYRILLIC_SUPPLEMENTARY';
+          fARMENIAN: JLCharacter.InnerUnicodeBlock; external name 'ARMENIAN';
+          fHEBREW: JLCharacter.InnerUnicodeBlock; external name 'HEBREW';
+          fARABIC: JLCharacter.InnerUnicodeBlock; external name 'ARABIC';
+          fSYRIAC: JLCharacter.InnerUnicodeBlock; external name 'SYRIAC';
+          fTHAANA: JLCharacter.InnerUnicodeBlock; external name 'THAANA';
+          fDEVANAGARI: JLCharacter.InnerUnicodeBlock; external name 'DEVANAGARI';
+          fBENGALI: JLCharacter.InnerUnicodeBlock; external name 'BENGALI';
+          fGURMUKHI: JLCharacter.InnerUnicodeBlock; external name 'GURMUKHI';
+          fGUJARATI: JLCharacter.InnerUnicodeBlock; external name 'GUJARATI';
+          fORIYA: JLCharacter.InnerUnicodeBlock; external name 'ORIYA';
+          fTAMIL: JLCharacter.InnerUnicodeBlock; external name 'TAMIL';
+          fTELUGU: JLCharacter.InnerUnicodeBlock; external name 'TELUGU';
+          fKANNADA: JLCharacter.InnerUnicodeBlock; external name 'KANNADA';
+          fMALAYALAM: JLCharacter.InnerUnicodeBlock; external name 'MALAYALAM';
+          fSINHALA: JLCharacter.InnerUnicodeBlock; external name 'SINHALA';
+          fTHAI: JLCharacter.InnerUnicodeBlock; external name 'THAI';
+          fLAO: JLCharacter.InnerUnicodeBlock; external name 'LAO';
+          fTIBETAN: JLCharacter.InnerUnicodeBlock; external name 'TIBETAN';
+          fMYANMAR: JLCharacter.InnerUnicodeBlock; external name 'MYANMAR';
+          fGEORGIAN: JLCharacter.InnerUnicodeBlock; external name 'GEORGIAN';
+          fHANGUL_JAMO: JLCharacter.InnerUnicodeBlock; external name 'HANGUL_JAMO';
+          fETHIOPIC: JLCharacter.InnerUnicodeBlock; external name 'ETHIOPIC';
+          fCHEROKEE: JLCharacter.InnerUnicodeBlock; external name 'CHEROKEE';
+          fUNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: JLCharacter.InnerUnicodeBlock; external name 'UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS';
+          fOGHAM: JLCharacter.InnerUnicodeBlock; external name 'OGHAM';
+          fRUNIC: JLCharacter.InnerUnicodeBlock; external name 'RUNIC';
+          fTAGALOG: JLCharacter.InnerUnicodeBlock; external name 'TAGALOG';
+          fHANUNOO: JLCharacter.InnerUnicodeBlock; external name 'HANUNOO';
+          fBUHID: JLCharacter.InnerUnicodeBlock; external name 'BUHID';
+          fTAGBANWA: JLCharacter.InnerUnicodeBlock; external name 'TAGBANWA';
+          fKHMER: JLCharacter.InnerUnicodeBlock; external name 'KHMER';
+          fMONGOLIAN: JLCharacter.InnerUnicodeBlock; external name 'MONGOLIAN';
+          fLIMBU: JLCharacter.InnerUnicodeBlock; external name 'LIMBU';
+          fTAI_LE: JLCharacter.InnerUnicodeBlock; external name 'TAI_LE';
+          fKHMER_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'KHMER_SYMBOLS';
+          fPHONETIC_EXTENSIONS: JLCharacter.InnerUnicodeBlock; external name 'PHONETIC_EXTENSIONS';
+          fLATIN_EXTENDED_ADDITIONAL: JLCharacter.InnerUnicodeBlock; external name 'LATIN_EXTENDED_ADDITIONAL';
+          fGREEK_EXTENDED: JLCharacter.InnerUnicodeBlock; external name 'GREEK_EXTENDED';
+          fGENERAL_PUNCTUATION: JLCharacter.InnerUnicodeBlock; external name 'GENERAL_PUNCTUATION';
+          fSUPERSCRIPTS_AND_SUBSCRIPTS: JLCharacter.InnerUnicodeBlock; external name 'SUPERSCRIPTS_AND_SUBSCRIPTS';
+          fCURRENCY_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'CURRENCY_SYMBOLS';
+          fCOMBINING_MARKS_FOR_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'COMBINING_MARKS_FOR_SYMBOLS';
+          fLETTERLIKE_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'LETTERLIKE_SYMBOLS';
+          fNUMBER_FORMS: JLCharacter.InnerUnicodeBlock; external name 'NUMBER_FORMS';
+          fARROWS: JLCharacter.InnerUnicodeBlock; external name 'ARROWS';
+          fMATHEMATICAL_OPERATORS: JLCharacter.InnerUnicodeBlock; external name 'MATHEMATICAL_OPERATORS';
+          fMISCELLANEOUS_TECHNICAL: JLCharacter.InnerUnicodeBlock; external name 'MISCELLANEOUS_TECHNICAL';
+          fCONTROL_PICTURES: JLCharacter.InnerUnicodeBlock; external name 'CONTROL_PICTURES';
+          fOPTICAL_CHARACTER_RECOGNITION: JLCharacter.InnerUnicodeBlock; external name 'OPTICAL_CHARACTER_RECOGNITION';
+          fENCLOSED_ALPHANUMERICS: JLCharacter.InnerUnicodeBlock; external name 'ENCLOSED_ALPHANUMERICS';
+          fBOX_DRAWING: JLCharacter.InnerUnicodeBlock; external name 'BOX_DRAWING';
+          fBLOCK_ELEMENTS: JLCharacter.InnerUnicodeBlock; external name 'BLOCK_ELEMENTS';
+          fGEOMETRIC_SHAPES: JLCharacter.InnerUnicodeBlock; external name 'GEOMETRIC_SHAPES';
+          fMISCELLANEOUS_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'MISCELLANEOUS_SYMBOLS';
+          fDINGBATS: JLCharacter.InnerUnicodeBlock; external name 'DINGBATS';
+          fMISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: JLCharacter.InnerUnicodeBlock; external name 'MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A';
+          fSUPPLEMENTAL_ARROWS_A: JLCharacter.InnerUnicodeBlock; external name 'SUPPLEMENTAL_ARROWS_A';
+          fBRAILLE_PATTERNS: JLCharacter.InnerUnicodeBlock; external name 'BRAILLE_PATTERNS';
+          fSUPPLEMENTAL_ARROWS_B: JLCharacter.InnerUnicodeBlock; external name 'SUPPLEMENTAL_ARROWS_B';
+          fMISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: JLCharacter.InnerUnicodeBlock; external name 'MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B';
+          fSUPPLEMENTAL_MATHEMATICAL_OPERATORS: JLCharacter.InnerUnicodeBlock; external name 'SUPPLEMENTAL_MATHEMATICAL_OPERATORS';
+          fMISCELLANEOUS_SYMBOLS_AND_ARROWS: JLCharacter.InnerUnicodeBlock; external name 'MISCELLANEOUS_SYMBOLS_AND_ARROWS';
+          fCJK_RADICALS_SUPPLEMENT: JLCharacter.InnerUnicodeBlock; external name 'CJK_RADICALS_SUPPLEMENT';
+          fKANGXI_RADICALS: JLCharacter.InnerUnicodeBlock; external name 'KANGXI_RADICALS';
+          fIDEOGRAPHIC_DESCRIPTION_CHARACTERS: JLCharacter.InnerUnicodeBlock; external name 'IDEOGRAPHIC_DESCRIPTION_CHARACTERS';
+          fCJK_SYMBOLS_AND_PUNCTUATION: JLCharacter.InnerUnicodeBlock; external name 'CJK_SYMBOLS_AND_PUNCTUATION';
+          fHIRAGANA: JLCharacter.InnerUnicodeBlock; external name 'HIRAGANA';
+          fKATAKANA: JLCharacter.InnerUnicodeBlock; external name 'KATAKANA';
+          fBOPOMOFO: JLCharacter.InnerUnicodeBlock; external name 'BOPOMOFO';
+          fHANGUL_COMPATIBILITY_JAMO: JLCharacter.InnerUnicodeBlock; external name 'HANGUL_COMPATIBILITY_JAMO';
+          fKANBUN: JLCharacter.InnerUnicodeBlock; external name 'KANBUN';
+          fBOPOMOFO_EXTENDED: JLCharacter.InnerUnicodeBlock; external name 'BOPOMOFO_EXTENDED';
+          fKATAKANA_PHONETIC_EXTENSIONS: JLCharacter.InnerUnicodeBlock; external name 'KATAKANA_PHONETIC_EXTENSIONS';
+          fENCLOSED_CJK_LETTERS_AND_MONTHS: JLCharacter.InnerUnicodeBlock; external name 'ENCLOSED_CJK_LETTERS_AND_MONTHS';
+          fCJK_COMPATIBILITY: JLCharacter.InnerUnicodeBlock; external name 'CJK_COMPATIBILITY';
+          fCJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: JLCharacter.InnerUnicodeBlock; external name 'CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A';
+          fYIJING_HEXAGRAM_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'YIJING_HEXAGRAM_SYMBOLS';
+          fCJK_UNIFIED_IDEOGRAPHS: JLCharacter.InnerUnicodeBlock; external name 'CJK_UNIFIED_IDEOGRAPHS';
+          fYI_SYLLABLES: JLCharacter.InnerUnicodeBlock; external name 'YI_SYLLABLES';
+          fYI_RADICALS: JLCharacter.InnerUnicodeBlock; external name 'YI_RADICALS';
+          fHANGUL_SYLLABLES: JLCharacter.InnerUnicodeBlock; external name 'HANGUL_SYLLABLES';
+          fHIGH_SURROGATES: JLCharacter.InnerUnicodeBlock; external name 'HIGH_SURROGATES';
+          fHIGH_PRIVATE_USE_SURROGATES: JLCharacter.InnerUnicodeBlock; external name 'HIGH_PRIVATE_USE_SURROGATES';
+          fLOW_SURROGATES: JLCharacter.InnerUnicodeBlock; external name 'LOW_SURROGATES';
+          fPRIVATE_USE_AREA: JLCharacter.InnerUnicodeBlock; external name 'PRIVATE_USE_AREA';
+          fCJK_COMPATIBILITY_IDEOGRAPHS: JLCharacter.InnerUnicodeBlock; external name 'CJK_COMPATIBILITY_IDEOGRAPHS';
+          fALPHABETIC_PRESENTATION_FORMS: JLCharacter.InnerUnicodeBlock; external name 'ALPHABETIC_PRESENTATION_FORMS';
+          fARABIC_PRESENTATION_FORMS_A: JLCharacter.InnerUnicodeBlock; external name 'ARABIC_PRESENTATION_FORMS_A';
+          fVARIATION_SELECTORS: JLCharacter.InnerUnicodeBlock; external name 'VARIATION_SELECTORS';
+          fCOMBINING_HALF_MARKS: JLCharacter.InnerUnicodeBlock; external name 'COMBINING_HALF_MARKS';
+          fCJK_COMPATIBILITY_FORMS: JLCharacter.InnerUnicodeBlock; external name 'CJK_COMPATIBILITY_FORMS';
+          fSMALL_FORM_VARIANTS: JLCharacter.InnerUnicodeBlock; external name 'SMALL_FORM_VARIANTS';
+          fARABIC_PRESENTATION_FORMS_B: JLCharacter.InnerUnicodeBlock; external name 'ARABIC_PRESENTATION_FORMS_B';
+          fHALFWIDTH_AND_FULLWIDTH_FORMS: JLCharacter.InnerUnicodeBlock; external name 'HALFWIDTH_AND_FULLWIDTH_FORMS';
+          fSPECIALS: JLCharacter.InnerUnicodeBlock; external name 'SPECIALS';
+          fLINEAR_B_SYLLABARY: JLCharacter.InnerUnicodeBlock; external name 'LINEAR_B_SYLLABARY';
+          fLINEAR_B_IDEOGRAMS: JLCharacter.InnerUnicodeBlock; external name 'LINEAR_B_IDEOGRAMS';
+          fAEGEAN_NUMBERS: JLCharacter.InnerUnicodeBlock; external name 'AEGEAN_NUMBERS';
+          fOLD_ITALIC: JLCharacter.InnerUnicodeBlock; external name 'OLD_ITALIC';
+          fGOTHIC: JLCharacter.InnerUnicodeBlock; external name 'GOTHIC';
+          fUGARITIC: JLCharacter.InnerUnicodeBlock; external name 'UGARITIC';
+          fDESERET: JLCharacter.InnerUnicodeBlock; external name 'DESERET';
+          fSHAVIAN: JLCharacter.InnerUnicodeBlock; external name 'SHAVIAN';
+          fOSMANYA: JLCharacter.InnerUnicodeBlock; external name 'OSMANYA';
+          fCYPRIOT_SYLLABARY: JLCharacter.InnerUnicodeBlock; external name 'CYPRIOT_SYLLABARY';
+          fBYZANTINE_MUSICAL_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'BYZANTINE_MUSICAL_SYMBOLS';
+          fMUSICAL_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'MUSICAL_SYMBOLS';
+          fTAI_XUAN_JING_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'TAI_XUAN_JING_SYMBOLS';
+          fMATHEMATICAL_ALPHANUMERIC_SYMBOLS: JLCharacter.InnerUnicodeBlock; external name 'MATHEMATICAL_ALPHANUMERIC_SYMBOLS';
+          fCJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: JLCharacter.InnerUnicodeBlock; external name 'CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B';
+          fCJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: JLCharacter.InnerUnicodeBlock; external name 'CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT';
+          fTAGS: JLCharacter.InnerUnicodeBlock; external name 'TAGS';
+          fVARIATION_SELECTORS_SUPPLEMENT: JLCharacter.InnerUnicodeBlock; external name 'VARIATION_SELECTORS_SUPPLEMENT';
+          fSUPPLEMENTARY_PRIVATE_USE_AREA_A: JLCharacter.InnerUnicodeBlock; external name 'SUPPLEMENTARY_PRIVATE_USE_AREA_A';
+          fSUPPLEMENTARY_PRIVATE_USE_AREA_B: JLCharacter.InnerUnicodeBlock; external name 'SUPPLEMENTARY_PRIVATE_USE_AREA_B';
+      public
+        class function forName(para1: JLString): JLCharacter.InnerUnicodeBlock; static; overload;
+        class function &of(para1: jchar): JLCharacter.InnerUnicodeBlock; static; overload;
+        class function &of(para1: jint): JLCharacter.InnerUnicodeBlock; static; overload;
+      end;
+
+  public
+    const
+      MIN_VALUE = 0;
+      MAX_VALUE = 65535;
+      MIN_RADIX = 2;
+      MAX_RADIX = 36;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    const
+      UNASSIGNED = 0;
+      UPPERCASE_LETTER = 1;
+      LOWERCASE_LETTER = 2;
+      TITLECASE_LETTER = 3;
+      MODIFIER_LETTER = 4;
+      OTHER_LETTER = 5;
+      NON_SPACING_MARK = 6;
+      ENCLOSING_MARK = 7;
+      COMBINING_SPACING_MARK = 8;
+      DECIMAL_DIGIT_NUMBER = 9;
+      LETTER_NUMBER = 10;
+      OTHER_NUMBER = 11;
+      SPACE_SEPARATOR = 12;
+      LINE_SEPARATOR = 13;
+      PARAGRAPH_SEPARATOR = 14;
+      CONTROL = 15;
+      FORMAT = 16;
+      PRIVATE_USE = 18;
+      SURROGATE = 19;
+      DASH_PUNCTUATION = 20;
+      START_PUNCTUATION = 21;
+      END_PUNCTUATION = 22;
+      CONNECTOR_PUNCTUATION = 23;
+      OTHER_PUNCTUATION = 24;
+      MATH_SYMBOL = 25;
+      CURRENCY_SYMBOL = 26;
+      MODIFIER_SYMBOL = 27;
+      OTHER_SYMBOL = 28;
+      INITIAL_QUOTE_PUNCTUATION = 29;
+      FINAL_QUOTE_PUNCTUATION = 30;
+      DIRECTIONALITY_UNDEFINED = -1;
+      DIRECTIONALITY_LEFT_TO_RIGHT = 0;
+      DIRECTIONALITY_RIGHT_TO_LEFT = 1;
+      DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;
+      DIRECTIONALITY_EUROPEAN_NUMBER = 3;
+      DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;
+      DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;
+      DIRECTIONALITY_ARABIC_NUMBER = 6;
+      DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;
+      DIRECTIONALITY_NONSPACING_MARK = 8;
+      DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;
+      DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;
+      DIRECTIONALITY_SEGMENT_SEPARATOR = 11;
+      DIRECTIONALITY_WHITESPACE = 12;
+      DIRECTIONALITY_OTHER_NEUTRALS = 13;
+      DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;
+      DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;
+      DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;
+      DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;
+      DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18;
+      MIN_HIGH_SURROGATE = 55296;
+      MAX_HIGH_SURROGATE = 56319;
+      MIN_LOW_SURROGATE = 56320;
+      MAX_LOW_SURROGATE = 57343;
+      MIN_SURROGATE = 55296;
+      MAX_SURROGATE = 57343;
+      MIN_SUPPLEMENTARY_CODE_POINT = 65536;
+      MIN_CODE_POINT = 0;
+      MAX_CODE_POINT = 1114111;
+      SIZE = 16;
+  public
+    constructor create(para1: jchar); overload;
+    function charValue(): jchar; overload; virtual;
+    function compareTo(para1: JLCharacter): jint; overload; virtual;
+    class function valueOf(para1: jchar): JLCharacter; static; overload;
+    class function isValidCodePoint(para1: jint): jboolean; static; overload;
+    class function isSupplementaryCodePoint(para1: jint): jboolean; static; overload;
+    class function isHighSurrogate(para1: jchar): jboolean; static; overload;
+    class function isLowSurrogate(para1: jchar): jboolean; static; overload;
+    class function isSurrogatePair(para1: jchar; para2: jchar): jboolean; static; overload;
+    class function charCount(para1: jint): jint; static; overload;
+    class function toCodePoint(para1: jchar; para2: jchar): jint; static; overload;
+    class function codePointAt(para1: JLCharSequence; para2: jint): jint; static; overload;
+    class function codePointAt(para1: Arr1jchar; para2: jint): jint; static; overload;
+    class function codePointAt(var para1: array of jchar; para2: jint): jint; static; overload;
+    class function codePointAt(para1: Arr1jchar; para2: jint; para3: jint): jint; static; overload;
+    class function codePointAt(var para1: array of jchar; para2: jint; para3: jint): jint; static; overload;
+    class function codePointBefore(para1: JLCharSequence; para2: jint): jint; static; overload;
+    class function codePointBefore(para1: Arr1jchar; para2: jint): jint; static; overload;
+    class function codePointBefore(var para1: array of jchar; para2: jint): jint; static; overload;
+    class function codePointBefore(para1: Arr1jchar; para2: jint; para3: jint): jint; static; overload;
+    class function codePointBefore(var para1: array of jchar; para2: jint; para3: jint): jint; static; overload;
+    class function toChars(para1: jint; para2: Arr1jchar; para3: jint): jint; static; overload;
+    class function toChars(para1: jint; var para2: array of jchar; para3: jint): jint; static; overload;
+    class function toChars(para1: jint): Arr1jchar; static; overload;
+    class function codePointCount(para1: JLCharSequence; para2: jint; para3: jint): jint; static; overload;
+    class function codePointCount(para1: Arr1jchar; para2: jint; para3: jint): jint; static; overload;
+    class function codePointCount(var para1: array of jchar; para2: jint; para3: jint): jint; static; overload;
+    class function offsetByCodePoints(para1: JLCharSequence; para2: jint; para3: jint): jint; static; overload;
+    class function offsetByCodePoints(para1: Arr1jchar; para2: jint; para3: jint; para4: jint; para5: jint): jint; static; overload;
+    class function offsetByCodePoints(var para1: array of jchar; para2: jint; para3: jint; para4: jint; para5: jint): jint; static; overload;
+    class function digit(para1: jchar; para2: jint): jint; static; overload;
+    class function digit(para1: jint; para2: jint): jint; static; overload;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    class function forDigit(para1: jint; para2: jint): jchar; static; overload;
+    class function getNumericValue(para1: jchar): jint; static; overload;
+    class function getNumericValue(para1: jint): jint; static; overload;
+    class function getType(para1: jchar): jint; static; overload;
+    class function getType(para1: jint): jint; static; overload;
+    class function getDirectionality(para1: jchar): jbyte; static; overload;
+    class function getDirectionality(para1: jint): jbyte; static; overload;
+    class function isMirrored(para1: jchar): jboolean; static; overload;
+    class function isMirrored(para1: jint): jboolean; static; overload;
+    function hashCode(): jint; overload; virtual;
+    class function isDefined(para1: jchar): jboolean; static; overload;
+    class function isDefined(para1: jint): jboolean; static; overload;
+    class function isDigit(para1: jchar): jboolean; static; overload;
+    class function isDigit(para1: jint): jboolean; static; overload;
+    class function isIdentifierIgnorable(para1: jchar): jboolean; static; overload;
+    class function isIdentifierIgnorable(para1: jint): jboolean; static; overload;
+    class function isISOControl(para1: jchar): jboolean; static; overload;
+    class function isISOControl(para1: jint): jboolean; static; overload;
+    class function isJavaIdentifierPart(para1: jchar): jboolean; static; overload;
+    class function isJavaIdentifierPart(para1: jint): jboolean; static; overload;
+    class function isJavaIdentifierStart(para1: jchar): jboolean; static; overload;
+    class function isJavaIdentifierStart(para1: jint): jboolean; static; overload;
+    class function isJavaLetter(para1: jchar): jboolean; static; overload;
+    class function isJavaLetterOrDigit(para1: jchar): jboolean; static; overload;
+    class function isLetter(para1: jchar): jboolean; static; overload;
+    class function isLetter(para1: jint): jboolean; static; overload;
+    class function isLetterOrDigit(para1: jchar): jboolean; static; overload;
+    class function isLetterOrDigit(para1: jint): jboolean; static; overload;
+    class function isLowerCase(para1: jchar): jboolean; static; overload;
+    class function isLowerCase(para1: jint): jboolean; static; overload;
+    class function isSpace(para1: jchar): jboolean; static; overload;
+    class function isSpaceChar(para1: jchar): jboolean; static; overload;
+    class function isSpaceChar(para1: jint): jboolean; static; overload;
+    class function isTitleCase(para1: jchar): jboolean; static; overload;
+    class function isTitleCase(para1: jint): jboolean; static; overload;
+    class function isUnicodeIdentifierPart(para1: jchar): jboolean; static; overload;
+    class function isUnicodeIdentifierPart(para1: jint): jboolean; static; overload;
+    class function isUnicodeIdentifierStart(para1: jchar): jboolean; static; overload;
+    class function isUnicodeIdentifierStart(para1: jint): jboolean; static; overload;
+    class function isUpperCase(para1: jchar): jboolean; static; overload;
+    class function isUpperCase(para1: jint): jboolean; static; overload;
+    class function isWhitespace(para1: jchar): jboolean; static; overload;
+    class function isWhitespace(para1: jint): jboolean; static; overload;
+    class function reverseBytes(para1: jchar): jchar; static; overload;
+    class function toLowerCase(para1: jchar): jchar; static; overload;
+    class function toLowerCase(para1: jint): jint; static; overload;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jchar): JLString; static; overload;
+    class function toTitleCase(para1: jchar): jchar; static; overload;
+    class function toTitleCase(para1: jint): jint; static; overload;
+    class function toUpperCase(para1: jchar): jchar; static; overload;
+    class function toUpperCase(para1: jint): jint; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLEnum = class abstract external 'java.lang' name 'Enum' (JLObject, JISerializable, JLComparable)
+  strict protected
+    constructor create(para1: JLString; para2: jint); overload;
+  public
+    function name(): JLString; overload; virtual; final;
+    function ordinal(): jint; overload; virtual; final;
+    function toString(): JLString; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual; final;
+    function hashCode(): jint; overload; virtual; final;
+  strict protected
+    function clone(): JLObject; overload; virtual; final;  // throws java.lang.CloneNotSupportedException
+  public
+    function compareTo(para1: JLEnum): jint; overload; virtual; final;
+    function getDeclaringClass(): JLClass; overload; virtual; final;
+    class function valueOf(para1: JLClass; para2: JLString): JLEnum; static; overload;
+  strict protected
+    procedure finalize(); overload; virtual; final;
+  public
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLString = class sealed external 'java.lang' name 'String' (JLObject, JISerializable, JLComparable, JLCharSequence)
+  public
+    final class var
+      fCASE_INSENSITIVE_ORDER: JUComparator; external name 'CASE_INSENSITIVE_ORDER';
+  public
+    constructor create(); overload;
+    constructor create(para1: Arr1jbyte); overload;
+    constructor create(const para1: array of jbyte); overload;
+    constructor create(para1: Arr1jbyte; para2: jint); overload;
+    constructor create(const para1: array of jbyte; para2: jint); overload;
+    constructor create(para1: Arr1jbyte; para2: jint; para3: jint); overload;
+    constructor create(const para1: array of jbyte; para2: jint; para3: jint); overload;
+    constructor create(para1: Arr1jbyte; para2: jint; para3: jint; para4: jint); overload;
+    constructor create(const para1: array of jbyte; para2: jint; para3: jint; para4: jint); overload;
+    constructor create(para1: Arr1jbyte; para2: jint; para3: jint; para4: JLString); overload;  // throws java.io.UnsupportedEncodingException
+    constructor create(const para1: array of jbyte; para2: jint; para3: jint; para4: JLString); overload;  // throws java.io.UnsupportedEncodingException
+    constructor create(para1: Arr1jbyte; para2: JLString); overload;  // throws java.io.UnsupportedEncodingException
+    constructor create(const para1: array of jbyte; para2: JLString); overload;  // throws java.io.UnsupportedEncodingException
+    constructor create(para1: Arr1jbyte; para2: jint; para3: jint; para4: JNCCharset); overload;
+    constructor create(const para1: array of jbyte; para2: jint; para3: jint; para4: JNCCharset); overload;
+    constructor create(para1: Arr1jbyte; para2: JNCCharset); overload;
+    constructor create(const para1: array of jbyte; para2: JNCCharset); overload;
+    constructor create(para1: Arr1jchar); overload;
+    constructor create(const para1: array of jchar); overload;
+    constructor create(para1: Arr1jchar; para2: jint; para3: jint); overload;
+    constructor create(const para1: array of jchar; para2: jint; para3: jint); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLStringBuffer); overload;
+    constructor create(para1: Arr1jint; para2: jint; para3: jint); overload;
+    constructor create(const para1: array of jint; para2: jint; para3: jint); overload;
+    constructor create(para1: JLStringBuilder); overload;
+    function charAt(para1: jint): jchar; overload; virtual;
+    function compareTo(para1: JLString): jint; overload; virtual;
+    function compareToIgnoreCase(para1: JLString): jint; overload; virtual;
+    function concat(para1: JLString): JLString; overload; virtual;
+    class function copyValueOf(para1: Arr1jchar): JLString; static; overload;
+    class function copyValueOf(var para1: array of jchar): JLString; static; overload;
+    class function copyValueOf(para1: Arr1jchar; para2: jint; para3: jint): JLString; static; overload;
+    class function copyValueOf(var para1: array of jchar; para2: jint; para3: jint): JLString; static; overload;
+    function endsWith(para1: JLString): jboolean; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function equalsIgnoreCase(para1: JLString): jboolean; overload; virtual;
+    procedure getBytes(para1: jint; para2: jint; para3: Arr1jbyte; para4: jint); overload; virtual;
+    procedure getBytes(para1: jint; para2: jint; var para3: array of jbyte; para4: jint); overload; virtual;
+    function getBytes(): Arr1jbyte; overload; virtual;
+    function getBytes(para1: JLString): Arr1jbyte; overload; virtual;  // throws java.io.UnsupportedEncodingException
+    function getBytes(para1: JNCCharset): Arr1jbyte; overload; virtual;
+    procedure getChars(para1: jint; para2: jint; para3: Arr1jchar; para4: jint); overload; virtual;
+    procedure getChars(para1: jint; para2: jint; var para3: array of jchar; para4: jint); overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function indexOf(para1: jint): jint; overload; virtual;
+    function indexOf(para1: jint; para2: jint): jint; overload; virtual;
+    function indexOf(para1: JLString): jint; overload; virtual;
+    function indexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function intern(): JLString; overload; virtual;
+    function isEmpty(): jboolean; overload; virtual;
+    function lastIndexOf(para1: jint): jint; overload; virtual;
+    function lastIndexOf(para1: jint; para2: jint): jint; overload; virtual;
+    function lastIndexOf(para1: JLString): jint; overload; virtual;
+    function lastIndexOf(para1: JLString; para2: jint): jint; overload; virtual;
+    function length(): jint; overload; virtual;
+    function regionMatches(para1: jint; para2: JLString; para3: jint; para4: jint): jboolean; overload; virtual;
+    function regionMatches(para1: jboolean; para2: jint; para3: JLString; para4: jint; para5: jint): jboolean; overload; virtual;
+    function replace(para1: jchar; para2: jchar): JLString; overload; virtual;
+    function replace(para1: JLCharSequence; para2: JLCharSequence): JLString; overload; virtual;
+    function startsWith(para1: JLString): jboolean; overload; virtual;
+    function startsWith(para1: JLString; para2: jint): jboolean; overload; virtual;
+    function substring(para1: jint): JLString; overload; virtual;
+    function substring(para1: jint; para2: jint): JLString; overload; virtual;
+    function toCharArray(): Arr1jchar; overload; virtual;
+    function toLowerCase(): JLString; overload; virtual;
+    function toLowerCase(para1: JULocale): JLString; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function toUpperCase(): JLString; overload; virtual;
+    function toUpperCase(para1: JULocale): JLString; overload; virtual;
+    function trim(): JLString; overload; virtual;
+    class function valueOf(para1: Arr1jchar): JLString; static; overload;
+    class function valueOf(var para1: array of jchar): JLString; static; overload;
+    class function valueOf(para1: Arr1jchar; para2: jint; para3: jint): JLString; static; overload;
+    class function valueOf(var para1: array of jchar; para2: jint; para3: jint): JLString; static; overload;
+    class function valueOf(para1: jchar): JLString; static; overload;
+    class function valueOf(para1: jdouble): JLString; static; overload;
+    class function valueOf(para1: jfloat): JLString; static; overload;
+    class function valueOf(para1: jint): JLString; static; overload;
+    class function valueOf(para1: jlong): JLString; static; overload;
+    class function valueOf(para1: JLObject): JLString; static; overload;
+    class function valueOf(para1: jboolean): JLString; static; overload;
+    function contentEquals(para1: JLStringBuffer): jboolean; overload; virtual;
+    function contentEquals(para1: JLCharSequence): jboolean; overload; virtual;
+    function matches(para1: JLString): jboolean; overload; virtual;
+    function replaceAll(para1: JLString; para2: JLString): JLString; overload; virtual;
+    function replaceFirst(para1: JLString; para2: JLString): JLString; overload; virtual;
+    function split(para1: JLString): Arr1JLString; overload; virtual;
+    function split(para1: JLString; para2: jint): Arr1JLString; overload; virtual;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload; virtual;
+    function codePointAt(para1: jint): jint; overload; virtual;
+    function codePointBefore(para1: jint): jint; overload; virtual;
+    function codePointCount(para1: jint; para2: jint): jint; overload; virtual;
+    function contains(para1: JLCharSequence): jboolean; overload; virtual;
+    function offsetByCodePoints(para1: jint; para2: jint): jint; overload; virtual;
+    class function format(para1: JLString; para2: Arr1JLObject): JLString; static; overload;
+    class function format(para1: JLString; const para2: array of JLObject): JLString; static; overload;
+    class function format(para1: JULocale; para2: JLString; para3: Arr1JLObject): JLString; static; overload;
+    class function format(para1: JULocale; para2: JLString; const para3: array of JLObject): JLString; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JNCCharset = class abstract external 'java.nio.charset' name 'Charset' (JLObject, JLComparable)
+  strict protected
+    constructor create(para1: JLString; para2: Arr1JLString); overload;
+    constructor create(para1: JLString; const para2: array of JLString); overload;
+  public
+    class function availableCharsets(): JUSortedMap; static; overload;
+    class function forName(para1: JLString): JNCCharset; static; overload;
+    class function isSupported(para1: JLString): jboolean; static; overload;
+    function contains(para1: JNCCharset): jboolean; overload; virtual; abstract;
+    function newEncoder(): JNCCharsetEncoder; overload; virtual; abstract;
+    function newDecoder(): JNCCharsetDecoder; overload; virtual; abstract;
+    function name(): JLString; overload; virtual; final;
+    function aliases(): JUSet; overload; virtual; final;
+    function displayName(): JLString; overload; virtual;
+    function displayName(para1: JULocale): JLString; overload; virtual;
+    function isRegistered(): jboolean; overload; virtual; final;
+    function canEncode(): jboolean; overload; virtual;
+    function encode(para1: JNCharBuffer): JNByteBuffer; overload; virtual; final;
+    function encode(para1: JLString): JNByteBuffer; overload; virtual; final;
+    function decode(para1: JNByteBuffer): JNCharBuffer; overload; virtual; final;
+    function compareTo(para1: JNCCharset): jint; overload; virtual; final;
+    function equals(para1: JLObject): jboolean; overload; virtual; final;
+    function hashCode(): jint; overload; virtual; final;
+    function toString(): JLString; overload; virtual; final;
+    class function defaultCharset(): JNCCharset; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JUCalendar = class abstract external 'java.util' name 'Calendar' (JLObject, JISerializable, JLCloneable, JLComparable)
+  strict protected
+    var
+      fareFieldsSet: jboolean; external name 'areFieldsSet';
+      ffields: Arr1jint; external name 'fields';
+      fisSet: Arr1jboolean; external name 'isSet';
+      fisTimeSet: jboolean; external name 'isTimeSet';
+      ftime: jlong; external name 'time';
+  public
+    const
+      JANUARY = 0;
+      FEBRUARY = 1;
+      MARCH = 2;
+      APRIL = 3;
+      MAY = 4;
+      JUNE = 5;
+      JULY = 6;
+      AUGUST = 7;
+      SEPTEMBER = 8;
+      OCTOBER = 9;
+      NOVEMBER = 10;
+      DECEMBER = 11;
+      UNDECIMBER = 12;
+      SUNDAY = 1;
+      MONDAY = 2;
+      TUESDAY = 3;
+      WEDNESDAY = 4;
+      THURSDAY = 5;
+      FRIDAY = 6;
+      SATURDAY = 7;
+      ERA = 0;
+      YEAR = 1;
+      MONTH = 2;
+      WEEK_OF_YEAR = 3;
+      WEEK_OF_MONTH = 4;
+      DATE = 5;
+      DAY_OF_MONTH = 5;
+      DAY_OF_YEAR = 6;
+      DAY_OF_WEEK = 7;
+      DAY_OF_WEEK_IN_MONTH = 8;
+      AM_PM = 9;
+      HOUR = 10;
+      HOUR_OF_DAY = 11;
+      MINUTE = 12;
+      SECOND = 13;
+      MILLISECOND = 14;
+      ZONE_OFFSET = 15;
+      DST_OFFSET = 16;
+      FIELD_COUNT = 17;
+      AM = 0;
+      PM = 1;
+      ALL_STYLES = 0;
+      SHORT = 1;
+      LONG = 2;
+  strict protected
+    constructor create(); overload;
+    constructor create(para1: JUTimeZone; para2: JULocale); overload;
+  public
+    procedure add(para1: jint; para2: jint); overload; virtual; abstract;
+    function after(para1: JLObject): jboolean; overload; virtual;
+    function before(para1: JLObject): jboolean; overload; virtual;
+    procedure clear(); overload; virtual; final;
+    procedure clear(para1: jint); overload; virtual; final;
+    function clone(): JLObject; overload; virtual;
+  strict protected
+    procedure complete(); overload; virtual;
+    procedure computeFields(); overload; virtual; abstract;
+    procedure computeTime(); overload; virtual; abstract;
+  public
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function get(para1: jint): jint; overload; virtual;
+    function getActualMaximum(para1: jint): jint; overload; virtual;
+    function getActualMinimum(para1: jint): jint; overload; virtual;
+    class function getAvailableLocales(): Arr1JULocale; static; overload;
+    function getFirstDayOfWeek(): jint; overload; virtual;
+    function getGreatestMinimum(para1: jint): jint; overload; virtual; abstract;
+    class function getInstance(): JUCalendar; static; overload;
+    class function getInstance(para1: JULocale): JUCalendar; static; overload;
+    class function getInstance(para1: JUTimeZone): JUCalendar; static; overload;
+    class function getInstance(para1: JUTimeZone; para2: JULocale): JUCalendar; static; overload;
+    function getLeastMaximum(para1: jint): jint; overload; virtual; abstract;
+    function getMaximum(para1: jint): jint; overload; virtual; abstract;
+    function getMinimalDaysInFirstWeek(): jint; overload; virtual;
+    function getMinimum(para1: jint): jint; overload; virtual; abstract;
+    function getTime(): JUDate; overload; virtual; final;
+    function getTimeInMillis(): jlong; overload; virtual;
+    function getTimeZone(): JUTimeZone; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+  strict protected
+    function internalGet(para1: jint): jint; overload; virtual; final;
+  public
+    function isLenient(): jboolean; overload; virtual;
+    function isSet(para1: jint): jboolean; overload; virtual; final;
+    procedure roll(para1: jint; para2: jint); overload; virtual;
+    procedure roll(para1: jint; para2: jboolean); overload; virtual; abstract;
+    procedure &set(para1: jint; para2: jint); overload; virtual;
+    procedure &set(para1: jint; para2: jint; para3: jint); overload; virtual; final;
+    procedure &set(para1: jint; para2: jint; para3: jint; para4: jint; para5: jint); overload; virtual; final;
+    procedure &set(para1: jint; para2: jint; para3: jint; para4: jint; para5: jint; para6: jint); overload; virtual; final;
+    procedure setFirstDayOfWeek(para1: jint); overload; virtual;
+    procedure setLenient(para1: jboolean); overload; virtual;
+    procedure setMinimalDaysInFirstWeek(para1: jint); overload; virtual;
+    procedure setTime(para1: JUDate); overload; virtual; final;
+    procedure setTimeInMillis(para1: jlong); overload; virtual;
+    procedure setTimeZone(para1: JUTimeZone); overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function compareTo(para1: JUCalendar): jint; overload; virtual;
+    function getDisplayName(para1: jint; para2: jint; para3: JULocale): JLString; overload; virtual;
+    function getDisplayNames(para1: jint; para2: jint; para3: JULocale): JUMap; overload; virtual;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JUCollection = interface external 'java.util' name 'Collection' (JLIterable)
+    function add(para1: JLObject): jboolean; overload;
+    function addAll(para1: JUCollection): jboolean; overload;
+    procedure clear(); overload;
+    function contains(para1: JLObject): jboolean; overload;
+    function containsAll(para1: JUCollection): jboolean; overload;
+    function equals(para1: JLObject): jboolean; overload;
+    function hashCode(): jint; overload;
+    function isEmpty(): jboolean; overload;
+    function iterator(): JUIterator; overload;
+    function remove(para1: JLObject): jboolean; overload;
+    function removeAll(para1: JUCollection): jboolean; overload;
+    function retainAll(para1: JUCollection): jboolean; overload;
+    function size(): jint; overload;
+    function toArray(): Arr1JLObject; overload;
+    function toArray(para1: Arr1JLObject): Arr1JLObject; overload;
+    function toArray(var para1: array of JLObject): Arr1JLObject; overload;
+  end;
+
+  JLRAccessibleObject = class external 'java.lang.reflect' name 'AccessibleObject' (JLObject, JLRAnnotatedElement)
+  strict protected
+    constructor create(); overload;
+  public
+    class procedure setAccessible(para1: Arr1JLRAccessibleObject; para2: jboolean); static; overload;
+    class procedure setAccessible(var para1: array of JLRAccessibleObject; para2: jboolean); static; overload;
+    function isAccessible(): jboolean; overload; virtual;
+    procedure setAccessible(para1: jboolean); overload; virtual;
+    function isAnnotationPresent(para1: JLClass): jboolean; overload; virtual;
+    function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getAnnotation(para1: JLClass): JLAAnnotation; overload; virtual;
+  end;
+
+  JLClass = class sealed external 'java.lang' name 'Class' (JLObject, JISerializable, JLRAnnotatedElement, JLRGenericDeclaration, JLRType)
+  public
+    class function forName(para1: JLString): JLClass; static; overload;  // throws java.lang.ClassNotFoundException
+    class function forName(para1: JLString; para2: jboolean; para3: JLClassLoader): JLClass; static; overload;  // throws java.lang.ClassNotFoundException
+    function getClasses(): Arr1JLClass; overload; virtual;
+    function getAnnotation(para1: JLClass): JLAAnnotation; overload; virtual;
+    function getAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getCanonicalName(): JLString; overload; virtual;
+    function getClassLoader(): JLClassLoader; overload; virtual;
+    function getComponentType(): JLClass; overload; virtual;
+    function getConstructor(para1: Arr1JLClass): JLRConstructor; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getConstructor(const para1: array of JLClass): JLRConstructor; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getConstructors(): Arr1JLRConstructor; overload; virtual;
+    function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getDeclaredClasses(): Arr1JLClass; overload; virtual;
+    function getDeclaredConstructor(para1: Arr1JLClass): JLRConstructor; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getDeclaredConstructor(const para1: array of JLClass): JLRConstructor; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getDeclaredConstructors(): Arr1JLRConstructor; overload; virtual;
+    function getDeclaredField(para1: JLString): JLRField; overload; virtual;  // throws java.lang.NoSuchFieldException
+    function getDeclaredFields(): Arr1JLRField; overload; virtual;
+    function getDeclaredMethod(para1: JLString; para2: Arr1JLClass): JLRMethod; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getDeclaredMethod(para1: JLString; const para2: array of JLClass): JLRMethod; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getDeclaredMethods(): Arr1JLRMethod; overload; virtual;
+    function getDeclaringClass(): JLClass; overload; virtual;
+    function getEnclosingClass(): JLClass; overload; virtual;
+    function getEnclosingConstructor(): JLRConstructor; overload; virtual;
+    function getEnclosingMethod(): JLRMethod; overload; virtual;
+    function getEnumConstants(): Arr1JLObject; overload; virtual;
+    function getField(para1: JLString): JLRField; overload; virtual;  // throws java.lang.NoSuchFieldException
+    function getFields(): Arr1JLRField; overload; virtual;
+    function getGenericInterfaces(): Arr1JLRType; overload; virtual;
+    function getGenericSuperclass(): JLRType; overload; virtual;
+    function getInterfaces(): Arr1JLClass; overload; virtual;
+    function getMethod(para1: JLString; para2: Arr1JLClass): JLRMethod; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getMethod(para1: JLString; const para2: array of JLClass): JLRMethod; overload; virtual;  // throws java.lang.NoSuchMethodException
+    function getMethods(): Arr1JLRMethod; overload; virtual;
+    function getModifiers(): jint; overload; virtual;
+    function getName(): JLString; overload; virtual;
+    function getSimpleName(): JLString; overload; virtual;
+    function getProtectionDomain(): JSProtectionDomain; overload; virtual;
+    function getResource(para1: JLString): JNURL; overload; virtual;
+    function getResourceAsStream(para1: JLString): JIInputStream; overload; virtual;
+    function getSigners(): Arr1JLObject; overload; virtual;
+    function getSuperclass(): JLClass; overload; virtual;
+    function getTypeParameters(): Arr1JLRTypeVariable; overload; virtual;
+    function isAnnotation(): jboolean; overload; virtual;
+    function isAnnotationPresent(para1: JLClass): jboolean; overload; virtual;
+    function isAnonymousClass(): jboolean; overload; virtual;
+    function isArray(): jboolean; overload; virtual;
+    function isAssignableFrom(para1: JLClass): jboolean; overload; virtual;
+    function isEnum(): jboolean; overload; virtual;
+    function isInstance(para1: JLObject): jboolean; overload; virtual;
+    function isInterface(): jboolean; overload; virtual;
+    function isLocalClass(): jboolean; overload; virtual;
+    function isMemberClass(): jboolean; overload; virtual;
+    function isPrimitive(): jboolean; overload; virtual;
+    function isSynthetic(): jboolean; overload; virtual;
+    function newInstance(): JLObject; overload; virtual;  // throws java.lang.InstantiationException, java.lang.IllegalAccessException
+    function toString(): JLString; overload; virtual;
+    function getPackage(): JLPackage; overload; virtual;
+    function desiredAssertionStatus(): jboolean; overload; virtual;
+    function asSubclass(para1: JLClass): JLClass; overload; virtual;
+    function cast(para1: JLObject): JLObject; overload; virtual;
+  end;
+
+  JNByteBuffer = class abstract external 'java.nio' name 'ByteBuffer' (JNBuffer, JLComparable)
+  public
+    class function allocate(para1: jint): JNByteBuffer; static; overload;
+    class function allocateDirect(para1: jint): JNByteBuffer; static; overload;
+    class function wrap(para1: Arr1jbyte): JNByteBuffer; static; overload;
+    class function wrap(var para1: array of jbyte): JNByteBuffer; static; overload;
+    class function wrap(para1: Arr1jbyte; para2: jint; para3: jint): JNByteBuffer; static; overload;
+    class function wrap(var para1: array of jbyte; para2: jint; para3: jint): JNByteBuffer; static; overload;
+    function &array(): Arr1jbyte; overload; virtual; final;
+    function arrayOffset(): jint; overload; virtual; final;
+    function asCharBuffer(): JNCharBuffer; overload; virtual; abstract;
+    function asDoubleBuffer(): JNDoubleBuffer; overload; virtual; abstract;
+    function asFloatBuffer(): JNFloatBuffer; overload; virtual; abstract;
+    function asIntBuffer(): JNIntBuffer; overload; virtual; abstract;
+    function asLongBuffer(): JNLongBuffer; overload; virtual; abstract;
+    function asReadOnlyBuffer(): JNByteBuffer; overload; virtual; abstract;
+    function asShortBuffer(): JNShortBuffer; overload; virtual; abstract;
+    function compact(): JNByteBuffer; overload; virtual; abstract;
+    function compareTo(para1: JNByteBuffer): jint; overload; virtual;
+    function duplicate(): JNByteBuffer; overload; virtual; abstract;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function get(): jbyte; overload; virtual; abstract;
+    function get(para1: Arr1jbyte): JNByteBuffer; overload; virtual;
+    function get(var para1: array of jbyte): JNByteBuffer; overload; virtual;
+    function get(para1: Arr1jbyte; para2: jint; para3: jint): JNByteBuffer; overload; virtual;
+    function get(var para1: array of jbyte; para2: jint; para3: jint): JNByteBuffer; overload; virtual;
+    function get(para1: jint): jbyte; overload; virtual; abstract;
+    function getChar(): jchar; overload; virtual; abstract;
+    function getChar(para1: jint): jchar; overload; virtual; abstract;
+    function getDouble(): jdouble; overload; virtual; abstract;
+    function getDouble(para1: jint): jdouble; overload; virtual; abstract;
+    function getFloat(): jfloat; overload; virtual; abstract;
+    function getFloat(para1: jint): jfloat; overload; virtual; abstract;
+    function getInt(): jint; overload; virtual; abstract;
+    function getInt(para1: jint): jint; overload; virtual; abstract;
+    function getLong(): jlong; overload; virtual; abstract;
+    function getLong(para1: jint): jlong; overload; virtual; abstract;
+    function getShort(): jshort; overload; virtual; abstract;
+    function getShort(para1: jint): jshort; overload; virtual; abstract;
+    function hasArray(): jboolean; overload; virtual; final;
+    function hashCode(): jint; overload; virtual;
+    function isDirect(): jboolean; overload; virtual; abstract;
+    function order(): JNByteOrder; overload; virtual; final;
+    function order(para1: JNByteOrder): JNByteBuffer; overload; virtual; final;
+    function put(para1: jbyte): JNByteBuffer; overload; virtual; abstract;
+    function put(para1: Arr1jbyte): JNByteBuffer; overload; virtual; final;
+    function put(var para1: array of jbyte): JNByteBuffer; overload; virtual; final;
+    function put(para1: Arr1jbyte; para2: jint; para3: jint): JNByteBuffer; overload; virtual;
+    function put(var para1: array of jbyte; para2: jint; para3: jint): JNByteBuffer; overload; virtual;
+    function put(para1: JNByteBuffer): JNByteBuffer; overload; virtual;
+    function put(para1: jint; para2: jbyte): JNByteBuffer; overload; virtual; abstract;
+    function putChar(para1: jchar): JNByteBuffer; overload; virtual; abstract;
+    function putChar(para1: jint; para2: jchar): JNByteBuffer; overload; virtual; abstract;
+    function putDouble(para1: jdouble): JNByteBuffer; overload; virtual; abstract;
+    function putDouble(para1: jint; para2: jdouble): JNByteBuffer; overload; virtual; abstract;
+    function putFloat(para1: jfloat): JNByteBuffer; overload; virtual; abstract;
+    function putFloat(para1: jint; para2: jfloat): JNByteBuffer; overload; virtual; abstract;
+    function putInt(para1: jint): JNByteBuffer; overload; virtual; abstract;
+    function putInt(para1: jint; para2: jint): JNByteBuffer; overload; virtual; abstract;
+    function putLong(para1: jlong): JNByteBuffer; overload; virtual; abstract;
+    function putLong(para1: jint; para2: jlong): JNByteBuffer; overload; virtual; abstract;
+    function putShort(para1: jshort): JNByteBuffer; overload; virtual; abstract;
+    function putShort(para1: jint; para2: jshort): JNByteBuffer; overload; virtual; abstract;
+    function slice(): JNByteBuffer; overload; virtual; abstract;
+    function &array(): JLObject; overload; virtual;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JNCharBuffer = class abstract external 'java.nio' name 'CharBuffer' (JNBuffer, JLComparable, JLCharSequence, JLAppendable, JLReadable)
+  public
+    class function allocate(para1: jint): JNCharBuffer; static; overload;
+    class function wrap(para1: Arr1jchar): JNCharBuffer; static; overload;
+    class function wrap(var para1: array of jchar): JNCharBuffer; static; overload;
+    class function wrap(para1: Arr1jchar; para2: jint; para3: jint): JNCharBuffer; static; overload;
+    class function wrap(var para1: array of jchar; para2: jint; para3: jint): JNCharBuffer; static; overload;
+    class function wrap(para1: JLCharSequence): JNCharBuffer; static; overload;
+    class function wrap(para1: JLCharSequence; para2: jint; para3: jint): JNCharBuffer; static; overload;
+    function &array(): Arr1jchar; overload; virtual; final;
+    function arrayOffset(): jint; overload; virtual; final;
+    function asReadOnlyBuffer(): JNCharBuffer; overload; virtual; abstract;
+    function charAt(para1: jint): jchar; overload; virtual; final;
+    function compact(): JNCharBuffer; overload; virtual; abstract;
+    function compareTo(para1: JNCharBuffer): jint; overload; virtual;
+    function duplicate(): JNCharBuffer; overload; virtual; abstract;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function get(): jchar; overload; virtual; abstract;
+    function get(para1: Arr1jchar): JNCharBuffer; overload; virtual;
+    function get(var para1: array of jchar): JNCharBuffer; overload; virtual;
+    function get(para1: Arr1jchar; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function get(var para1: array of jchar; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function get(para1: jint): jchar; overload; virtual; abstract;
+    function hasArray(): jboolean; overload; virtual; final;
+    function hashCode(): jint; overload; virtual;
+    function isDirect(): jboolean; overload; virtual; abstract;
+    function length(): jint; overload; virtual; final;
+    function order(): JNByteOrder; overload; virtual; abstract;
+    function put(para1: jchar): JNCharBuffer; overload; virtual; abstract;
+    function put(para1: Arr1jchar): JNCharBuffer; overload; virtual; final;
+    function put(var para1: array of jchar): JNCharBuffer; overload; virtual; final;
+    function put(para1: Arr1jchar; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function put(var para1: array of jchar; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function put(para1: JNCharBuffer): JNCharBuffer; overload; virtual;
+    function put(para1: jint; para2: jchar): JNCharBuffer; overload; virtual; abstract;
+    function put(para1: JLString): JNCharBuffer; overload; virtual; final;
+    function put(para1: JLString; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function slice(): JNCharBuffer; overload; virtual; abstract;
+    function subSequence(para1: jint; para2: jint): JLCharSequence; overload; virtual; abstract;
+    function toString(): JLString; overload; virtual;
+    function append(para1: jchar): JNCharBuffer; overload; virtual;
+    function append(para1: JLCharSequence): JNCharBuffer; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JNCharBuffer; overload; virtual;
+    function read(para1: JNCharBuffer): jint; overload; virtual;  // throws java.io.IOException
+    function &array(): JLObject; overload; virtual;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+    function append(para1: JLCharSequence; para2: jint; para3: jint): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: JLCharSequence): JLAppendable; overload; virtual;  // throws java.io.IOException
+    function append(para1: jchar): JLAppendable; overload; virtual;  // throws java.io.IOException
+  end;
+
+  JTCollator = class abstract external 'java.text' name 'Collator' (JLObject, JUComparator, JLCloneable)
+  public
+    const
+      NO_DECOMPOSITION = 0;
+      CANONICAL_DECOMPOSITION = 1;
+      FULL_DECOMPOSITION = 2;
+      PRIMARY = 0;
+      SECONDARY = 1;
+      TERTIARY = 2;
+      IDENTICAL = 3;
+  strict protected
+    constructor create(); overload;
+  public
+    function clone(): JLObject; overload; virtual;
+    function compare(para1: JLObject; para2: JLObject): jint; overload; virtual;
+    function compare(para1: JLString; para2: JLString): jint; overload; virtual; abstract;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function equals(para1: JLString; para2: JLString): jboolean; overload; virtual;
+    class function getAvailableLocales(): Arr1JULocale; static; overload;
+    function getCollationKey(para1: JLString): JTCollationKey; overload; virtual; abstract;
+    function getDecomposition(): jint; overload; virtual;
+    class function getInstance(): JTCollator; static; overload;
+    class function getInstance(para1: JULocale): JTCollator; static; overload;
+    function getStrength(): jint; overload; virtual;
+    function hashCode(): jint; overload; virtual; abstract;
+    procedure setDecomposition(para1: jint); overload; virtual;
+    procedure setStrength(para1: jint); overload; virtual;
+  end;
+
+  JUAbstractMap = class abstract external 'java.util' name 'AbstractMap' (JLObject, JUMap)
+  public
+    type
+      InnerSimpleEntry = class;
+      Arr1InnerSimpleEntry = array of InnerSimpleEntry;
+      Arr2InnerSimpleEntry = array of Arr1InnerSimpleEntry;
+      Arr3InnerSimpleEntry = array of Arr2InnerSimpleEntry;
+      InnerSimpleImmutableEntry = class;
+      Arr1InnerSimpleImmutableEntry = array of InnerSimpleImmutableEntry;
+      Arr2InnerSimpleImmutableEntry = array of Arr1InnerSimpleImmutableEntry;
+      Arr3InnerSimpleImmutableEntry = array of Arr2InnerSimpleImmutableEntry;
+      InnerSimpleEntry = class external 'java.util' name 'SimpleEntry' (JLObject, JUMap.InnerEntry, JISerializable)
+      public
+        constructor create(para1: JLObject; para2: JLObject); overload;
+        constructor create(para1: JUMap.InnerEntry); overload;
+        function getKey(): JLObject; overload; virtual;
+        function getValue(): JLObject; overload; virtual;
+        function setValue(para1: JLObject): JLObject; overload; virtual;
+        function equals(para1: JLObject): jboolean; overload; virtual;
+        function hashCode(): jint; overload; virtual;
+        function toString(): JLString; overload; virtual;
+      end;
+
+      InnerSimpleImmutableEntry = class external 'java.util' name 'SimpleImmutableEntry' (JLObject, JUMap.InnerEntry, JISerializable)
+      public
+        constructor create(para1: JLObject; para2: JLObject); overload;
+        constructor create(para1: JUMap.InnerEntry); overload;
+        function getKey(): JLObject; overload; virtual;
+        function getValue(): JLObject; overload; virtual;
+        function setValue(para1: JLObject): JLObject; overload; virtual;
+        function equals(para1: JLObject): jboolean; overload; virtual;
+        function hashCode(): jint; overload; virtual;
+        function toString(): JLString; overload; virtual;
+      end;
+
+  strict protected
+    constructor create(); overload;
+  public
+    procedure clear(); overload; virtual;
+    function containsKey(para1: JLObject): jboolean; overload; virtual;
+    function containsValue(para1: JLObject): jboolean; overload; virtual;
+    function entrySet(): JUSet; overload; virtual; abstract;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function get(para1: JLObject): JLObject; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function isEmpty(): jboolean; overload; virtual;
+    function keySet(): JUSet; overload; virtual;
+    function put(para1: JLObject; para2: JLObject): JLObject; overload; virtual;
+    procedure putAll(para1: JUMap); overload; virtual;
+    function remove(para1: JLObject): JLObject; overload; virtual;
+    function size(): jint; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function values(): JUCollection; overload; virtual;
+  strict protected
+    function clone(): JLObject; overload; virtual;  // throws java.lang.CloneNotSupportedException
+  end;
+
+  JLByte = class sealed external 'java.lang' name 'Byte' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = 127;
+      MIN_VALUE = -128;
+      SIZE = 8;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    constructor create(para1: jbyte); overload;
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    function byteValue(): jbyte; overload; virtual;
+    function compareTo(para1: JLByte): jint; overload; virtual;
+    class function decode(para1: JLString): JLByte; static; overload;  // throws java.lang.NumberFormatException
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function longValue(): jlong; overload; virtual;
+    class function parseByte(para1: JLString): jbyte; static; overload;  // throws java.lang.NumberFormatException
+    class function parseByte(para1: JLString; para2: jint): jbyte; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jbyte): JLString; static; overload;
+    class function valueOf(para1: JLString): JLByte; static; overload;  // throws java.lang.NumberFormatException
+    class function valueOf(para1: JLString; para2: jint): JLByte; static; overload;  // throws java.lang.NumberFormatException
+    class function valueOf(para1: jbyte): JLByte; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLDouble = class sealed external 'java.lang' name 'Double' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = jdouble(1.7976931348623157E308);
+      MIN_VALUE = jdouble(4.9E-324);
+      NaN = jdouble(0.0/0.0);
+      POSITIVE_INFINITY = jdouble(1.0/0.0);
+      NEGATIVE_INFINITY = jdouble(-1.0/0.0);
+      MIN_NORMAL = jdouble(2.2250738585072014E-308);
+      MAX_EXPONENT = 1023;
+      MIN_EXPONENT = -1022;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    const
+      SIZE = 64;
+  public
+    constructor create(para1: jdouble); overload;
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    function compareTo(para1: JLDouble): jint; overload; virtual;
+    function byteValue(): jbyte; overload; virtual;
+    class function doubleToLongBits(para1: jdouble): jlong; static; overload;
+    class function doubleToRawLongBits(para1: jdouble): jlong; static; overload;
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function isInfinite(): jboolean; overload; virtual;
+    class function isInfinite(para1: jdouble): jboolean; static; overload;
+    function isNaN(): jboolean; overload; virtual;
+    class function isNaN(para1: jdouble): jboolean; static; overload;
+    class function longBitsToDouble(para1: jlong): jdouble; static; overload;
+    function longValue(): jlong; overload; virtual;
+    class function parseDouble(para1: JLString): jdouble; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jdouble): JLString; static; overload;
+    class function valueOf(para1: JLString): JLDouble; static; overload;  // throws java.lang.NumberFormatException
+    class function compare(para1: jdouble; para2: jdouble): jint; static; overload;
+    class function valueOf(para1: jdouble): JLDouble; static; overload;
+    class function toHexString(para1: jdouble): JLString; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLFloat = class sealed external 'java.lang' name 'Float' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = jfloat(3.4028235E38);
+      MIN_VALUE = jfloat(1.4E-45);
+      NaN = jfloat(0.0/0.0);
+      POSITIVE_INFINITY = jfloat(1.0/0.0);
+      NEGATIVE_INFINITY = jfloat(-1.0/0.0);
+      MIN_NORMAL = jfloat(1.17549435E-38);
+      MAX_EXPONENT = 127;
+      MIN_EXPONENT = -126;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    const
+      SIZE = 32;
+  public
+    constructor create(para1: jfloat); overload;
+    constructor create(para1: jdouble); overload;
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    function compareTo(para1: JLFloat): jint; overload; virtual;
+    function byteValue(): jbyte; overload; virtual;
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    class function floatToIntBits(para1: jfloat): jint; static; overload;
+    class function floatToRawIntBits(para1: jfloat): jint; static; overload;
+    function floatValue(): jfloat; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    class function intBitsToFloat(para1: jint): jfloat; static; overload;
+    function intValue(): jint; overload; virtual;
+    function isInfinite(): jboolean; overload; virtual;
+    class function isInfinite(para1: jfloat): jboolean; static; overload;
+    function isNaN(): jboolean; overload; virtual;
+    class function isNaN(para1: jfloat): jboolean; static; overload;
+    function longValue(): jlong; overload; virtual;
+    class function parseFloat(para1: JLString): jfloat; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jfloat): JLString; static; overload;
+    class function valueOf(para1: JLString): JLFloat; static; overload;  // throws java.lang.NumberFormatException
+    class function compare(para1: jfloat; para2: jfloat): jint; static; overload;
+    class function valueOf(para1: jfloat): JLFloat; static; overload;
+    class function toHexString(para1: jfloat): JLString; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLInteger = class sealed external 'java.lang' name 'Integer' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = 2147483647;
+      MIN_VALUE = -2147483648;
+      SIZE = 32;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    constructor create(para1: jint); overload;
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    function byteValue(): jbyte; overload; virtual;
+    function compareTo(para1: JLInteger): jint; overload; virtual;
+    class function decode(para1: JLString): JLInteger; static; overload;  // throws java.lang.NumberFormatException
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    class function getInteger(para1: JLString): JLInteger; static; overload;
+    class function getInteger(para1: JLString; para2: jint): JLInteger; static; overload;
+    class function getInteger(para1: JLString; para2: JLInteger): JLInteger; static; overload;
+    function hashCode(): jint; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function longValue(): jlong; overload; virtual;
+    class function parseInt(para1: JLString): jint; static; overload;  // throws java.lang.NumberFormatException
+    class function parseInt(para1: JLString; para2: jint): jint; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    class function toBinaryString(para1: jint): JLString; static; overload;
+    class function toHexString(para1: jint): JLString; static; overload;
+    class function toOctalString(para1: jint): JLString; static; overload;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jint): JLString; static; overload;
+    class function toString(para1: jint; para2: jint): JLString; static; overload;
+    class function valueOf(para1: JLString): JLInteger; static; overload;  // throws java.lang.NumberFormatException
+    class function valueOf(para1: JLString; para2: jint): JLInteger; static; overload;  // throws java.lang.NumberFormatException
+    class function highestOneBit(para1: jint): jint; static; overload;
+    class function lowestOneBit(para1: jint): jint; static; overload;
+    class function numberOfLeadingZeros(para1: jint): jint; static; overload;
+    class function numberOfTrailingZeros(para1: jint): jint; static; overload;
+    class function bitCount(para1: jint): jint; static; overload;
+    class function rotateLeft(para1: jint; para2: jint): jint; static; overload;
+    class function rotateRight(para1: jint; para2: jint): jint; static; overload;
+    class function reverseBytes(para1: jint): jint; static; overload;
+    class function reverse(para1: jint): jint; static; overload;
+    class function signum(para1: jint): jint; static; overload;
+    class function valueOf(para1: jint): JLInteger; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLLong = class sealed external 'java.lang' name 'Long' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = jlong(9223372036854775807);
+      MIN_VALUE = jlong(-9223372036854775808);
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    const
+      SIZE = 64;
+  public
+    constructor create(para1: jlong); overload;
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    function byteValue(): jbyte; overload; virtual;
+    function compareTo(para1: JLLong): jint; overload; virtual;
+    class function decode(para1: JLString): JLLong; static; overload;  // throws java.lang.NumberFormatException
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    class function getLong(para1: JLString): JLLong; static; overload;
+    class function getLong(para1: JLString; para2: jlong): JLLong; static; overload;
+    class function getLong(para1: JLString; para2: JLLong): JLLong; static; overload;
+    function hashCode(): jint; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function longValue(): jlong; overload; virtual;
+    class function parseLong(para1: JLString): jlong; static; overload;  // throws java.lang.NumberFormatException
+    class function parseLong(para1: JLString; para2: jint): jlong; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    class function toBinaryString(para1: jlong): JLString; static; overload;
+    class function toHexString(para1: jlong): JLString; static; overload;
+    class function toOctalString(para1: jlong): JLString; static; overload;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jlong): JLString; static; overload;
+    class function toString(para1: jlong; para2: jint): JLString; static; overload;
+    class function valueOf(para1: JLString): JLLong; static; overload;  // throws java.lang.NumberFormatException
+    class function valueOf(para1: JLString; para2: jint): JLLong; static; overload;  // throws java.lang.NumberFormatException
+    class function highestOneBit(para1: jlong): jlong; static; overload;
+    class function lowestOneBit(para1: jlong): jlong; static; overload;
+    class function numberOfLeadingZeros(para1: jlong): jint; static; overload;
+    class function numberOfTrailingZeros(para1: jlong): jint; static; overload;
+    class function bitCount(para1: jlong): jint; static; overload;
+    class function rotateLeft(para1: jlong; para2: jint): jlong; static; overload;
+    class function rotateRight(para1: jlong; para2: jint): jlong; static; overload;
+    class function reverseBytes(para1: jlong): jlong; static; overload;
+    class function reverse(para1: jlong): jlong; static; overload;
+    class function signum(para1: jlong): jint; static; overload;
+    class function valueOf(para1: jlong): JLLong; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLShort = class sealed external 'java.lang' name 'Short' (JLNumber, JLComparable)
+  public
+    const
+      MAX_VALUE = 32767;
+      MIN_VALUE = -32768;
+      SIZE = 16;
+  public
+    final class var
+      fTYPE: JLClass; external name 'TYPE';
+  public
+    constructor create(para1: JLString); overload;  // throws java.lang.NumberFormatException
+    constructor create(para1: jshort); overload;
+    function byteValue(): jbyte; overload; virtual;
+    function compareTo(para1: JLShort): jint; overload; virtual;
+    class function decode(para1: JLString): JLShort; static; overload;  // throws java.lang.NumberFormatException
+    function doubleValue(): jdouble; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function longValue(): jlong; overload; virtual;
+    class function parseShort(para1: JLString): jshort; static; overload;  // throws java.lang.NumberFormatException
+    class function parseShort(para1: JLString; para2: jint): jshort; static; overload;  // throws java.lang.NumberFormatException
+    function shortValue(): jshort; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    class function toString(para1: jshort): JLString; static; overload;
+    class function valueOf(para1: JLString): JLShort; static; overload;  // throws java.lang.NumberFormatException
+    class function valueOf(para1: JLString; para2: jint): JLShort; static; overload;  // throws java.lang.NumberFormatException
+    class function reverseBytes(para1: jshort): jshort; static; overload;
+    class function valueOf(para1: jshort): JLShort; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JMBigInteger = class external 'java.math' name 'BigInteger' (JLNumber, JLComparable, JISerializable)
+  public
+    final class var
+      fZERO: JMBigInteger; external name 'ZERO';
+      fONE: JMBigInteger; external name 'ONE';
+      fTEN: JMBigInteger; external name 'TEN';
+  public
+    constructor create(para1: jint; para2: JURandom); overload;
+    constructor create(para1: jint; para2: jint; para3: JURandom); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: jint); overload;
+    constructor create(para1: jint; para2: Arr1jbyte); overload;
+    constructor create(para1: jint; const para2: array of jbyte); overload;
+    constructor create(para1: Arr1jbyte); overload;
+    constructor create(const para1: array of jbyte); overload;
+    class function valueOf(para1: jlong): JMBigInteger; static; overload;
+    function toByteArray(): Arr1jbyte; overload; virtual;
+    function abs(): JMBigInteger; overload; virtual;
+    function negate(): JMBigInteger; overload; virtual;
+    function add(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function subtract(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function signum(): jint; overload; virtual;
+    function shiftRight(para1: jint): JMBigInteger; overload; virtual;
+    function shiftLeft(para1: jint): JMBigInteger; overload; virtual;
+    function bitLength(): jint; overload; virtual;
+    function testBit(para1: jint): jboolean; overload; virtual;
+    function setBit(para1: jint): JMBigInteger; overload; virtual;
+    function clearBit(para1: jint): JMBigInteger; overload; virtual;
+    function flipBit(para1: jint): JMBigInteger; overload; virtual;
+    function getLowestSetBit(): jint; overload; virtual;
+    function bitCount(): jint; overload; virtual;
+    function &not(): JMBigInteger; overload; virtual;
+    function &and(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function &or(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function &xor(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function andNot(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function intValue(): jint; overload; virtual;
+    function longValue(): jlong; overload; virtual;
+    function floatValue(): jfloat; overload; virtual;
+    function doubleValue(): jdouble; overload; virtual;
+    function compareTo(para1: JMBigInteger): jint; overload; virtual;
+    function min(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function max(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function toString(): JLString; overload; virtual;
+    function toString(para1: jint): JLString; overload; virtual;
+    function gcd(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function multiply(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function pow(para1: jint): JMBigInteger; overload; virtual;
+    function divideAndRemainder(para1: JMBigInteger): Arr1JMBigInteger; overload; virtual;
+    function divide(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function remainder(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function modInverse(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function modPow(para1: JMBigInteger; para2: JMBigInteger): JMBigInteger; overload; virtual;
+    function &mod(para1: JMBigInteger): JMBigInteger; overload; virtual;
+    function isProbablePrime(para1: jint): jboolean; overload; virtual;
+    function nextProbablePrime(): JMBigInteger; overload; virtual;
+    class function probablePrime(para1: jint; para2: JURandom): JMBigInteger; static; overload;
+    function compareTo(para1: JLObject): jint; overload; virtual;
+  end;
+
+  JLError = class external 'java.lang' name 'Error' (JLThrowable)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JLException = class external 'java.lang' name 'Exception' (JLThrowable)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JUAbstractCollection = class abstract external 'java.util' name 'AbstractCollection' (JLObject, JUCollection)
+  strict protected
+    constructor create(); overload;
+  public
+    function add(para1: JLObject): jboolean; overload; virtual;
+    function addAll(para1: JUCollection): jboolean; overload; virtual;
+    procedure clear(); overload; virtual;
+    function contains(para1: JLObject): jboolean; overload; virtual;
+    function containsAll(para1: JUCollection): jboolean; overload; virtual;
+    function isEmpty(): jboolean; overload; virtual;
+    function iterator(): JUIterator; overload; virtual; abstract;
+    function remove(para1: JLObject): jboolean; overload; virtual;
+    function removeAll(para1: JUCollection): jboolean; overload; virtual;
+    function retainAll(para1: JUCollection): jboolean; overload; virtual;
+    function size(): jint; overload; virtual; abstract;
+    function toArray(): Arr1JLObject; overload; virtual;
+    function toArray(para1: Arr1JLObject): Arr1JLObject; overload; virtual;
+    function toArray(var para1: array of JLObject): Arr1JLObject; overload; virtual;
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JUSet = interface external 'java.util' name 'Set' (JUCollection)
+    function add(para1: JLObject): jboolean; overload;
+    function addAll(para1: JUCollection): jboolean; overload;
+    procedure clear(); overload;
+    function contains(para1: JLObject): jboolean; overload;
+    function containsAll(para1: JUCollection): jboolean; overload;
+    function equals(para1: JLObject): jboolean; overload;
+    function hashCode(): jint; overload;
+    function isEmpty(): jboolean; overload;
+    function iterator(): JUIterator; overload;
+    function remove(para1: JLObject): jboolean; overload;
+    function removeAll(para1: JUCollection): jboolean; overload;
+    function retainAll(para1: JUCollection): jboolean; overload;
+    function size(): jint; overload;
+    function toArray(): Arr1JLObject; overload;
+    function toArray(para1: Arr1JLObject): Arr1JLObject; overload;
+    function toArray(var para1: array of JLObject): Arr1JLObject; overload;
+  end;
+
+  JLRField = class sealed external 'java.lang.reflect' name 'Field' (JLRAccessibleObject, JLRMember)
+  public
+    function isSynthetic(): jboolean; overload; virtual;
+    function toGenericString(): JLString; overload; virtual;
+    function isEnumConstant(): jboolean; overload; virtual;
+    function getGenericType(): JLRType; overload; virtual;
+    function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getAnnotation(para1: JLClass): JLAAnnotation; overload; virtual;
+    function isAnnotationPresent(para1: JLClass): jboolean; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function get(para1: JLObject): JLObject; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getBoolean(para1: JLObject): jboolean; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getByte(para1: JLObject): jbyte; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getChar(para1: JLObject): jchar; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getDeclaringClass(): JLClass; overload; virtual;
+    function getDouble(para1: JLObject): jdouble; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getFloat(para1: JLObject): jfloat; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getInt(para1: JLObject): jint; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getLong(para1: JLObject): jlong; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getModifiers(): jint; overload; virtual;
+    function getName(): JLString; overload; virtual;
+    function getShort(para1: JLObject): jshort; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function getType(): JLClass; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    procedure &set(para1: JLObject; para2: JLObject); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setBoolean(para1: JLObject; para2: jboolean); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setByte(para1: JLObject; para2: jbyte); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setChar(para1: JLObject; para2: jchar); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setDouble(para1: JLObject; para2: jdouble); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setFloat(para1: JLObject; para2: jfloat); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setInt(para1: JLObject; para2: jint); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setLong(para1: JLObject; para2: jlong); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    procedure setShort(para1: JLObject; para2: jshort); overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JLRMethod = class sealed external 'java.lang.reflect' name 'Method' (JLRAccessibleObject, JLRGenericDeclaration, JLRMember)
+  public
+    function getTypeParameters(): Arr1JLRTypeVariable; overload; virtual;
+    function toGenericString(): JLString; overload; virtual;
+    function getGenericParameterTypes(): Arr1JLRType; overload; virtual;
+    function getGenericExceptionTypes(): Arr1JLRType; overload; virtual;
+    function getGenericReturnType(): JLRType; overload; virtual;
+    function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; virtual;
+    function getAnnotation(para1: JLClass): JLAAnnotation; overload; virtual;
+    function isAnnotationPresent(para1: JLClass): jboolean; overload; virtual;
+    function getParameterAnnotations(): Arr2JLAAnnotation; overload; virtual;
+    function isVarArgs(): jboolean; overload; virtual;
+    function isBridge(): jboolean; overload; virtual;
+    function isSynthetic(): jboolean; overload; virtual;
+    function getDefaultValue(): JLObject; overload; virtual;
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function getDeclaringClass(): JLClass; overload; virtual;
+    function getExceptionTypes(): Arr1JLClass; overload; virtual;
+    function getModifiers(): jint; overload; virtual;
+    function getName(): JLString; overload; virtual;
+    function getParameterTypes(): Arr1JLClass; overload; virtual;
+    function getReturnType(): JLClass; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function invoke(para1: JLObject; para2: Arr1JLObject): JLObject; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException
+    function invoke(para1: JLObject; const para2: array of JLObject): JLObject; overload; virtual;  // throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException, java.lang.reflect.InvocationTargetException
+    function toString(): JLString; overload; virtual;
+  end;
+
+  JUHashMap = class external 'java.util' name 'HashMap' (JUAbstractMap, JLCloneable, JISerializable)
+  public
+    constructor create(); overload;
+    constructor create(para1: jint); overload;
+    constructor create(para1: jint; para2: jfloat); overload;
+    constructor create(para1: JUMap); overload;
+    function clone(): JLObject; overload; virtual;
+    function isEmpty(): jboolean; overload; virtual;
+    function size(): jint; overload; virtual;
+    function get(para1: JLObject): JLObject; overload; virtual;
+    function containsKey(para1: JLObject): jboolean; overload; virtual;
+    function containsValue(para1: JLObject): jboolean; overload; virtual;
+    function put(para1: JLObject; para2: JLObject): JLObject; overload; virtual;
+    procedure putAll(para1: JUMap); overload; virtual;
+    function remove(para1: JLObject): JLObject; overload; virtual;
+    procedure clear(); overload; virtual;
+    function keySet(): JUSet; overload; virtual;
+    function values(): JUCollection; overload; virtual;
+    function entrySet(): JUSet; overload; virtual;
+  end;
+
+  JLLinkageError = class external 'java.lang' name 'LinkageError' (JLError)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+  end;
+
+  JNCCoderMalfunctionError = class external 'java.nio.charset' name 'CoderMalfunctionError' (JLError)
+  public
+    constructor create(para1: JLException); overload;
+  end;
+
+  JIIOException = class external 'java.io' name 'IOException' (JLException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JLNoSuchMethodException = class external 'java.lang' name 'NoSuchMethodException' (JLException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+  end;
+
+  JLRuntimeException = class external 'java.lang' name 'RuntimeException' (JLException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JLRInvocationTargetException = class external 'java.lang.reflect' name 'InvocationTargetException' (JLException)
+  strict protected
+    constructor create(); overload;
+  public
+    constructor create(para1: JLThrowable); overload;
+    constructor create(para1: JLThrowable; para2: JLString); overload;
+    function getTargetException(): JLThrowable; overload; virtual;
+    function getCause(): JLThrowable; overload; virtual;
+  end;
+
+  JUAbstractSet = class abstract external 'java.util' name 'AbstractSet' (JUAbstractCollection, JUSet)
+  strict protected
+    constructor create(); overload;
+  public
+    function equals(para1: JLObject): jboolean; overload; virtual;
+    function hashCode(): jint; overload; virtual;
+    function removeAll(para1: JUCollection): jboolean; overload; virtual;
+  end;
+
+  JNCCharacterCodingException = class external 'java.nio.charset' name 'CharacterCodingException' (JIIOException)
+  public
+    constructor create(); overload;
+  end;
+
+  JLIllegalArgumentException = class external 'java.lang' name 'IllegalArgumentException' (JLRuntimeException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JLIllegalStateException = class external 'java.lang' name 'IllegalStateException' (JLRuntimeException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JLIndexOutOfBoundsException = class external 'java.lang' name 'IndexOutOfBoundsException' (JLRuntimeException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+  end;
+
+  JLUnsupportedOperationException = class external 'java.lang' name 'UnsupportedOperationException' (JLRuntimeException)
+  public
+    constructor create(); overload;
+    constructor create(para1: JLString); overload;
+    constructor create(para1: JLString; para2: JLThrowable); overload;
+    constructor create(para1: JLThrowable); overload;
+  end;
+
+  JUEnumSet = class abstract external 'java.util' name 'EnumSet' (JUAbstractSet, JLCloneable, JISerializable)
+  public
+    class function noneOf(para1: JLClass): JUEnumSet; static; overload;
+    class function allOf(para1: JLClass): JUEnumSet; static; overload;
+    class function copyOf(para1: JUEnumSet): JUEnumSet; static; overload;
+    class function copyOf(para1: JUCollection): JUEnumSet; static; overload;
+    class function complementOf(para1: JUEnumSet): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; para2: JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; para2: JLEnum; para3: JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; para2: JLEnum; para3: JLEnum; para4: JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; para2: JLEnum; para3: JLEnum; para4: JLEnum; para5: JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; para2: Arr1JLEnum): JUEnumSet; static; overload;
+    class function &of(para1: JLEnum; const para2: array of JLEnum): JUEnumSet; static; overload;
+    class function range(para1: JLEnum; para2: JLEnum): JUEnumSet; static; overload;
+    function clone(): JUEnumSet; overload; virtual;
+    function clone(): JLObject; overload; virtual;  // throws java.lang.CloneNotSupportedException
+  end;
+
+  JNCMalformedInputException = class external 'java.nio.charset' name 'MalformedInputException' (JNCCharacterCodingException)
+  public
+    constructor create(para1: jint); overload;
+    function getInputLength(): jint; overload; virtual;
+    function getMessage(): JLString; overload; virtual;
+  end;
+
+  JNCUnmappableCharacterException = class external 'java.nio.charset' name 'UnmappableCharacterException' (JNCCharacterCodingException)
+  public
+    constructor create(para1: jint); overload;
+    function getInputLength(): jint; overload; virtual;
+    function getMessage(): JLString; overload; virtual;
+  end;
+
+  JNCIllegalCharsetNameException = class external 'java.nio.charset' name 'IllegalCharsetNameException' (JLIllegalArgumentException)
+  public
+    constructor create(para1: JLString); overload;
+    function getCharsetName(): JLString; overload; virtual;
+  end;
+
+  JNCUnsupportedCharsetException = class external 'java.nio.charset' name 'UnsupportedCharsetException' (JLIllegalArgumentException)
+  public
+    constructor create(para1: JLString); overload;
+    function getCharsetName(): JLString; overload; virtual;
+  end;
+

+ 548 - 0
rtl/android/jvm/java_sysh_android.inc

@@ -0,0 +1,548 @@
+{ Imports for Java packages/classes: java.io.IIOException, java.io.IOException, java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Enum, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.Integer, java.lang.Iterable, java.lang.LinkageError, java.lang.Long, java.lang.Math, java.lang.NoSuchMethodException, java.lang.Number, java.lang.Object, java.lang.Readable, java.lang.Runtime, java.lang.RuntimeException, java.lang.Short, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.ThreadLocal, java.lang.Throwable, java.lang.UnsupportedOperationException, java.lang.reflect.AccessibleObject, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.Field, java.lang.reflect.GenericDeclaration, java.lang.reflect.InvocationTargetException, java.lang.reflect.Member, java.lang.reflect.Method, java.lang.reflect.Type, java.math.BigInteger, java.nio.Buffer, java.nio.ByteBuffer, java.nio.CharBuffer, java.nio.charset., java.text.Collator, java.util.AbstractCollection, java.util.AbstractMap, java.util.AbstractSet, java.util.Arrays, java.util.BitSet, java.util.Calendar, java.util.Collection, java.util.Comparator, java.util.EnumSet, java.util.HashMap, java.util.Iterator, java.util.Map, java.util.Set }
+type
+  JLNoSuchMethodException = class;
+  Arr1JLNoSuchMethodException = array of JLNoSuchMethodException;
+  Arr2JLNoSuchMethodException = array of Arr1JLNoSuchMethodException;
+  Arr3JLNoSuchMethodException = array of Arr2JLNoSuchMethodException;
+
+  JLObject = class;
+  Arr1JLObject = array of JLObject;
+  Arr2JLObject = array of Arr1JLObject;
+  Arr3JLObject = array of Arr2JLObject;
+
+  JLStringBuilder = class;
+  Arr1JLStringBuilder = array of JLStringBuilder;
+  Arr2JLStringBuilder = array of Arr1JLStringBuilder;
+  Arr3JLStringBuilder = array of Arr2JLStringBuilder;
+
+  JLAbstractStringBuilder = class;
+  Arr1JLAbstractStringBuilder = array of JLAbstractStringBuilder;
+  Arr2JLAbstractStringBuilder = array of Arr1JLAbstractStringBuilder;
+  Arr3JLAbstractStringBuilder = array of Arr2JLAbstractStringBuilder;
+
+  JLRInvocationTargetException = class;
+  Arr1JLRInvocationTargetException = array of JLRInvocationTargetException;
+  Arr2JLRInvocationTargetException = array of Arr1JLRInvocationTargetException;
+  Arr3JLRInvocationTargetException = array of Arr2JLRInvocationTargetException;
+
+  JLError = class;
+  Arr1JLError = array of JLError;
+  Arr2JLError = array of Arr1JLError;
+  Arr3JLError = array of Arr2JLError;
+
+  JLRField = class;
+  Arr1JLRField = array of JLRField;
+  Arr2JLRField = array of Arr1JLRField;
+  Arr3JLRField = array of Arr2JLRField;
+
+  JNBuffer = class;
+  Arr1JNBuffer = array of JNBuffer;
+  Arr2JNBuffer = array of Arr1JNBuffer;
+  Arr3JNBuffer = array of Arr2JNBuffer;
+
+  JUArrays = class;
+  Arr1JUArrays = array of JUArrays;
+  Arr2JUArrays = array of Arr1JUArrays;
+  Arr3JUArrays = array of Arr2JUArrays;
+
+  JLRuntime = class;
+  Arr1JLRuntime = array of JLRuntime;
+  Arr2JLRuntime = array of Arr1JLRuntime;
+  Arr3JLRuntime = array of Arr2JLRuntime;
+
+  JLLong = class;
+  Arr1JLLong = array of JLLong;
+  Arr2JLLong = array of Arr1JLLong;
+  Arr3JLLong = array of Arr2JLLong;
+
+  JLMath = class;
+  Arr1JLMath = array of JLMath;
+  Arr2JLMath = array of Arr1JLMath;
+  Arr3JLMath = array of Arr2JLMath;
+
+  JNCharBuffer = class;
+  Arr1JNCharBuffer = array of JNCharBuffer;
+  Arr2JNCharBuffer = array of Arr1JNCharBuffer;
+  Arr3JNCharBuffer = array of Arr2JNCharBuffer;
+
+  JLLinkageError = class;
+  Arr1JLLinkageError = array of JLLinkageError;
+  Arr2JLLinkageError = array of Arr1JLLinkageError;
+  Arr3JLLinkageError = array of Arr2JLLinkageError;
+
+  JNCCharsetEncoder = class;
+  Arr1JNCCharsetEncoder = array of JNCCharsetEncoder;
+  Arr2JNCCharsetEncoder = array of Arr1JNCCharsetEncoder;
+  Arr3JNCCharsetEncoder = array of Arr2JNCCharsetEncoder;
+
+  JUAbstractCollection = class;
+  Arr1JUAbstractCollection = array of JUAbstractCollection;
+  Arr2JUAbstractCollection = array of Arr1JUAbstractCollection;
+  Arr3JUAbstractCollection = array of Arr2JUAbstractCollection;
+
+  JNCCoderResult = class;
+  Arr1JNCCoderResult = array of JNCCoderResult;
+  Arr2JNCCoderResult = array of Arr1JNCCoderResult;
+  Arr3JNCCoderResult = array of Arr2JNCCoderResult;
+
+  JLThreadLocal = class;
+  Arr1JLThreadLocal = array of JLThreadLocal;
+  Arr2JLThreadLocal = array of Arr1JLThreadLocal;
+  Arr3JLThreadLocal = array of Arr2JLThreadLocal;
+
+  JUAbstractMap = class;
+  Arr1JUAbstractMap = array of JUAbstractMap;
+  Arr2JUAbstractMap = array of Arr1JUAbstractMap;
+  Arr3JUAbstractMap = array of Arr2JUAbstractMap;
+
+  JNCCoderMalfunctionError = class;
+  Arr1JNCCoderMalfunctionError = array of JNCCoderMalfunctionError;
+  Arr2JNCCoderMalfunctionError = array of Arr1JNCCoderMalfunctionError;
+  Arr3JNCCoderMalfunctionError = array of Arr2JNCCoderMalfunctionError;
+
+  JUEnumSet = class;
+  Arr1JUEnumSet = array of JUEnumSet;
+  Arr2JUEnumSet = array of Arr1JUEnumSet;
+  Arr3JUEnumSet = array of Arr2JUEnumSet;
+
+  JNCCharacterCodingException = class;
+  Arr1JNCCharacterCodingException = array of JNCCharacterCodingException;
+  Arr2JNCCharacterCodingException = array of Arr1JNCCharacterCodingException;
+  Arr3JNCCharacterCodingException = array of Arr2JNCCharacterCodingException;
+
+  JLIndexOutOfBoundsException = class;
+  Arr1JLIndexOutOfBoundsException = array of JLIndexOutOfBoundsException;
+  Arr2JLIndexOutOfBoundsException = array of Arr1JLIndexOutOfBoundsException;
+  Arr3JLIndexOutOfBoundsException = array of Arr2JLIndexOutOfBoundsException;
+
+  JUHashMap = class;
+  Arr1JUHashMap = array of JUHashMap;
+  Arr2JUHashMap = array of Arr1JUHashMap;
+  Arr3JUHashMap = array of Arr2JUHashMap;
+
+  JUCalendar = class;
+  Arr1JUCalendar = array of JUCalendar;
+  Arr2JUCalendar = array of Arr1JUCalendar;
+  Arr3JUCalendar = array of Arr2JUCalendar;
+
+  JLDouble = class;
+  Arr1JLDouble = array of JLDouble;
+  Arr2JLDouble = array of Arr1JLDouble;
+  Arr3JLDouble = array of Arr2JLDouble;
+
+  JUBitSet = class;
+  Arr1JUBitSet = array of JUBitSet;
+  Arr2JUBitSet = array of Arr1JUBitSet;
+  Arr3JUBitSet = array of Arr2JUBitSet;
+
+  JLString = class;
+  Arr1JLString = array of JLString;
+  Arr2JLString = array of Arr1JLString;
+  Arr3JLString = array of Arr2JLString;
+
+  JUAbstractSet = class;
+  Arr1JUAbstractSet = array of JUAbstractSet;
+  Arr2JUAbstractSet = array of Arr1JUAbstractSet;
+  Arr3JUAbstractSet = array of Arr2JUAbstractSet;
+
+  JLFloat = class;
+  Arr1JLFloat = array of JLFloat;
+  Arr2JLFloat = array of Arr1JLFloat;
+  Arr3JLFloat = array of Arr2JLFloat;
+
+  JLRuntimeException = class;
+  Arr1JLRuntimeException = array of JLRuntimeException;
+  Arr2JLRuntimeException = array of Arr1JLRuntimeException;
+  Arr3JLRuntimeException = array of Arr2JLRuntimeException;
+
+  JLIllegalStateException = class;
+  Arr1JLIllegalStateException = array of JLIllegalStateException;
+  Arr2JLIllegalStateException = array of Arr1JLIllegalStateException;
+  Arr3JLIllegalStateException = array of Arr2JLIllegalStateException;
+
+  JLRAccessibleObject = class;
+  Arr1JLRAccessibleObject = array of JLRAccessibleObject;
+  Arr2JLRAccessibleObject = array of Arr1JLRAccessibleObject;
+  Arr3JLRAccessibleObject = array of Arr2JLRAccessibleObject;
+
+  JLStringBuffer = class;
+  Arr1JLStringBuffer = array of JLStringBuffer;
+  Arr2JLStringBuffer = array of Arr1JLStringBuffer;
+  Arr3JLStringBuffer = array of Arr2JLStringBuffer;
+
+  JNByteBuffer = class;
+  Arr1JNByteBuffer = array of JNByteBuffer;
+  Arr2JNByteBuffer = array of Arr1JNByteBuffer;
+  Arr3JNByteBuffer = array of Arr2JNByteBuffer;
+
+  JLEnum = class;
+  Arr1JLEnum = array of JLEnum;
+  Arr2JLEnum = array of Arr1JLEnum;
+  Arr3JLEnum = array of Arr2JLEnum;
+
+  JNCSCharsetProvider = class;
+  Arr1JNCSCharsetProvider = array of JNCSCharsetProvider;
+  Arr2JNCSCharsetProvider = array of Arr1JNCSCharsetProvider;
+  Arr3JNCSCharsetProvider = array of Arr2JNCSCharsetProvider;
+
+  JLNumber = class;
+  Arr1JLNumber = array of JLNumber;
+  Arr2JLNumber = array of Arr1JLNumber;
+  Arr3JLNumber = array of Arr2JLNumber;
+
+  JIIOException = class;
+  Arr1JIIOException = array of JIIOException;
+  Arr2JIIOException = array of Arr1JIIOException;
+  Arr3JIIOException = array of Arr2JIIOException;
+
+  JLRMethod = class;
+  Arr1JLRMethod = array of JLRMethod;
+  Arr2JLRMethod = array of Arr1JLRMethod;
+  Arr3JLRMethod = array of Arr2JLRMethod;
+
+  JLCharacter = class;
+  Arr1JLCharacter = array of JLCharacter;
+  Arr2JLCharacter = array of Arr1JLCharacter;
+  Arr3JLCharacter = array of Arr2JLCharacter;
+
+  JNCCodingErrorAction = class;
+  Arr1JNCCodingErrorAction = array of JNCCodingErrorAction;
+  Arr2JNCCodingErrorAction = array of Arr1JNCCodingErrorAction;
+  Arr3JNCCodingErrorAction = array of Arr2JNCCodingErrorAction;
+
+  JMBigInteger = class;
+  Arr1JMBigInteger = array of JMBigInteger;
+  Arr2JMBigInteger = array of Arr1JMBigInteger;
+  Arr3JMBigInteger = array of Arr2JMBigInteger;
+
+  JNCCharsetDecoder = class;
+  Arr1JNCCharsetDecoder = array of JNCCharsetDecoder;
+  Arr2JNCCharsetDecoder = array of Arr1JNCCharsetDecoder;
+  Arr3JNCCharsetDecoder = array of Arr2JNCCharsetDecoder;
+
+  JLBoolean = class;
+  Arr1JLBoolean = array of JLBoolean;
+  Arr2JLBoolean = array of Arr1JLBoolean;
+  Arr3JLBoolean = array of Arr2JLBoolean;
+
+  JNCCharset = class;
+  Arr1JNCCharset = array of JNCCharset;
+  Arr2JNCCharset = array of Arr1JNCCharset;
+  Arr3JNCCharset = array of Arr2JNCCharset;
+
+  JLShort = class;
+  Arr1JLShort = array of JLShort;
+  Arr2JLShort = array of Arr1JLShort;
+  Arr3JLShort = array of Arr2JLShort;
+
+  JLThrowable = class;
+  Arr1JLThrowable = array of JLThrowable;
+  Arr2JLThrowable = array of Arr1JLThrowable;
+  Arr3JLThrowable = array of Arr2JLThrowable;
+
+  JLInteger = class;
+  Arr1JLInteger = array of JLInteger;
+  Arr2JLInteger = array of Arr1JLInteger;
+  Arr3JLInteger = array of Arr2JLInteger;
+
+  JNCUnmappableCharacterException = class;
+  Arr1JNCUnmappableCharacterException = array of JNCUnmappableCharacterException;
+  Arr2JNCUnmappableCharacterException = array of Arr1JNCUnmappableCharacterException;
+  Arr3JNCUnmappableCharacterException = array of Arr2JNCUnmappableCharacterException;
+
+  JNCMalformedInputException = class;
+  Arr1JNCMalformedInputException = array of JNCMalformedInputException;
+  Arr2JNCMalformedInputException = array of Arr1JNCMalformedInputException;
+  Arr3JNCMalformedInputException = array of Arr2JNCMalformedInputException;
+
+  JNCIllegalCharsetNameException = class;
+  Arr1JNCIllegalCharsetNameException = array of JNCIllegalCharsetNameException;
+  Arr2JNCIllegalCharsetNameException = array of Arr1JNCIllegalCharsetNameException;
+  Arr3JNCIllegalCharsetNameException = array of Arr2JNCIllegalCharsetNameException;
+
+  JLByte = class;
+  Arr1JLByte = array of JLByte;
+  Arr2JLByte = array of Arr1JLByte;
+  Arr3JLByte = array of Arr2JLByte;
+
+  JNCUnsupportedCharsetException = class;
+  Arr1JNCUnsupportedCharsetException = array of JNCUnsupportedCharsetException;
+  Arr2JNCUnsupportedCharsetException = array of Arr1JNCUnsupportedCharsetException;
+  Arr3JNCUnsupportedCharsetException = array of Arr2JNCUnsupportedCharsetException;
+
+  JLRArray = class;
+  Arr1JLRArray = array of JLRArray;
+  Arr2JLRArray = array of Arr1JLRArray;
+  Arr3JLRArray = array of Arr2JLRArray;
+
+  JLUnsupportedOperationException = class;
+  Arr1JLUnsupportedOperationException = array of JLUnsupportedOperationException;
+  Arr2JLUnsupportedOperationException = array of Arr1JLUnsupportedOperationException;
+  Arr3JLUnsupportedOperationException = array of Arr2JLUnsupportedOperationException;
+
+  JLException = class;
+  Arr1JLException = array of JLException;
+  Arr2JLException = array of Arr1JLException;
+  Arr3JLException = array of Arr2JLException;
+
+  JTCollator = class;
+  Arr1JTCollator = array of JTCollator;
+  Arr2JTCollator = array of Arr1JTCollator;
+  Arr3JTCollator = array of Arr2JTCollator;
+
+  JLClass = class;
+  Arr1JLClass = array of JLClass;
+  Arr2JLClass = array of Arr1JLClass;
+  Arr3JLClass = array of Arr2JLClass;
+
+  JLIllegalArgumentException = class;
+  Arr1JLIllegalArgumentException = array of JLIllegalArgumentException;
+  Arr2JLIllegalArgumentException = array of Arr1JLIllegalArgumentException;
+  Arr3JLIllegalArgumentException = array of Arr2JLIllegalArgumentException;
+
+  JLSystem = class;
+  Arr1JLSystem = array of JLSystem;
+  Arr2JLSystem = array of Arr1JLSystem;
+  Arr3JLSystem = array of Arr2JLSystem;
+
+  JLIterable = interface;
+  Arr1JLIterable = array of JLIterable;
+  Arr2JLIterable = array of Arr1JLIterable;
+  Arr3JLIterable = array of Arr2JLIterable;
+
+  JUIterator = interface;
+  Arr1JUIterator = array of JUIterator;
+  Arr2JUIterator = array of Arr1JUIterator;
+  Arr3JUIterator = array of Arr2JUIterator;
+
+  JLCloneable = interface;
+  Arr1JLCloneable = array of JLCloneable;
+  Arr2JLCloneable = array of Arr1JLCloneable;
+  Arr3JLCloneable = array of Arr2JLCloneable;
+
+  JLAppendable = interface;
+  Arr1JLAppendable = array of JLAppendable;
+  Arr2JLAppendable = array of Arr1JLAppendable;
+  Arr3JLAppendable = array of Arr2JLAppendable;
+
+  JUCollection = interface;
+  Arr1JUCollection = array of JUCollection;
+  Arr2JUCollection = array of Arr1JUCollection;
+  Arr3JUCollection = array of Arr2JUCollection;
+
+  JUMap = interface;
+  Arr1JUMap = array of JUMap;
+  Arr2JUMap = array of Arr1JUMap;
+  Arr3JUMap = array of Arr2JUMap;
+
+  JUSet = interface;
+  Arr1JUSet = array of JUSet;
+  Arr2JUSet = array of Arr1JUSet;
+  Arr3JUSet = array of Arr2JUSet;
+
+  JLRType = interface;
+  Arr1JLRType = array of JLRType;
+  Arr2JLRType = array of Arr1JLRType;
+  Arr3JLRType = array of Arr2JLRType;
+
+  JLComparable = interface;
+  Arr1JLComparable = array of JLComparable;
+  Arr2JLComparable = array of Arr1JLComparable;
+  Arr3JLComparable = array of Arr2JLComparable;
+
+  JLRMember = interface;
+  Arr1JLRMember = array of JLRMember;
+  Arr2JLRMember = array of Arr1JLRMember;
+  Arr3JLRMember = array of Arr2JLRMember;
+
+  JLCharSequence = interface;
+  Arr1JLCharSequence = array of JLCharSequence;
+  Arr2JLCharSequence = array of Arr1JLCharSequence;
+  Arr3JLCharSequence = array of Arr2JLCharSequence;
+
+  JLRGenericDeclaration = interface;
+  Arr1JLRGenericDeclaration = array of JLRGenericDeclaration;
+  Arr2JLRGenericDeclaration = array of Arr1JLRGenericDeclaration;
+  Arr3JLRGenericDeclaration = array of Arr2JLRGenericDeclaration;
+
+  JLRAnnotatedElement = interface;
+  Arr1JLRAnnotatedElement = array of JLRAnnotatedElement;
+  Arr2JLRAnnotatedElement = array of Arr1JLRAnnotatedElement;
+  Arr3JLRAnnotatedElement = array of Arr2JLRAnnotatedElement;
+
+  JUComparator = interface;
+  Arr1JUComparator = array of JUComparator;
+  Arr2JUComparator = array of Arr1JUComparator;
+  Arr3JUComparator = array of Arr2JUComparator;
+
+  JISerializable = interface;
+  Arr1JISerializable = array of JISerializable;
+  Arr2JISerializable = array of Arr1JISerializable;
+  Arr3JISerializable = array of Arr2JISerializable;
+
+  JLReadable = interface;
+  Arr1JLReadable = array of JLReadable;
+  Arr2JLReadable = array of Arr1JLReadable;
+  Arr3JLReadable = array of Arr2JLReadable;
+
+  JLThread = class external 'java.lang' name 'Thread';
+  Arr1JLThread = array of JLThread;
+  Arr2JLThread = array of Arr1JLThread;
+  Arr3JLThread = array of Arr2JLThread;
+
+  JUDate = class external 'java.util' name 'Date';
+  Arr1JUDate = array of JUDate;
+  Arr2JUDate = array of Arr1JUDate;
+  Arr3JUDate = array of Arr2JUDate;
+
+  JLClassLoader = class external 'java.lang' name 'ClassLoader';
+  Arr1JLClassLoader = array of JLClassLoader;
+  Arr2JLClassLoader = array of Arr1JLClassLoader;
+  Arr3JLClassLoader = array of Arr2JLClassLoader;
+
+  JNIntBuffer = class external 'java.nio' name 'IntBuffer';
+  Arr1JNIntBuffer = array of JNIntBuffer;
+  Arr2JNIntBuffer = array of Arr1JNIntBuffer;
+  Arr3JNIntBuffer = array of Arr2JNIntBuffer;
+
+  JNByteOrder = class external 'java.nio' name 'ByteOrder';
+  Arr1JNByteOrder = array of JNByteOrder;
+  Arr2JNByteOrder = array of Arr1JNByteOrder;
+  Arr3JNByteOrder = array of Arr2JNByteOrder;
+
+  JIInputStream = class external 'java.io' name 'InputStream';
+  Arr1JIInputStream = array of JIInputStream;
+  Arr2JIInputStream = array of Arr1JIInputStream;
+  Arr3JIInputStream = array of Arr2JIInputStream;
+
+  JNLongBuffer = class external 'java.nio' name 'LongBuffer';
+  Arr1JNLongBuffer = array of JNLongBuffer;
+  Arr2JNLongBuffer = array of Arr1JNLongBuffer;
+  Arr3JNLongBuffer = array of Arr2JNLongBuffer;
+
+  JLSecurityManager = class external 'java.lang' name 'SecurityManager';
+  Arr1JLSecurityManager = array of JLSecurityManager;
+  Arr2JLSecurityManager = array of Arr1JLSecurityManager;
+  Arr3JLSecurityManager = array of Arr2JLSecurityManager;
+
+  JIPrintWriter = class external 'java.io' name 'PrintWriter';
+  Arr1JIPrintWriter = array of JIPrintWriter;
+  Arr2JIPrintWriter = array of Arr1JIPrintWriter;
+  Arr3JIPrintWriter = array of Arr2JIPrintWriter;
+
+  JNDoubleBuffer = class external 'java.nio' name 'DoubleBuffer';
+  Arr1JNDoubleBuffer = array of JNDoubleBuffer;
+  Arr2JNDoubleBuffer = array of Arr1JNDoubleBuffer;
+  Arr3JNDoubleBuffer = array of Arr2JNDoubleBuffer;
+
+  JLPackage = class external 'java.lang' name 'Package';
+  Arr1JLPackage = array of JLPackage;
+  Arr2JLPackage = array of Arr1JLPackage;
+  Arr3JLPackage = array of Arr2JLPackage;
+
+  JURandom = class external 'java.util' name 'Random';
+  Arr1JURandom = array of JURandom;
+  Arr2JURandom = array of Arr1JURandom;
+  Arr3JURandom = array of Arr2JURandom;
+
+  JIOutputStream = class external 'java.io' name 'OutputStream';
+  Arr1JIOutputStream = array of JIOutputStream;
+  Arr2JIOutputStream = array of Arr1JIOutputStream;
+  Arr3JIOutputStream = array of Arr2JIOutputStream;
+
+  JLStackTraceElement = class external 'java.lang' name 'StackTraceElement';
+  Arr1JLStackTraceElement = array of JLStackTraceElement;
+  Arr2JLStackTraceElement = array of Arr1JLStackTraceElement;
+  Arr3JLStackTraceElement = array of Arr2JLStackTraceElement;
+
+  JIFile = class external 'java.io' name 'File';
+  Arr1JIFile = array of JIFile;
+  Arr2JIFile = array of Arr1JIFile;
+  Arr3JIFile = array of Arr2JIFile;
+
+  JUProperties = class external 'java.util' name 'Properties';
+  Arr1JUProperties = array of JUProperties;
+  Arr2JUProperties = array of Arr1JUProperties;
+  Arr3JUProperties = array of Arr2JUProperties;
+
+  JNFloatBuffer = class external 'java.nio' name 'FloatBuffer';
+  Arr1JNFloatBuffer = array of JNFloatBuffer;
+  Arr2JNFloatBuffer = array of Arr1JNFloatBuffer;
+  Arr3JNFloatBuffer = array of Arr2JNFloatBuffer;
+
+  JNShortBuffer = class external 'java.nio' name 'ShortBuffer';
+  Arr1JNShortBuffer = array of JNShortBuffer;
+  Arr2JNShortBuffer = array of Arr1JNShortBuffer;
+  Arr3JNShortBuffer = array of Arr2JNShortBuffer;
+
+  JSProtectionDomain = class external 'java.security' name 'ProtectionDomain';
+  Arr1JSProtectionDomain = array of JSProtectionDomain;
+  Arr2JSProtectionDomain = array of Arr1JSProtectionDomain;
+  Arr3JSProtectionDomain = array of Arr2JSProtectionDomain;
+
+  JIPrintStream = class external 'java.io' name 'PrintStream';
+  Arr1JIPrintStream = array of JIPrintStream;
+  Arr2JIPrintStream = array of Arr1JIPrintStream;
+  Arr3JIPrintStream = array of Arr2JIPrintStream;
+
+  JTCollationKey = class external 'java.text' name 'CollationKey';
+  Arr1JTCollationKey = array of JTCollationKey;
+  Arr2JTCollationKey = array of Arr1JTCollationKey;
+  Arr3JTCollationKey = array of Arr2JTCollationKey;
+
+  JLRConstructor = class external 'java.lang.reflect' name 'Constructor';
+  Arr1JLRConstructor = array of JLRConstructor;
+  Arr2JLRConstructor = array of Arr1JLRConstructor;
+  Arr3JLRConstructor = array of Arr2JLRConstructor;
+
+  JNURL = class external 'java.net' name 'URL';
+  Arr1JNURL = array of JNURL;
+  Arr2JNURL = array of Arr1JNURL;
+  Arr3JNURL = array of Arr2JNURL;
+
+  JIConsole = class external 'java.io' name 'Console';
+  Arr1JIConsole = array of JIConsole;
+  Arr2JIConsole = array of Arr1JIConsole;
+  Arr3JIConsole = array of Arr2JIConsole;
+
+  JLProcess = class external 'java.lang' name 'Process';
+  Arr1JLProcess = array of JLProcess;
+  Arr2JLProcess = array of Arr1JLProcess;
+  Arr3JLProcess = array of Arr2JLProcess;
+
+  JULocale = class external 'java.util' name 'Locale';
+  Arr1JULocale = array of JULocale;
+  Arr2JULocale = array of Arr1JULocale;
+  Arr3JULocale = array of Arr2JULocale;
+
+  JUTimeZone = class external 'java.util' name 'TimeZone';
+  Arr1JUTimeZone = array of JUTimeZone;
+  Arr2JUTimeZone = array of Arr1JUTimeZone;
+  Arr3JUTimeZone = array of Arr2JUTimeZone;
+
+  JUList = interface external 'java.util' name 'List';
+  Arr1JUList = array of JUList;
+  Arr2JUList = array of Arr1JUList;
+  Arr3JUList = array of Arr2JUList;
+
+  JLAAnnotation = interface external 'java.lang.annotation' name 'Annotation';
+  Arr1JLAAnnotation = array of JLAAnnotation;
+  Arr2JLAAnnotation = array of Arr1JLAAnnotation;
+  Arr3JLAAnnotation = array of Arr2JLAAnnotation;
+
+  JNCChannel = interface external 'java.nio.channels' name 'Channel';
+  Arr1JNCChannel = array of JNCChannel;
+  Arr2JNCChannel = array of Arr1JNCChannel;
+  Arr3JNCChannel = array of Arr2JNCChannel;
+
+  JLRTypeVariable = interface external 'java.lang.reflect' name 'TypeVariable';
+  Arr1JLRTypeVariable = array of JLRTypeVariable;
+  Arr2JLRTypeVariable = array of Arr1JLRTypeVariable;
+  Arr3JLRTypeVariable = array of Arr2JLRTypeVariable;
+
+  JUSortedMap = interface external 'java.util' name 'SortedMap';
+  Arr1JUSortedMap = array of JUSortedMap;
+  Arr2JUSortedMap = array of Arr1JUSortedMap;
+  Arr3JUSortedMap = array of Arr2JUSortedMap;
+
+

+ 35 - 0
rtl/android/jvm/rtl.cfg

@@ -0,0 +1,35 @@
+# first, disable all
+# -Sf-
+# uncomment to enable the stuff you want to use
+
+# include full heap management into the rtl
+# -SfHEAP
+
+# include support for init final code of units into the rtl
+# -SfINITFINAL
+
+# -SfCLASSES
+# -SfEXCEPTIONS
+# -SfEXITCODE
+# -SfANSISTRINGS
+# -SfWIDESTRINGS
+# -SfTEXTIO
+# -SfCONSOLEIO
+# -SfFILEIO
+# -SfRANDOM
+# -SfVARIANTS
+# -SfOBJECTS
+# -SfDYNARRAYS
+# -SfTHREADING
+# -SfCOMMANDARGS
+# -SfPROCESSES
+# -SfSTACKCHECK
+# -SfDYNLIBS
+
+# include exit code support
+-SfEXITCODE
+
+# arm is powerful enough to handle a softfpu
+#ifdef CPUARM
+-SfSOFTFPU
+#endif CPUARM

+ 13 - 0
rtl/java/system.pp

@@ -72,8 +72,21 @@ const
 
 
 { Java base class type }
+{$ifdef java}
+{$define GOTJAVASYSINCLUDE}
 {$i java_sysh.inc}
 {$i java_sys.inc}
+{$endif}
+
+{$ifdef android}
+{$define GOTJAVASYSINCLUDE}
+{$i java_sysh_android.inc}
+{$i java_sys_android.inc}
+{$endif}
+
+{$ifndef GOTJAVASYSINCLUDE}
+{$error Missing include file with base Java classes}
+{$endif}
 
   FpcEnumValueObtainable = interface
     function fpcOrdinal: jint;

File diff suppressed because it is too large
+ 182 - 173
utils/fpcm/fpcmake.inc


+ 9 - 0
utils/fpcm/fpcmake.ini

@@ -1038,6 +1038,15 @@ SHAREDLIBEXT=.jar
 SHORTSUFFIX=java
 endif
 
+# Android
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+
+
 else
 # long version for 1.0.x - target specific extensions
 

+ 5 - 4
utils/fpcm/fpcmmain.pp

@@ -71,7 +71,7 @@ interface
         o_amiga,o_atari, o_solaris, o_qnx, o_netware, o_openbsd,o_wdosx,
         o_palmos,o_macos,o_darwin,o_emx,o_watcom,o_morphos,o_netwlibc,
         o_win64,o_wince,o_gba,o_nds,o_embedded,o_symbian,o_nativent,o_iphonesim,
-        o_wii,o_jvm
+        o_wii,o_java,o_android
       );
 
       TTargetSet=array[tcpu,tos] of boolean;
@@ -94,7 +94,7 @@ interface
         'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx',
         'palmos','macos','darwin','emx','watcom','morphos','netwlibc',
         'win64','wince','gba','nds','embedded','symbian','nativent',
-        'iphonesim', 'wii', 'java'
+        'iphonesim', 'wii', 'java', 'android'
       );
 
       OSSuffix : array[TOS] of string=(
@@ -102,7 +102,7 @@ interface
         '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx',
         '_palmos','_macos','_darwin','_emx','_watcom','_morphos','_netwlibc',
         '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent',
-        '_iphonesim','_wii','_java'
+        '_iphonesim','_wii','_java','_android'
       );
 
       { This table is kept OS,Cpu because it is easier to maintain (PFV) }
@@ -139,7 +139,8 @@ interface
         { nativent }( true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false),
         { iphonesim }( true, false, false, false, false, false, false, false, false, false, false, false, false, false,   false),
         { wii }     ( false, false, true,  false, false, false, false, false, false, false, false, false, false, false,   false),
-        { jvm }     ( false, false,  false, false, false, false, false, false, false, false, false, false, false, false,  true)
+        { java }    ( false, false,  false, false, false, false, false, false, false, false, false, false, false, false,  true),
+        { android } ( false, false,  false, false, false, false, false, false, false, false, false, false, false, false,  true)
       );
 
     type

Some files were not shown because too many files changed in this diff