#include <OOC/SymbolTable/InterfaceDescr.d>
#include <__oo2c.h>
#include <setjmp.h>

static URI__URI OOC_SymbolTable_InterfaceDescr__GetSystemId(OOC_Config_Repositories__Section repositories) {
  register OOC_INT64 i0,i1;

  i0 = (OOC_INT64)OOC_SymbolTable_InterfaceDescr__dtdSystemId;
  i1 = i0==(OOC_INT64)0;
  if (i1) goto l3;
  return (URI__URI)i0;
  goto l4;
l3:
  i0 = (OOC_INT64)repositories;
  i0 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetResource((OOC_Config_Repositories__Section)i0, "OOC", 4, "xml/interface-description.dtd", 30);
  OOC_SymbolTable_InterfaceDescr__dtdSystemId = (URI__URI)i0;
  _assert((i0!=(OOC_INT64)0), 127, 1742);
  return (URI__URI)i0;
l4:
  _failed_function(1555); return 0;
  ;
}

void OOC_SymbolTable_InterfaceDescr__Write(IO__ByteChannel cw, URI__HierarchicalURI baseURI, OOC_SymbolTable__Module module, OOC_Config_Repositories__Section repositories, OOC_SymbolTable__ExtensionDict extensionDict) {
  register OOC_INT64 i0,i1,i2,i3;
  ADT_Dictionary__Dictionary moduleDict;
  ADT_Dictionary__Dictionary declDict;
  XML_Writer__Writer w;
  OOC_SymbolTable__Item ptr;
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteReference(const OOC_CHAR16 tagName__ref[], OOC_LEN tagName_0d, OOC_SymbolTable__Declaration decl);
  auto void OOC_SymbolTable_InterfaceDescr__Write_DeclDocString(OOC_SymbolTable__Declaration decl);
  auto void OOC_SymbolTable_InterfaceDescr__Write_DeclAttr(OOC_SymbolTable__Declaration decl);
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem(OOC_SymbolTable__Item item);
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteDeclList(OOC_SymbolTable__Item list, OOC_SymbolTable__Name className);
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteModuleRef(ADT_Dictionary__Dictionary modList);
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses(OOC_SymbolTable__Record topRecord);
  auto void OOC_SymbolTable_InterfaceDescr__Write_WriteKnownExtensions(Object__Object type);
    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteReference(const OOC_CHAR16 tagName__ref[], OOC_LEN tagName_0d, OOC_SymbolTable__Declaration decl) {
      register OOC_INT64 i0,i1,i2,i3,i4;
      OOC_ALLOCATE_VPAR(tagName,OOC_CHAR16 ,tagName_0d)
      OOC_SymbolTable__Module baseModule;
      OOC_SymbolTable__Name className;
      OOC_CHAR8 href[2048];
      OOC_Scanner_InputBuffer__CharArray id;

      OOC_INITIALIZE_VPAR(tagName__ref,tagName,OOC_CHAR16 ,(tagName_0d*2))
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2995)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, (void*)(OOC_INT64)tagName, tagName_0d, 0u);
      i0 = (OOC_INT64)decl;
      i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 3048)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i0);
      baseModule = (OOC_SymbolTable__Module)i1;
      i2 = (OOC_INT64)w;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3107))+40);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 3113))+16);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3107))+40);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 3113))+16);
      i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 3118)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 3067)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){109,111,100,117,108,101,0}), 7, (void*)(_check_pointer(i3, 3118)), i4);
      i2 = (OOC_INT64)w;
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3161))+40);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 3167))+16);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3161))+40);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 3167))+16);
      i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 3172)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 3129)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i3, 3172)), i4);
      i2 = (OOC_INT64)OOC_SymbolTable_GetClass__GetClass((OOC_SymbolTable__Item)i0);
      className = (OOC_SymbolTable__Name)i2;
      i3 = (OOC_INT64)w;
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 3266))+16);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 3266))+16);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 3271)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 3228)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i3, ((OOC_CHAR16[]){99,108,97,115,115,0}), 6, (void*)(_check_pointer(i4, 3271)), i2);
      i2 = (OOC_INT64)module;
      i2 = i2==i1;
      if (i2) goto l3;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3370))+40);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 3376))+16);
      _copy_8((const void*)(_check_pointer(i2, 3381)),(void*)(OOC_INT64)href,2048);
      goto l4;
l3:
      _copy_8((const void*)"",(void*)(OOC_INT64)href,2048);
l4:
      Strings__Append("#", 2, (void*)(OOC_INT64)href, 2048);
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 3451)))), OOC_SymbolTable__DeclarationDesc_GetId)),OOC_SymbolTable__DeclarationDesc_GetId)((OOC_SymbolTable__Declaration)i0);
      id = (OOC_Scanner_InputBuffer__CharArray)i0;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i0, 3486)), 0);
      Strings__Append((void*)(_check_pointer(i0, 3486)), i2, (void*)(OOC_INT64)href, 2048);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 3503)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){104,114,101,102,0}), 5, (void*)(OOC_INT64)href, 2048);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 3545)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      i0 = (OOC_INT64)module;
      i0 = i0!=i1;
      if (!i0) goto l10;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3654))+40);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3660))+16);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3654))+40);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3660))+16);
      i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 3665)), 0);
      i2 = (OOC_INT64)repositories;
      i0 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i2, (void*)(_check_pointer(i0, 3665)), i1);
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l10;
      i1 = (OOC_INT64)moduleDict;
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, (Object__Object)(OOC_INT64)0);
l10:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_DeclDocString(OOC_SymbolTable__Declaration decl) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
      OOC_SymbolTable__Record _class;
      OOC_SymbolTable__ProcDecl baseDef;
      ADT_Dictionary__Dictionary rewriteMap;
      OOC_INT32 i;
      auto OOC_SymbolTable__ProcDecl OOC_SymbolTable_InterfaceDescr__Write_DeclDocString_GetBaseDefinition(OOC_SymbolTable__Record superClass, OOC_SymbolTable__Name name);
        
        OOC_SymbolTable__ProcDecl OOC_SymbolTable_InterfaceDescr__Write_DeclDocString_GetBaseDefinition(OOC_SymbolTable__Record superClass, OOC_SymbolTable__Name name) {
          register OOC_INT64 i0,i1,i2,i3,i4;
          OOC_SymbolTable__Record _class;
          OOC_SymbolTable__Declaration baseDef;

          i0 = (OOC_INT64)superClass;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4200))+72);
          i1 = i1!=(OOC_INT64)0;
          if (i1) goto l3;
          return (OOC_SymbolTable__ProcDecl)(OOC_INT64)0;
          goto l12;
l3:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4252))+72);
          i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4267)))), &_td_OOC_SymbolTable__RecordDesc, 4267);
          _class = (OOC_SymbolTable__Record)i0;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4302))+96);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4302))+96);
          i3 = (OOC_INT64)module;
          i4 = (OOC_INT64)name;
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4306)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Item)i3, (OOC_SymbolTable__Name)i4, 0u);
          baseDef = (OOC_SymbolTable__Declaration)i1;
          i2 = i1==(OOC_INT64)0;
          if (i2) goto l6;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 4380))+56);
          i2 = i2==(OOC_INT64)0;
          
          goto l8;
l6:
          i2=1u;
l8:
          if (i2) goto l10;
          return (OOC_SymbolTable__ProcDecl)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4501)))), &_td_OOC_SymbolTable__ProcDeclDesc, 4501));
          goto l12;
l10:
          i0 = (OOC_INT64)OOC_SymbolTable_InterfaceDescr__Write_DeclDocString_GetBaseDefinition((OOC_SymbolTable__Record)i0, (OOC_SymbolTable__Name)i4);
          return (OOC_SymbolTable__ProcDecl)i0;
l12:
          _failed_function(3988); return 0;
          ;
        }


      i0 = (OOC_INT64)decl;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4629))+56);
      i1 = i1!=(OOC_INT64)0;
      if (i1) goto l21;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4799)))), &_td_OOC_SymbolTable__ProcDeclDesc);
      if (i1) goto l5;
      i1=0u;
      goto l7;
l5:
      i1 = OOC_SymbolTable__ProcDeclDesc_IsTypeBound((OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4827)))), &_td_OOC_SymbolTable__ProcDeclDesc, 4827)));
      
l7:
      if (!i1) goto l22;
      i1 = (OOC_INT64)OOC_SymbolTable__ProcDeclDesc_Class((OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 5062)))), &_td_OOC_SymbolTable__ProcDeclDesc, 5062)));
      _class = (OOC_SymbolTable__Record)i1;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5131))+40);
      i0 = (OOC_INT64)OOC_SymbolTable_InterfaceDescr__Write_DeclDocString_GetBaseDefinition((OOC_SymbolTable__Record)i1, (OOC_SymbolTable__Name)i0);
      baseDef = (OOC_SymbolTable__ProcDecl)i0;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l22;
      OOC_SymbolTable_InterfaceDescr__Write_WriteReference(((OOC_CHAR16[]){100,111,99,45,105,110,104,101,114,105,116,101,100,45,102,114,111,109,0}), 19, (OOC_SymbolTable__Declaration)i0);
      i1 = (OOC_INT64)ADT_Dictionary__New();
      rewriteMap = (ADT_Dictionary__Dictionary)i1;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5317))+112);
      i3 = (OOC_INT64)decl;
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 5377)))), &_td_OOC_SymbolTable__ProcDeclDesc, 5377)), 5386))+112);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 5329))+72);
      i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 5398))+72);
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i1, (Object__Object)i2, (Object__Object)i4);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5447))+112);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 5459))+96);
      i = 0;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 5467)), 0);
      i4 = 0<i2;
      if (!i4) goto l18;
      i4=0;
l13_loop:
      i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5511))+112);
      i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 5523))+96);
      i5 = _check_pointer(i5, 5531);
      i6 = OOC_ARRAY_LENGTH(i5, 0);
      i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 5574)))), &_td_OOC_SymbolTable__ProcDeclDesc, 5574)), 5583))+112);
      i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i7, 5595))+96);
      i7 = _check_pointer(i7, 5603);
      i8 = OOC_ARRAY_LENGTH(i7, 0);
      i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 5531))*8);
      i6 = (OOC_INT64)*(OOC_INT64*)(i7+(_check_index(i4, i8, OOC_UINT32, 5603))*8);
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i1, (Object__Object)i5, (Object__Object)i6);
      i4 = i4+1;
      i = i4;
      i5 = i4<i2;
      if (i5) goto l13_loop;
l18:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5677))+56);
      i2 = (OOC_INT64)w;
      i3 = (OOC_INT64)module;
      i4 = (OOC_INT64)repositories;
      i5 = (OOC_INT64)moduleDict;
      OOC_Doc_Output_XML__WriteOberonDoc((XML_Writer__Writer)i2, (OOC_Doc__Document)i0, (OOC_SymbolTable__Module)i3, (ADT_Dictionary__Dictionary)i1, (OOC_Config_Repositories__Section)i4, (ADT_Dictionary__Dictionary)i5);
      goto l22;
l21:
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4691))+56);
      i1 = (OOC_INT64)moduleDict;
      i2 = (OOC_INT64)repositories;
      i3 = (OOC_INT64)module;
      i4 = (OOC_INT64)w;
      OOC_Doc_Output_XML__WriteOberonDoc((XML_Writer__Writer)i4, (OOC_Doc__Document)i0, (OOC_SymbolTable__Module)i3, (ADT_Dictionary__Dictionary)(OOC_INT64)0, (OOC_Config_Repositories__Section)i2, (ADT_Dictionary__Dictionary)i1);
l22:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_DeclAttr(OOC_SymbolTable__Declaration decl) {
      register OOC_INT64 i0,i1,i2,i3;
      OOC_Scanner_InputBuffer__CharArray id;

      i0 = (OOC_INT64)w;
      i1 = (OOC_INT64)decl;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 5944))+40);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 5950))+16);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 5944))+40);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 5950))+16);
      i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 5955)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 5912)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i2, 5955)), i3);
      i0 = (OOC_INT64)declDict;
      i0 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i0, (Object__Object)i1);
      i0 = !i0;
      if (!i0) goto l4;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 6321)))), OOC_SymbolTable__DeclarationDesc_GetId)),OOC_SymbolTable__DeclarationDesc_GetId)((OOC_SymbolTable__Declaration)i1);
      id = (OOC_Scanner_InputBuffer__CharArray)i0;
      i2 = (OOC_INT64)w;
      i3 = OOC_ARRAY_LENGTH((_check_pointer(i0, 6369)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 6341)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){105,100,0}), 3, (void*)(_check_pointer(i0, 6369)), i3);
      i0 = (OOC_INT64)declDict;
      ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, (Object__Object)(OOC_INT64)0);
l4:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteItem(OOC_SymbolTable__Item item) {
      register OOC_INT64 i0,i1,i2,i3;
      Object__String str;
      OOC_Repository__Module moduleRepository;
      OOC_SymbolTable__Item i;
      OOC_CHAR8 element[32];
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl(const OOC_CHAR8 tag__ref[], OOC_LEN tag_0d, OOC_SymbolTable__Declaration decl);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(const OOC_CHAR16 tag__ref[], OOC_LEN tag_0d, OOC_SymbolTable__Type type, OOC_SymbolTable__Type resolvedType);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent(OOC_SymbolTable__Type type, OOC_SymbolTable__Type resolvedType);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(const OOC_CHAR16 tag__ref[], OOC_LEN tag_0d, OOC_SymbolTable__Type type, OOC_SymbolTable__Type resolvedType);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteBaseDefinitions(OOC_SymbolTable__Record superClass, OOC_SymbolTable__Name name);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteAliasList(OOC_SymbolTable__VarDecl receiver);
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypePars(OOC_SymbolTable__TypePars typePars);
        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl(const OOC_CHAR8 tag__ref[], OOC_LEN tag_0d, OOC_SymbolTable__Declaration decl) {
          register OOC_INT64 i0;
          OOC_ALLOCATE_VPAR(tag,OOC_CHAR8 ,tag_0d)

          OOC_INITIALIZE_VPAR(tag__ref,tag,OOC_CHAR8 ,tag_0d)
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 6696)))), XML_Writer__WriterDesc_StartTagLatin1)),XML_Writer__WriterDesc_StartTagLatin1)((XML_Writer__Writer)i0, (void*)(OOC_INT64)tag, tag_0d, 0u);
          i0 = (OOC_INT64)decl;
          OOC_SymbolTable_InterfaceDescr__Write_DeclAttr((OOC_SymbolTable__Declaration)i0);
          i0 = *(OOC_INT8*)((_check_pointer(i0, 6769))+52);
          switch (i0) {
          case 0:
            i0 = (OOC_INT64)w;
            OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 6827)))), XML_Writer__WriterDesc_AttrString)),XML_Writer__WriterDesc_AttrString)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){101,120,112,111,114,116,0}), 7, ((OOC_CHAR16[]){110,111,0}), 3);
            goto l6;
          case 1:
            i0 = (OOC_INT64)w;
            OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 6896)))), XML_Writer__WriterDesc_AttrString)),XML_Writer__WriterDesc_AttrString)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){101,120,112,111,114,116,0}), 7, ((OOC_CHAR16[]){121,101,115,0}), 4);
            goto l6;
          case 2:
            i0 = (OOC_INT64)w;
            OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 6968)))), XML_Writer__WriterDesc_AttrString)),XML_Writer__WriterDesc_AttrString)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){101,120,112,111,114,116,0}), 7, ((OOC_CHAR16[]){114,101,97,100,45,111,110,108,121,0}), 10);
            goto l6;
          default:
            _failed_case(i0, 6760);
            goto l6;
          }
l6:
          return;
          ;
        }

        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent(OOC_SymbolTable__Type type, OOC_SymbolTable__Type resolvedType) {
          register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
          OOC_SymbolTable__Name typeModule;
          OOC_SymbolTable__Module module;
          OOC_Scanner_InputBuffer__CharArray id;
          OOC_CHAR8 href[2048];
          OOC_SymbolTable__Import import;
          OOC_Repository__Module repModule;
          OOC_SymbolTable__Item i;
          OOC_INT32 j;

          i0 = (OOC_INT64)type;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 7466)))), &_td_OOC_SymbolTable__TypeNameDesc);
          if (i1) goto l70;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9267)))), &_td_OOC_SymbolTable__PointerDesc);
          if (i1) goto l68;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9438)))), &_td_OOC_SymbolTable__ArrayDesc);
          if (i1) goto l63;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9728)))), &_td_OOC_SymbolTable__RecordDesc);
          if (i1) goto l50;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10015)))), &_td_OOC_SymbolTable__FormalParsDesc);
          if (i1) goto l23;
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10775)))), &_td_OOC_SymbolTable__QualTypeDesc);
          if (i1) goto l13;
          _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10769)))), 10769);
          goto l107;
l13:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10804)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){113,117,97,108,105,102,105,101,100,45,116,121,112,101,0}), 15, 0u);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10872))+80);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10894))+72);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){116,121,112,101,0}), 5, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i2);
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10917)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){116,121,112,101,45,97,114,103,117,109,101,110,116,115,0}), 15, 0u);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10985))+88);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 10995)), 0);
          j = 0;
          i2 = 0<i1;
          if (!i2) goto l21;
          i2=0;
l16_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11038))+88);
          i3 = _check_pointer(i3, 11048);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11100))+88);
          i5 = _check_pointer(i5, 11110);
          i6 = OOC_ARRAY_LENGTH(i5, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 11048))*16))+8);
          i4 = (OOC_INT64)*(OOC_INT64*)(i5+((_check_index(i2, i6, OOC_UINT32, 11110))*16));
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i4);
          i2 = i2+1;
          j = i2;
          i3 = i2<i1;
          if (i3) goto l16_loop;
l21:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11147)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11169)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          goto l107;
l23:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10046)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){102,111,114,109,97,108,45,112,97,114,97,109,101,116,101,114,115,0}), 18, 0u);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10105))+72);
          i1 = i1!=(OOC_INT64)0;
          if (!i1) goto l26;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10155))+72);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i1);
l26:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10216))+96);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 10224)), 0);
          j = 0;
          i2 = 0<i1;
          if (!i2) goto l34;
          i2=0;
l29_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10259))+96);
          i3 = _check_pointer(i3, 10267);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 10267))*8);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i3);
          i2 = i2+1;
          j = i2;
          i3 = i2<i1;
          if (i3) goto l29_loop;
l34:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10305))+88);
          i1 = i1!=(OOC_INT64)0;
          if (!i1) goto l37;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10404))+80);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10379))+88);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){114,101,115,117,108,116,45,116,121,112,101,0}), 12, (OOC_SymbolTable__Type)i2, (OOC_SymbolTable__Type)i1);
l37:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10455))+112);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 10462)), 0);
          i1 = i1!=0;
          if (!i1) goto l48;
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10488)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){101,120,99,101,112,116,105,111,110,115,0}), 11, 0u);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10554))+112);
          j = 0;
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 10561)), 0);
          i2 = 0<i1;
          if (!i2) goto l47;
          i2=0;
l42_loop:
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10606))+112);
          i3 = _check_pointer(i3, 10613);
          i4 = OOC_ARRAY_LENGTH(i3, 0);
          i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 10613))*8);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10667))+112);
          i4 = _check_pointer(i4, 10674);
          i5 = OOC_ARRAY_LENGTH(i4, 0);
          i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 10674))*8);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 10616))+48);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 10677))+40);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent((OOC_SymbolTable__Type)i3, (OOC_SymbolTable__Type)i4);
          i2 = i2+1;
          j = i2;
          i3 = i2<i1;
          if (i3) goto l42_loop;
l47:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10715)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
l48:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10750)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          goto l107;
l50:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9755)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){114,101,99,111,114,100,0}), 7, 0u);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9804))+16);
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (!i1) goto l61;
l53_loop:
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9866)))), &_td_OOC_SymbolTable__FieldDeclDesc);
          if (!i1) goto l56;
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i0);
l56:
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9952));
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (i1) goto l53_loop;
l61:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9991)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          goto l107;
l63:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9464)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){97,114,114,97,121,0}), 6, 0u);
          i1 = *(OOC_UINT8*)((_check_pointer(i0, 9511))+72);
          i1 = !i1;
          if (!i1) goto l66;
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9543)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){108,101,110,103,116,104,0}), 7, 0u);
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9586)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i1);
l66:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9651))+88);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9677))+80);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){101,108,101,109,101,110,116,45,116,121,112,101,0}), 13, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9704)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          goto l107;
l68:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9295)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){112,111,105,110,116,101,114,0}), 8, 0u);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9367))+80);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9390))+72);
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){112,111,105,110,116,101,114,45,98,97,115,101,0}), 13, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9414)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          goto l107;
l70:
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7495)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){116,121,112,101,45,110,97,109,101,0}), 10, 0u);
          i1 = OOC_SymbolTable__TypeNameDesc_IsPredefReference((OOC_SymbolTable__TypeName)i0);
          if (i1) goto l73;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7647))+72);
          typeModule = (OOC_SymbolTable__Name)i1;
          
          goto l74;
l73:
          typeModule = (OOC_SymbolTable__Name)(OOC_INT64)0;
          i1=(OOC_INT64)0;
l74:
          i2 = i1!=(OOC_INT64)0;
          if (i2) goto l84;
          i1 = (OOC_INT64)resolvedType;
          i3 = i1!=(OOC_INT64)0;
          if (i3) goto l79;
          i3=0u;
          goto l81;
l79:
          i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7822)))), &_td_OOC_SymbolTable__PredefTypeDesc);
          
l81:
          if (!i3) goto l85;
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8155)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i1);
          module = (OOC_SymbolTable__Module)i1;
          i3 = (OOC_INT64)w;
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8216))+40);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 8222))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8216))+40);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8222))+16);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 8227)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 8180)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i3, ((OOC_CHAR16[]){109,111,100,117,108,101,0}), 7, (void*)(_check_pointer(i4, 8227)), i1);
          goto l85;
l84:
          i3 = (OOC_INT64)w;
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 7761))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 7761))+16);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 7766)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 7721)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i3, ((OOC_CHAR16[]){109,111,100,117,108,101,0}), 7, (void*)(_check_pointer(i4, 7766)), i1);
l85:
          i1 = (OOC_INT64)w;
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8288))+80);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 8295))+16);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8288))+80);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 8295))+16);
          i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 8300)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8256)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i3, 8300)), i4);
          if (i2) goto l88;
          i1 = (OOC_INT64)resolvedType;
          i1 = i1==(OOC_INT64)0;
          
          goto l90;
l88:
          i1=1u;
l90:
          if (i1) goto l92;
          i1 = (OOC_INT64)resolvedType;
          i1 = !(OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8402)))), &_td_OOC_SymbolTable__PredefTypeDesc));
          
          goto l94;
l92:
          i1=1u;
l94:
          if (!i1) goto l106;
          i1 = (OOC_INT64)resolvedType;
          i3 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8455)))), &_td_OOC_SymbolTable__TypeVarDesc);
          if (i3) goto l104;
          if (i2) goto l99;
          _copy_8((const void*)"",(void*)(OOC_INT64)href,2048);
          goto l103;
l99:
          i1 = (OOC_INT64)OOC_SymbolTable__TypeNameDesc_GetImport((OOC_SymbolTable__TypeName)i0);
          import = (OOC_SymbolTable__Import)i1;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8733))+96);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8749))+40);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8755))+16);
          _copy_8((const void*)(_check_pointer(i2, 8760)),(void*)(OOC_INT64)href,2048);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8830))+96);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8846))+40);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8852))+16);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8830))+96);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8846))+40);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8852))+16);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i1, 8857)), 0);
          i3 = (OOC_INT64)repositories;
          i1 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i3, (void*)(_check_pointer(i2, 8857)), i1);
          repModule = (OOC_Repository__Module)i1;
          i2 = i1!=(OOC_INT64)0;
          if (!i2) goto l103;
          i2 = (OOC_INT64)moduleDict;
          ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i2, (Object__Object)i1, (Object__Object)(OOC_INT64)0);
l103:
          Strings__Append("#", 2, (void*)(OOC_INT64)href, 2048);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9121))+80);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9128))+16);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9121))+80);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9128))+16);
          i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 9133)), 0);
          Strings__Append((void*)(_check_pointer(i1, 9133)), i0, (void*)(OOC_INT64)href, 2048);
          goto l105;
l104:
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8508))+48);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8508))+48);
          i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 8519)))), OOC_SymbolTable__DeclarationDesc_GetId)),OOC_SymbolTable__DeclarationDesc_GetId)((OOC_SymbolTable__Declaration)i1);
          id = (OOC_Scanner_InputBuffer__CharArray)i0;
          _copy_8((const void*)"#",(void*)(OOC_INT64)href,2048);
          i1 = OOC_ARRAY_LENGTH((_check_pointer(i0, 8592)), 0);
          Strings__Append((void*)(_check_pointer(i0, 8592)), i1, (void*)(OOC_INT64)href, 2048);
l105:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9173)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){104,114,101,102,0}), 5, (void*)(OOC_INT64)href, 2048);
l106:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9233)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
l107:
          return;
          ;
        }

        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(const OOC_CHAR16 tag__ref[], OOC_LEN tag_0d, OOC_SymbolTable__Type type, OOC_SymbolTable__Type resolvedType) {
          register OOC_INT64 i0,i1;
          OOC_ALLOCATE_VPAR(tag,OOC_CHAR16 ,tag_0d)

          OOC_INITIALIZE_VPAR(tag__ref,tag,OOC_CHAR16 ,(tag_0d*2))
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11327)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, (void*)(OOC_INT64)tag, tag_0d, 0u);
          i0 = (OOC_INT64)type;
          i1 = (OOC_INT64)resolvedType;
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent((OOC_SymbolTable__Type)i0, (OOC_SymbolTable__Type)i1);
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11410)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          return;
          ;
        }

        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteBaseDefinitions(OOC_SymbolTable__Record superClass, OOC_SymbolTable__Name name) {
          register OOC_INT64 i0,i1,i2,i3,i4;
          OOC_SymbolTable__Record _class;

          i0 = (OOC_INT64)superClass;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11627))+72);
          i1 = i1!=(OOC_INT64)0;
          if (!i1) goto l6;
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11679))+72);
          i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11694)))), &_td_OOC_SymbolTable__RecordDesc, 11694);
          _class = (OOC_SymbolTable__Record)i0;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11729))+96);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11729))+96);
          i3 = (OOC_INT64)module;
          i4 = (OOC_INT64)name;
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 11733)))), OOC_SymbolTable__NamespaceDesc_Identify)),OOC_SymbolTable__NamespaceDesc_Identify)((OOC_SymbolTable__Namespace)i2, (OOC_SymbolTable__Item)i3, (OOC_SymbolTable__Name)i4, 0u);
          i2 = i1!=(OOC_INT64)0;
          if (!i2) goto l5;
          OOC_SymbolTable_InterfaceDescr__Write_WriteReference(((OOC_CHAR16[]){114,101,100,101,102,105,110,101,100,45,109,101,116,104,111,100,0}), 17, (OOC_SymbolTable__Declaration)i1);
l5:
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteBaseDefinitions((OOC_SymbolTable__Record)i0, (OOC_SymbolTable__Name)i4);
l6:
          return;
          ;
        }

        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteAliasList(OOC_SymbolTable__VarDecl receiver) {
          register OOC_INT64 i0,i1,i2,i3;
          OOC_SymbolTable__Item i;
          OOC_Scanner_InputBuffer__CharArray id;

          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12096)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){116,121,112,101,45,97,108,105,97,115,45,108,105,115,116,0}), 16, 0u);
          i0 = (OOC_INT64)receiver;
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 12154))+8);
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12166)))), &_td_OOC_SymbolTable__FormalParsDesc, 12166)), 12177))+16);
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (!i1) goto l11;
l3_loop:
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12234)))), &_td_OOC_SymbolTable__TypeDeclDesc);
          if (!i1) goto l6;
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 12265)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){116,121,112,101,45,97,108,105,97,115,0}), 11, 0u);
          i1 = (OOC_INT64)w;
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 12337))+40);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 12342))+16);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 12337))+40);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 12342))+16);
          i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 12346)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 12310)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i2, 12346)), i3);
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12369)))), OOC_SymbolTable__DeclarationDesc_GetId)),OOC_SymbolTable__DeclarationDesc_GetId)((OOC_SymbolTable__Declaration)i0);
          id = (OOC_Scanner_InputBuffer__CharArray)i1;
          i2 = (OOC_INT64)w;
          i3 = OOC_ARRAY_LENGTH((_check_pointer(i1, 12420)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 12392)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){105,100,0}), 3, (void*)(_check_pointer(i1, 12420)), i3);
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 12437)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i1);
l6:
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12519));
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (i1) goto l3_loop;
l11:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12554)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          return;
          ;
        }

        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypePars(OOC_SymbolTable__TypePars typePars) {
          register OOC_INT64 i0,i1;
          OOC_SymbolTable__Item i;

          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12701)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){116,121,112,101,45,112,97,114,97,109,101,116,101,114,115,0}), 16, 0u);
          i0 = (OOC_INT64)typePars;
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 12759))+16);
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (!i1) goto l11;
l3_loop:
          i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12816)))), &_td_OOC_SymbolTable__TypeDeclDesc);
          if (!i1) goto l6;
          OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i0);
l6:
          i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12931));
          i = (OOC_SymbolTable__Item)i0;
          i1 = i0!=(OOC_INT64)0;
          if (i1) goto l3_loop;
l11:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12966)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          return;
          ;
        }


      i0 = (OOC_INT64)item;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l74;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13061)))), &_td_OOC_SymbolTable__ModuleDesc);
      if (i1) goto l58;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13897)))), &_td_OOC_SymbolTable__ImportDesc);
      if (i1) goto l56;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14177)))), &_td_OOC_SymbolTable__ConstDeclDesc);
      if (i1) goto l54;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14359)))), &_td_OOC_SymbolTable__TypeDeclDesc);
      if (i1) goto l45;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14885)))), &_td_OOC_SymbolTable__VarDeclDesc);
      if (i1) goto l29;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15495)))), &_td_OOC_SymbolTable__FieldDeclDesc);
      if (i1) goto l24;
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16004)))), &_td_OOC_SymbolTable__ProcDeclDesc);
      if (!i1) goto l74;
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 16040))+89);
      i1 = !i1;
      if (!i1) goto l74;
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("procedure", 10, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)item;
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16174))+112);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16192))+112);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypeComponent((OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      i0 = (OOC_INT64)item;
      i1 = OOC_SymbolTable__ProcDeclDesc_IsTypeBound((OOC_SymbolTable__ProcDecl)i0);
      if (!i1) goto l21;
      i1 = (OOC_INT64)OOC_SymbolTable__ProcDeclDesc_Class((OOC_SymbolTable__ProcDecl)i0);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16301))+40);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteBaseDefinitions((OOC_SymbolTable__Record)i1, (OOC_SymbolTable__Name)i0);
l21:
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16339)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l24:
      i1 = *(OOC_INT8*)((_check_pointer(i0, 15532))+52);
      i1 = i1!=0;
      if (!i1) goto l74;
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("field-decl", 11, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)item;
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15915))+96);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15934))+88);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){116,121,112,101,0}), 5, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15956)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l29:
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 14919))+105);
      if (i1) goto l36;
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 14996))+104);
      if (i1) goto l34;
      _copy_8((const void*)"var-decl",(void*)(OOC_INT64)element,32);
      goto l37;
l34:
      _copy_8((const void*)"parameter-decl",(void*)(OOC_INT64)element,32);
      goto l37;
l36:
      _copy_8((const void*)"receiver-decl",(void*)(OOC_INT64)element,32);
l37:
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl((void*)(OOC_INT64)element, 32, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)item;
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 15173))+104);
      if (!i1) goto l40;
      i1 = (OOC_INT64)w;
      i2 = *(OOC_UINT8*)((_check_pointer(i0, 15243))+107);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15205)))), XML_Writer__WriterDesc_AttrBool)),XML_Writer__WriterDesc_AttrBool)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){118,97,114,105,97,98,108,101,45,112,97,114,97,109,101,116,101,114,0}), 19, i2);
l40:
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15337))+96);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15356))+88);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){116,121,112,101,0}), 5, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      i0 = (OOC_INT64)item;
      i1 = *(OOC_UINT8*)((_check_pointer(i0, 15382))+106);
      if (!i1) goto l43;
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteAliasList((OOC_SymbolTable__VarDecl)i0);
l43:
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15461)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l45:
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("type-decl", 10, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)item;
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14468))+88);
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14474)))), &_td_OOC_SymbolTable__TypeVarDesc);
      if (i1) goto l48;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14692))+96);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14711))+88);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){116,121,112,101,0}), 5, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
      goto l49;
l48:
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14555))+88);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14615))+88);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14565)))), &_td_OOC_SymbolTable__TypeVarDesc, 14565)), 14573))+80);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14625)))), &_td_OOC_SymbolTable__TypeVarDesc, 14625)), 14633))+72);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteType(((OOC_CHAR16[]){116,121,112,101,0}), 5, (OOC_SymbolTable__Type)i1, (OOC_SymbolTable__Type)i0);
l49:
      i0 = (OOC_INT64)item;
      i1 = OOC_SymbolTable__TypeDeclDesc_HasTypeParameters((OOC_SymbolTable__TypeDecl)i0);
      if (!i1) goto l52;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14808))+88);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14813))+56);
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_WriteTypePars((OOC_SymbolTable__TypePars)i0);
l52:
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14851)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l54:
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("const-decl", 11, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14249)))), XML_Writer__WriterDesc_AttrString)),XML_Writer__WriterDesc_AttrString)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){118,97,108,117,101,0}), 6, ((OOC_CHAR16[]){117,110,107,110,111,119,110,0}), 8);
      i0 = (OOC_INT64)item;
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14327)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l56:
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("import-decl", 12, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)w;
      i1 = (OOC_INT64)item;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14001))+88);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 14013))+16);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14001))+88);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 14013))+16);
      i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 14018)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13967)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){109,111,100,117,108,101,0}), 7, (void*)(_check_pointer(i2, 14018)), i3);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14081))+88);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14093))+16);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14081))+88);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 14093))+16);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 14098)), 0);
      i3 = (OOC_INT64)repositories;
      i0 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i3, (void*)(_check_pointer(i0, 14098)), i2);
      moduleRepository = (OOC_Repository__Module)i0;
      OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i1);
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14145)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
      goto l74;
l58:
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem_StartDecl("module-interface", 17, (OOC_SymbolTable__Declaration)i0);
      i0 = (OOC_INT64)item;
      i1 = (OOC_INT64)OOC_SymbolTable__ModuleDesc_ClassToString((OOC_SymbolTable__Module)i0);
      str = (Object__String)i1;
      i2 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 13227)))), XML_Writer__WriterDesc_AttrObject)),XML_Writer__WriterDesc_AttrObject)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){99,108,97,115,115,0}), 6, (Object__String)i1);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13304))+104);
      i1 = i1!=(OOC_INT64)0;
      if (!i1) goto l61;
      i1 = (OOC_INT64)w;
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13375))+104);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 13342)))), XML_Writer__WriterDesc_AttrObject)),XML_Writer__WriterDesc_AttrObject)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){108,105,98,114,97,114,121,45,110,97,109,101,0}), 13, (Object__String)i2);
l61:
      i1 = (OOC_INT64)OOC_SymbolTable__ModuleDesc_CallConvToString((OOC_SymbolTable__Module)i0);
      str = (Object__String)i1;
      i2 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 13520)))), XML_Writer__WriterDesc_AttrObject)),XML_Writer__WriterDesc_AttrObject)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){99,97,108,108,45,99,111,110,118,0}), 10, (Object__String)i1);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13631))+40);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13637))+16);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13631))+40);
      i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 13637))+16);
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 13642)), 0);
      i3 = (OOC_INT64)repositories;
      i1 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i3, (void*)(_check_pointer(i1, 13642)), i2);
      moduleRepository = (OOC_Repository__Module)i1;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13676))+16);
      i = (OOC_SymbolTable__Item)i0;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l72;
l64_loop:
      i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13738)))), &_td_OOC_SymbolTable__DeclarationDesc);
      if (!i1) goto l67;
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i0);
l67:
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 13826));
      i = (OOC_SymbolTable__Item)i0;
      i1 = i0!=(OOC_INT64)0;
      if (i1) goto l64_loop;
l72:
      i0 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13865)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
l74:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteDeclList(OOC_SymbolTable__Item list, OOC_SymbolTable__Name className) {
      register OOC_INT64 i0,i1,i2;
      OOC_SymbolTable__Name itemClass;

      i0 = (OOC_INT64)list;
      i1 = i0!=(OOC_INT64)0;
      if (!i1) goto l11;
      i1 = (OOC_INT64)className;
      
l3_loop:
      i2 = (OOC_INT64)OOC_SymbolTable_GetClass__GetClass((OOC_SymbolTable__Item)i0);
      itemClass = (OOC_SymbolTable__Name)i2;
      i2 = i2==i1;
      if (!i2) goto l6;
      OOC_SymbolTable_InterfaceDescr__Write_WriteItem((OOC_SymbolTable__Item)i0);
l6:
      i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 16708));
      list = (OOC_SymbolTable__Item)i0;
      i2 = i0!=(OOC_INT64)0;
      if (i2) goto l3_loop;
l11:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteModuleRef(ADT_Dictionary__Dictionary modList) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7;
      OOC_Repository__Module thisModule;
      URI__HierarchicalURI baseURI;
      Object__ObjectArrayPtr keys;
      OOC_INT32 i;
      OOC_Repository__Module remoteMod;
      URI__URI remoteURI;
      URI__URI relativeURI;

      i0 = (OOC_INT64)module;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17063))+40);
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17069))+16);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17063))+40);
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17069))+16);
      i0 = OOC_ARRAY_LENGTH((_check_pointer(i0, 17074)), 0);
      i2 = (OOC_INT64)repositories;
      i0 = (OOC_INT64)OOC_Config_Repositories__SectionDesc_GetModule((OOC_Config_Repositories__Section)i2, (void*)(_check_pointer(i1, 17074)), i0);
      thisModule = (OOC_Repository__Module)i0;
      i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17105)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i0, 5, 0u);
      baseURI = (URI__HierarchicalURI)i0;
      i1 = (OOC_INT64)modList;
      i1 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Keys((ADT_Dictionary__Dictionary)i1);
      keys = (Object__ObjectArrayPtr)i1;
      i = 0;
      i2 = OOC_ARRAY_LENGTH((_check_pointer(i1, 17219)), 0);
      i3 = 0<i2;
      if (!i3) goto l8;
      i3=0;
l3_loop:
      i4 = _check_pointer(i1, 17252);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 17252))*8);
      i4 = _type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17267)))), &_td_OOC_Repository__ModuleDesc, 17267);
      remoteMod = (OOC_Repository__Module)i4;
      i5 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 17286)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i5, ((OOC_CHAR16[]){109,111,100,117,108,101,45,114,101,102,0}), 11, 0u);
      i5 = (OOC_INT64)w;
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 17366))+8);
      i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 17366))+8);
      i7 = OOC_ARRAY_LENGTH((_check_pointer(i7, 17372)), 0);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 17329)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i5, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i6, 17372)), i7);
      i5 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 17386)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i5, ((OOC_CHAR16[]){114,101,102,45,116,97,114,103,101,116,0}), 11, 0u);
      i5 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 17429)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i5, ((OOC_CHAR16[]){116,121,112,101,0}), 5, "html", 5);
      i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17496)))), OOC_Repository__ModuleDesc_GetURI)),OOC_Repository__ModuleDesc_GetURI)((OOC_Repository__Module)i4, 5, 0u);
      remoteURI = (URI__URI)i4;
      i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17575)))), URI__URIDesc_MakeRelative)),URI__URIDesc_MakeRelative)((URI__URI)i4, (URI__HierarchicalURI)i0);
      relativeURI = (URI__URI)i4;
      i5 = (OOC_INT64)w;
      i4 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17651)))), URI__URIDesc_ToString)),URI__URIDesc_ToString)((URI__URI)i4);
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 17610)))), XML_Writer__WriterDesc_AttrObject)),XML_Writer__WriterDesc_AttrObject)((XML_Writer__Writer)i5, ((OOC_CHAR16[]){114,101,108,97,116,105,118,101,45,117,114,105,0}), 13, (Object__String)i4);
      i4 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17674)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i4);
      i4 = (OOC_INT64)w;
      OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 17694)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i4);
      i3 = i3+1;
      i = i3;
      i4 = i3<i2;
      if (i4) goto l3_loop;
l8:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses(OOC_SymbolTable__Record topRecord) {
      register OOC_INT64 i0,i1;
      ADT_ArrayList__ArrayList omitMethod;
      auto void OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord(OOC_SymbolTable__Record record);
        
        void OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord(OOC_SymbolTable__Record record) {
          register OOC_INT64 i0,i1,i2,i3,i4,i5;
          OOC_SymbolTable__Module module;
          OOC_CHAR8 href[2048];
          OOC_SymbolTable_Namespace__Namespace ns;
          OOC_INT32 i;
          OOC_SymbolTable__Item item;
          auto OOC_CHAR8 OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord_NewMethod(OOC_SymbolTable__ProcDecl method);
            
            OOC_CHAR8 OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord_NewMethod(OOC_SymbolTable__ProcDecl method) {
              register OOC_INT64 i0,i1,i2,i3,i4,i5;
              OOC_INT32 i;

              i0 = (OOC_INT64)omitMethod;
              i = 0;
              i1 = *(OOC_INT32*)((_check_pointer(i0, 18195))+8);
              i2 = 0<i1;
              if (!i2) goto l11;
              i2 = (OOC_INT64)method;
              i3=0;
l3_loop:
              i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 18233));
              i4 = _check_pointer(i4, 18240);
              i5 = OOC_ARRAY_LENGTH(i4, 0);
              i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 18240))*8);
              i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 18248)))), &_td_OOC_SymbolTable__DeclarationDesc, 18248)), 18260))+40);
              i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 18266))+16);
              i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 18297))+40);
              i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i5, 18303))+16);
              i4 = (
              _cmp8((const void*)(_check_pointer(i4, 18271)),(const void*)(_check_pointer(i5, 18308))))==0;
              if (!i4) goto l6;
              return 0u;
l6:
              i3 = i3+1;
              i = i3;
              i4 = i3<i1;
              if (i4) goto l3_loop;
l11:
              return 1u;
              ;
            }


          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 18447)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){98,97,115,101,45,99,108,97,115,115,0}), 11, 0u);
          i0 = (OOC_INT64)record;
          i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 18505)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i0);
          module = (OOC_SymbolTable__Module)i1;
          i2 = (OOC_INT64)w;
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18562))+40);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 18568))+16);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18562))+40);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 18568))+16);
          i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 18573)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 18526)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){109,111,100,117,108,101,0}), 7, (void*)(_check_pointer(i3, 18573)), i4);
          i2 = (OOC_INT64)w;
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18621))+112);
          i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 18632))+16);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18621))+112);
          i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 18632))+16);
          i4 = OOC_ARRAY_LENGTH((_check_pointer(i4, 18637)), 0);
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 18586)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i2, ((OOC_CHAR16[]){99,108,97,115,115,0}), 6, (void*)(_check_pointer(i3, 18637)), i4);
          i2 = (OOC_INT64)topRecord;
          i2 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 18662)))), OOC_SymbolTable__ItemDesc_Module)),OOC_SymbolTable__ItemDesc_Module)((OOC_SymbolTable__Item)i2);
          i2 = i2==i1;
          if (i2) goto l3;
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18749))+40);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18755))+16);
          _copy_8((const void*)(_check_pointer(i1, 18760)),(void*)(OOC_INT64)href,2048);
          goto l4;
l3:
          _copy_8((const void*)"",(void*)(OOC_INT64)href,2048);
l4:
          Strings__Append("#", 2, (void*)(OOC_INT64)href, 2048);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18848))+112);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18859))+16);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18848))+112);
          i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 18859))+16);
          i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 18864)), 0);
          Strings__Append((void*)(_check_pointer(i1, 18864)), i2, (void*)(OOC_INT64)href, 2048);
          i1 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18883)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){104,114,101,102,0}), 5, (void*)(OOC_INT64)href, 2048);
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18947))+96);
          i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18962)))), &_td_OOC_SymbolTable_Namespace__NamespaceDesc, 18962);
          ns = (OOC_SymbolTable_Namespace__Namespace)i1;
          i = 0;
          i2 = *(OOC_INT32*)((_check_pointer(i1, 18998))+8);
          i3 = 0<i2;
          if (!i3) goto l31;
          i3=0;
l7_loop:
          i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 19036));
          i4 = _check_pointer(i4, 19047);
          i5 = OOC_ARRAY_LENGTH(i4, 0);
          i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i3, i5, OOC_UINT32, 19047))*8);
          item = (OOC_SymbolTable__Item)i4;
          i5 = *(OOC_INT8*)((_check_pointer((_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19075)))), &_td_OOC_SymbolTable__DeclarationDesc, 19075)), 19087))+52);
          i5 = i5!=0;
          if (i5) goto l10;
          i5=0u;
          goto l16;
l10:
          i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19145)))), &_td_OOC_SymbolTable__FieldDeclDesc);
          if (i5) goto l13;
          i5 = OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord_NewMethod((OOC_SymbolTable__ProcDecl)(_type_guard(i4, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19186)))), &_td_OOC_SymbolTable__ProcDeclDesc, 19186)));
          
          goto l16;
l13:
          i5=1u;
l16:
          if (!i5) goto l26;
          i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19224)))), &_td_OOC_SymbolTable__FieldDeclDesc);
          if (i5) goto l24;
          i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19316)))), &_td_OOC_SymbolTable__ProcDeclDesc);
          if (i5) goto l22;
          _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19310)))), 19310);
          goto l26;
l22:
          OOC_SymbolTable_InterfaceDescr__Write_WriteReference(((OOC_CHAR16[]){105,110,104,101,114,105,116,101,100,45,109,101,116,104,111,100,0}), 17, (OOC_SymbolTable__Declaration)i4);
          i5 = (OOC_INT64)omitMethod;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 19415)))), ADT_ArrayList__ArrayListDesc_Append)),ADT_ArrayList__ArrayListDesc_Append)((ADT_ArrayList__ArrayList)i5, (Object__Object)i4);
          goto l26;
l24:
          OOC_SymbolTable_InterfaceDescr__Write_WriteReference(((OOC_CHAR16[]){105,110,104,101,114,105,116,101,100,45,102,105,101,108,100,0}), 16, (OOC_SymbolTable__Declaration)i4);
l26:
          i3 = i3+1;
          i = i3;
          i4 = i3<i2;
          if (i4) goto l7_loop;
l31:
          i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19501))+72);
          i1 = i1!=0;
          if (!i1) goto l34;
          i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19553))+72);
          OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord((OOC_SymbolTable__Record)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 19568)))), &_td_OOC_SymbolTable__RecordDesc, 19568)));
l34:
          i0 = (OOC_INT64)w;
          OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 19608)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
          return;
          ;
        }


      i0 = (OOC_INT64)ADT_ArrayList__New(16);
      omitMethod = (ADT_ArrayList__ArrayList)i0;
      i0 = (OOC_INT64)topRecord;
      i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19714))+72);
      i1 = i1!=(OOC_INT64)0;
      if (!i1) goto l4;
      i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19767))+72);
      OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses_WriteRecord((OOC_SymbolTable__Record)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 19782)))), &_td_OOC_SymbolTable__RecordDesc, 19782)));
l4:
      return;
      ;
    }

    
    void OOC_SymbolTable_InterfaceDescr__Write_WriteKnownExtensions(Object__Object type) {
      register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
      ADT_ArrayList__ArrayList list;
      OOC_INT32 i;
      OOC_SymbolTable__Item item;

      i0 = (OOC_INT64)extensionDict;
      i1 = i0!=(OOC_INT64)0;
      if (i1) goto l3;
      i0=0u;
      goto l5;
l3:
      i1 = (OOC_INT64)type;
      i0 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i0, (Object__Object)i1);
      
l5:
      if (!i0) goto l32;
      i0 = (OOC_INT64)type;
      i1 = (OOC_INT64)extensionDict;
      i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i1, (Object__Object)i0);
      list = (ADT_ArrayList__ArrayList)i0;
      i = 0;
      i1 = *(OOC_INT32*)((_check_pointer(i0, 20113))+8);
      i2 = 0<i1;
      if (!i2) goto l32;
      i2=0;
l9_loop:
      i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 20147));
      i3 = _check_pointer(i3, 20154);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 20154))*8);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20162)))), &_td_OOC_SymbolTable__RecordDesc, 20162)), 20169))+8);
      i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 20177))+16);
      item = (OOC_SymbolTable__Item)i3;
      i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20216)))), &_td_OOC_SymbolTable__TypeDeclDesc);
      if (i4) goto l12;
      i4=0u;
      goto l13;
l12:
      i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 20285));
      i4 = _check_pointer(i4, 20292);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20263)))), &_td_OOC_SymbolTable__TypeDeclDesc, 20263)), 20272))+88);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 20292))*8);
      i4 = i6==i4;
      
l13:
      i4 = !i4;
      if (!i4) goto l26;
l17_loop:
      i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 20325));
      item = (OOC_SymbolTable__Item)i3;
      i4 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20216)))), &_td_OOC_SymbolTable__TypeDeclDesc);
      if (i4) goto l20;
      i4=0u;
      goto l21;
l20:
      i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 20285));
      i4 = _check_pointer(i4, 20292);
      i5 = OOC_ARRAY_LENGTH(i4, 0);
      i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20263)))), &_td_OOC_SymbolTable__TypeDeclDesc, 20263)), 20272))+88);
      i4 = (OOC_INT64)*(OOC_INT64*)(i4+(_check_index(i2, i5, OOC_UINT32, 20292))*8);
      i4 = i6==i4;
      
l21:
      i4 = !i4;
      if (i4) goto l17_loop;
l26:
      OOC_SymbolTable_InterfaceDescr__Write_WriteReference(((OOC_CHAR16[]){107,110,111,119,110,45,101,120,116,101,110,115,105,111,110,0}), 16, (OOC_SymbolTable__Declaration)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 20407)))), &_td_OOC_SymbolTable__TypeDeclDesc, 20407)));
      i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 20455));
      i3 = _check_pointer(i3, 20462);
      i4 = OOC_ARRAY_LENGTH(i3, 0);
      i3 = (OOC_INT64)*(OOC_INT64*)(i3+(_check_index(i2, i4, OOC_UINT32, 20462))*8);
      OOC_SymbolTable_InterfaceDescr__Write_WriteKnownExtensions((Object__Object)i3);
      i2 = i2+1;
      i = i2;
      i3 = i2<i1;
      if (i3) goto l9_loop;
l32:
      return;
      ;
    }


  i0 = (OOC_INT64)ADT_Dictionary__New();
  moduleDict = (ADT_Dictionary__Dictionary)i0;
  i0 = (OOC_INT64)ADT_Dictionary__New();
  declDict = (ADT_Dictionary__Dictionary)i0;
  i0 = (OOC_INT64)cw;
  i1 = (OOC_INT64)XML_UnicodeCodec_Latin1__factory;
  i0 = (OOC_INT64)XML_Writer__New((IO__ByteChannel)i0, (XML_UnicodeCodec__Factory)i1, 1u, 2);
  w = (XML_Writer__Writer)i0;
  i1 = (OOC_INT64)baseURI;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20654)))), XML_Writer__WriterDesc_SetBaseURI)),XML_Writer__WriterDesc_SetBaseURI)((XML_Writer__Writer)i0, (URI__HierarchicalURI)i1);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20683)))), XML_Writer__WriterDesc_WriteTextDecl)),XML_Writer__WriterDesc_WriteTextDecl)((XML_Writer__Writer)i0, "1.0", 4, "no", 3);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20719)))), XML_Writer__WriterDesc_NewLine)),XML_Writer__WriterDesc_NewLine)((XML_Writer__Writer)i0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20735)))), XML_UnicodeBuffer__OutputDesc_Write8)),XML_UnicodeBuffer__OutputDesc_Write8)((XML_UnicodeBuffer__Output)i0, "<!DOCTYPE interface-description SYSTEM \047", 41);
  i1 = (OOC_INT64)repositories;
  i1 = (OOC_INT64)OOC_SymbolTable_InterfaceDescr__GetSystemId((OOC_Config_Repositories__Section)i1);
  i2 = OOC_SymbolTable_InterfaceDescr__absoluteDtdSystemId;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20795)))), XML_Writer__WriterDesc_WriteURI)),XML_Writer__WriterDesc_WriteURI)((XML_Writer__Writer)i0, (URI__URI)i1, i2);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 20862)))), XML_UnicodeBuffer__OutputDesc_Write8)),XML_UnicodeBuffer__OutputDesc_Write8)((XML_UnicodeBuffer__Output)i0, "\047>", 3);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21133)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i0, ((OOC_CHAR16[]){105,110,116,101,114,102,97,99,101,45,100,101,115,99,114,105,112,116,105,111,110,0}), 22, 0u);
  i0 = (OOC_INT64)module;
  OOC_SymbolTable_InterfaceDescr__Write_DeclAttr((OOC_SymbolTable__Declaration)i0);
  i0 = (OOC_INT64)module;
  OOC_SymbolTable_InterfaceDescr__Write_DeclDocString((OOC_SymbolTable__Declaration)i0);
  i0 = (OOC_INT64)module;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 21254))+16);
  OOC_SymbolTable_InterfaceDescr__Write_WriteDeclList((OOC_SymbolTable__Item)i0, (OOC_SymbolTable__Name)(OOC_INT64)0);
  i0 = (OOC_INT64)module;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 21292))+16);
  ptr = (OOC_SymbolTable__Item)i0;
  i1 = i0!=(OOC_INT64)0;
  if (!i1) goto l19;
l3_loop:
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21346)))), &_td_OOC_SymbolTable__TypeDeclDesc);
  if (i1) goto l6;
  i1=0u;
  goto l8;
l6:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21383)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21383)), 21392))+96);
  i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 21406)))), &_td_OOC_SymbolTable__RecordDesc);
  
l8:
  if (i1) goto l10;
  i1=0u;
  goto l12;
l10:
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21441)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21441)), 21450))+96);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 21468)))), &_td_OOC_SymbolTable__RecordDesc, 21468)), 21475))+112);
  i1 = i1!=(OOC_INT64)0;
  
l12:
  if (!i1) goto l14;
  i1 = (OOC_INT64)w;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 21683)))), XML_Writer__WriterDesc_StartTag)),XML_Writer__WriterDesc_StartTag)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){99,108,97,115,115,0}), 6, 0u);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21757)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21757)), 21766))+96);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i2, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 21784)))), &_td_OOC_SymbolTable__RecordDesc, 21784)), 21791))+112);
  i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 21802))+16);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21757)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21757)), 21766))+96);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 21784)))), &_td_OOC_SymbolTable__RecordDesc, 21784)), 21791))+112);
  i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i3, 21802))+16);
  i3 = OOC_ARRAY_LENGTH((_check_pointer(i3, 21807)), 0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 21721)))), XML_Writer__WriterDesc_AttrStringLatin1)),XML_Writer__WriterDesc_AttrStringLatin1)((XML_Writer__Writer)i1, ((OOC_CHAR16[]){110,97,109,101,0}), 5, (void*)(_check_pointer(i2, 21807)), i3);
  i1 = (OOC_INT64)module;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21885)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21885)), 21894))+96);
  i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 21840))+16);
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21912)))), &_td_OOC_SymbolTable__RecordDesc, 21912)), 21919))+112);
  OOC_SymbolTable_InterfaceDescr__Write_WriteDeclList((OOC_SymbolTable__Item)i1, (OOC_SymbolTable__Name)i0);
  i0 = (OOC_INT64)ptr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21967)))), &_td_OOC_SymbolTable__TypeDeclDesc, 21967)), 21976))+96);
  OOC_SymbolTable_InterfaceDescr__Write_WriteBaseClasses((OOC_SymbolTable__Record)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 21994)))), &_td_OOC_SymbolTable__RecordDesc, 21994)));
  i0 = (OOC_INT64)ptr;
  i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22042)))), &_td_OOC_SymbolTable__TypeDeclDesc, 22042)), 22051))+96);
  OOC_SymbolTable_InterfaceDescr__Write_WriteKnownExtensions((Object__Object)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22069)))), &_td_OOC_SymbolTable__RecordDesc, 22069)));
  i0 = (OOC_INT64)w;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22088)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
l14:
  i0 = (OOC_INT64)ptr;
  i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 22124));
  ptr = (OOC_SymbolTable__Item)i0;
  i1 = i0!=(OOC_INT64)0;
  if (i1) goto l3_loop;
l19:
  i0 = (OOC_INT64)moduleDict;
  OOC_SymbolTable_InterfaceDescr__Write_WriteModuleRef((ADT_Dictionary__Dictionary)i0);
  i0 = (OOC_INT64)w;
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22184)))), XML_Writer__WriterDesc_EndTag)),XML_Writer__WriterDesc_EndTag)((XML_Writer__Writer)i0);
  OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 22204)))), XML_Writer__WriterDesc_EndOfText)),XML_Writer__WriterDesc_EndOfText)((XML_Writer__Writer)i0);
  return;
  ;
}

void OOC_OOC_SymbolTable_InterfaceDescr_init(void) {

  OOC_SymbolTable_InterfaceDescr__dtdSystemId = (URI__URI)(OOC_INT64)0;
  OOC_SymbolTable_InterfaceDescr__absoluteDtdSystemId = 1u;
  return;
  ;
}

/* --- */
