# 1 "set.m"
struct _PRIVATE { struct _PRIVATE *isa; };
typedef struct _PRIVATE *id;
struct _SHARED {
  id isa;
  id clsSuper;
  char *clsName;
  char *clsTypes;
  short clsSizInstance;
  short clsSizDict;
  struct _SLT *clsDispTable;
  long clsStatus;
  struct modDescriptor *clsMod;
  unsigned clsVersion;
  id clsCats;
  id *clsGlbl;
};
extern id  (* _imp(id,char*))();
extern id  (* _impSuper(id,char*))();
extern struct modDescriptor  *_OBJCBIND_set(void);
static char **selTransTbl;
struct _SLT {char *_cmd;id (*_imp)();};
struct modDescriptor {
  char *modName;
  char *modVersion;
  long modStatus;
  char *modMinSel;
  char *modMaxSel;
  id *modClsLst;
  short modSelRef;
  char **modSelTbl;
  struct methodDescriptor *modMapTbl;
};
extern struct modDescriptor set_modDesc;

# 1 "../../util/stdarg.h"
#include <stdarg.h>

# 1 "../../util/assert.h"
#include <assert.h>

# 1 "../../util/string.h"
#include <string.h>

# 1 "../../util/stdlib.h"
#include <stdlib.h>

# 1 "../../util/stdio.h"
#include <stdio.h>

# 1 "../../util/stdio.h"
#include <stdio.h>

# 1 "../../util/stddef.h"
#include <stddef.h>

# 53 "../../include/objcrt/objcrt.h"
typedef char*SEL;
typedef char*STR;
typedef char BOOL;
typedef FILE*IOD;
typedef id SHR;
# 62 "../../include/objcrt/objcrt.h"
typedef id(*IMP)();


typedef void(*ARGIMP)(id,SEL,void*);
# 85 "../../include/objcrt/objcrt.h"
extern BOOL msgFlag;
extern FILE*msgIOD;
extern FILE*dbgIOD;
extern BOOL allocFlag;
extern BOOL dbgFlag;
extern BOOL noCacheFlag;
extern BOOL noNilRcvr;
# 98 "../../include/objcrt/objcrt.h"
SEL selUid(STR);
STR selName(SEL);
void dbg(char*fmt,...);
void prnstack(FILE*file);
void loadobjc(void*modPtr);
void unloadobjc(void*modPtr);
# 107 "../../include/objcrt/objcrt.h"
IMP fwdimp(id,SEL,IMP);
IMP fwdimpSuper(id,SEL,IMP);
void fwdmsg(id,SEL,void*,ARGIMP);
id selptrfwd(id,SEL,id,id,id,id);


id idincref(id obj);
id idassign(id*lhs,id rhs);
id iddecref(id obj);

extern id(*_fileIn)(FILE*);
extern BOOL(*_fileOut)(FILE*,id);
extern BOOL(*_storeOn)(STR,id);
extern id(*_readFrom)(STR);
void setfilein(id(*f)(FILE*));
void setfileout(BOOL(*f)(FILE*,id));

extern id(*_showOn)(id,unsigned);

void*OC_Malloc(size_t);
void*OC_MallocAtomic(size_t);
void*OC_Calloc(size_t);
void*OC_Realloc(void*,size_t);
void*OC_Free(void*data);
# 1 "../../util/string.h"
#include <string.h>

# 28 "set.h"
typedef struct objset
{
int count;
int capacity;
id*ptr;
}*
objset_t;
# 28 "setseq.h"
typedef struct objsetseq
{
objset_t set;
int offset;
}*
objsetseq_t;
# 31 "ordcltn.h"
typedef struct objcol
{
int count;
int capacity;
id*ptr;
}*
objcol_t;
# 32 "ocstring.h"
typedef struct objstr
{
int count;
int capacity;
char*ptr;
}*
objstr_t;
# 38 "../../include/objcrt/Block.h"
extern id newBlock(int n,IMP fn,void*data,IMP dtor);
# 36 "set.h"
struct Set_PRIVATE {

# 42 "../../include/objcrt/Object.h"
id isa;
# 46 "../../include/objcrt/Object.h"
unsigned short attr;
unsigned short objID;
# 38 "set.h"
struct objset value;};

# 36 "set.h"
extern id  Set;

# 36 "set.h"
extern struct _SHARED _Set;
extern struct _SHARED __Set;


# 45 "set.m"
static void
ptrzero(id*p,int c)
{
while(c--)
{ *
p++=(id)0;
}
}

# 70 "set.m"
static void
init(objset_t self,int n,int c)
{
(void)0;
self->count=n;
self->capacity=c;
self->ptr=(id*)OC_Calloc(c*sizeof(id));
}

static void
initzero(objset_t self,int c)
{
init(self,0,c);
}

static id c_Set_new(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT0;

# 87 "set.m"
return(objcT0=(id)self,(*(id(*)(id,SEL,unsigned))_imp(objcT0,selTransTbl[0]))(objcT0,selTransTbl[0],16));
}

static id c_Set_new_(struct Set_PRIVATE *self,SEL _cmd,unsigned n)
{
id objcT1,objcT2;

# 92 "set.m"
id newObj=(objcT1=__Set.clsSuper,(*_impSuper(objcT1,selTransTbl[1]))((id)self,selTransTbl[1]));
initzero((objcT2=newObj,(*(objset_t(*)(id,SEL))_imp(objcT2,selTransTbl[2]))(objcT2,selTransTbl[2])),n);
return newObj;
}

# 103 "set.m"
static id c_Set_with_(struct Set_PRIVATE *self,SEL _cmd,int nArgs,...)
{
id objcT3;

# 105 "set.m"
id newObject;


va_list vp;

newObject=(objcT3=(id)self,(*_imp(objcT3,selTransTbl[1]))(objcT3,selTransTbl[1]));
# 125 "set.m"
va_start(vp,nArgs);
while(nArgs-->0)
{
id objcT4;

# 128 "set.m"
id anObject=va_arg(vp,id);
(objcT4=newObject,(*_imp(objcT4,selTransTbl[3]))(objcT4,selTransTbl[3],anObject));
}
va_end(vp);


return newObject;
}

static id c_Set_with_with_(struct Set_PRIVATE *self,SEL _cmd,id firstObject,id nextObject)
{
id objcT5,objcT6,objcT7;

# 139 "set.m"
return(objcT5=(objcT6=(objcT7=(id)self,(*_imp(objcT7,selTransTbl[1]))(objcT7,selTransTbl[1])),(*_imp(objcT6,selTransTbl[3]))(objcT6,selTransTbl[3],firstObject)),(*_imp(objcT5,selTransTbl[3]))(objcT5,selTransTbl[3],nextObject));
}

static id c_Set_add_(struct Set_PRIVATE *self,SEL _cmd,id firstObject)
{
id objcT8,objcT9;

# 144 "set.m"
return(objcT8=(objcT9=(id)self,(*_imp(objcT9,selTransTbl[1]))(objcT9,selTransTbl[1])),(*_imp(objcT8,selTransTbl[3]))(objcT8,selTransTbl[3],firstObject));
}

static void
ptrcopy(id*p,id*q,int c)
{
while(c--)
{ *
p++= *q++;
}
}

static void
copy(objset_t dst,objset_t src)
{
init(dst,src->count,src->capacity);
ptrcopy(dst->ptr,src->ptr,src->capacity);
}

static id i_Set_copy(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT10,objcT11;

# 165 "set.m"
id aCopy=(objcT10=_Set.clsSuper,(*_impSuper(objcT10,selTransTbl[4]))((id)self,selTransTbl[4]));
copy((objcT11=aCopy,(*(objset_t(*)(id,SEL))_imp(objcT11,selTransTbl[2]))(objcT11,selTransTbl[2])),( &self->value));
return aCopy;
}

static void
ptrdeepcopy(id*p,id*q,int c)
{
while(c--)
{
id objcT12;

# 175 "set.m"
id obj= *q++; *
p++=(obj)?(objcT12=obj,(*_imp(objcT12,selTransTbl[5]))(objcT12,selTransTbl[5])):(id)0;
}
}

static void
deepcopy(objset_t dst,objset_t src)
{
init(dst,src->count,src->capacity);
ptrdeepcopy(dst->ptr,src->ptr,src->capacity);
}

static id i_Set_deepCopy(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT13,objcT14;


id aCopy=(objcT13=_Set.clsSuper,(*_impSuper(objcT13,selTransTbl[4]))((id)self,selTransTbl[4]));
deepcopy((objcT14=aCopy,(*(objset_t(*)(id,SEL))_imp(objcT14,selTransTbl[2]))(objcT14,selTransTbl[2])),( &self->value));
return aCopy;
}

static void
empty(objset_t self)
{
self->count=0;
ptrzero(self->ptr,self->capacity);
}

static id i_Set_emptyYourself(struct Set_PRIVATE *self,SEL _cmd)
{
empty(( &self->value));
return(id)self;
}

static id i_Set_addYourself(struct Set_PRIVATE *self,SEL _cmd)
{

return(id)self;
}

static void
ptrclear(id*p,int c)
{
while(c--)
{
id objcT15;

# 221 "set.m"
id obj= *p; *
p++=(obj)?(objcT15=obj,(*_imp(objcT15,selTransTbl[6]))(objcT15,selTransTbl[6])):(id)0;
}
}

static void
freecontents(objset_t self)
{
self->count=0;
ptrclear(self->ptr,self->capacity);
(void)0;
}

static id i_Set_freeContents(struct Set_PRIVATE *self,SEL _cmd)
{
freecontents(( &self->value));
return(id)self;
}

static void
ptrclearall(id*p,int c)
{
while(c--)
{
id objcT16;

# 245 "set.m"
id obj= *p; *
p++=(obj)?(objcT16=obj,(*_imp(objcT16,selTransTbl[7]))(objcT16,selTransTbl[7])):(id)0;
}
}

static void
freeall(objset_t self)
{
self->count=0;
ptrclearall(self->ptr,self->capacity);
(void)0;
}

static id i_Set_freeAll(struct Set_PRIVATE *self,SEL _cmd)
{
freeall(( &self->value));
return(id)self;
}

static void
clear(objset_t self)
{
self->count=0;
self->capacity=0;
OC_Free(self->ptr);
self->ptr=NULL;
}

static id i_Set_free(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT17;

# 275 "set.m"
clear(( &self->value));
return(objcT17=_Set.clsSuper,(*_impSuper(objcT17,selTransTbl[6]))((id)self,selTransTbl[6]));
}

static id i_Set_release(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT18;

# 286 "set.m"
return(objcT18=(id)self,(*(id(*)(id,SEL,SEL))_imp(objcT18,selTransTbl[8]))(objcT18,selTransTbl[8],_cmd));

}

# 296 "set.m"
static objset_t i_Set_objsetvalue(struct Set_PRIVATE *self,SEL _cmd)
{
return &self->value;
}

static int
count(objset_t self)
{
(void)0;
return self->count;
}

static unsigned i_Set_size(struct Set_PRIVATE *self,SEL _cmd)
{
return(unsigned)count(( &self->value));
}

static BOOL i_Set_isEmpty(struct Set_PRIVATE *self,SEL _cmd)
{
return count(( &self->value))==0;
}

# 35 "setseq.h"
extern id  SetSequence;

# 35 "sequence.h"
extern id  Sequence;

# 318 "set.m"
static id i_Set_eachElement(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT19,objcT20;

# 320 "set.m"
id aCarrier=(objcT19=SetSequence,(*_imp(objcT19,selTransTbl[9]))(objcT19,selTransTbl[9],(id)self));
return(objcT20=Sequence,(*_imp(objcT20,selTransTbl[9]))(objcT20,selTransTbl[9],aCarrier));
}

# 330 "set.m"
static unsigned
ptrhash(id*p,int n)
{
unsigned code=n;
while(n--)
{
id objcT21;

# 336 "set.m"
id q= *p++;
if(q)
code^=(objcT21=q,(*(unsigned(*)(id,SEL))_imp(objcT21,selTransTbl[10]))(objcT21,selTransTbl[10]));
}
return code;
}

static unsigned
hashcontents(objset_t a)
{
return ptrhash(a->ptr,a->count);
}

static unsigned i_Set_hash(struct Set_PRIVATE *self,SEL _cmd)
{
return hashcontents( &self->value);
}

static BOOL i_Set_isEqual_(struct Set_PRIVATE *self,SEL _cmd,id set)
{
id objcT22,objcT23,objcT24,objcT25,objcT26;
id objcT27,objcT29;

# 356 "set.m"
id e,seq;
BOOL res=(BOOL)1;
if((id)self==set)
{
return(BOOL)1;
}
if( !(objcT22=set,(*(BOOL(*)(id,SEL,id))_imp(objcT22,selTransTbl[11]))(objcT22,selTransTbl[11],(id)(objcT23=Set,(*_imp(objcT23,selTransTbl[12]))(objcT23,selTransTbl[12])))))
{
return(BOOL)0;
}
if((objcT24=set,(*(unsigned(*)(id,SEL))_imp(objcT24,selTransTbl[13]))(objcT24,selTransTbl[13]))!=(objcT25=(id)self,(*(unsigned(*)(id,SEL))_imp(objcT25,selTransTbl[13]))(objcT25,selTransTbl[13])))
{
return(BOOL)0;
}
seq=(objcT26=(id)self,(*_imp(objcT26,selTransTbl[14]))(objcT26,selTransTbl[14]));
while((e=(objcT27=seq,(*_imp(objcT27,selTransTbl[15]))(objcT27,selTransTbl[15]))))
{
id objcT28;

# 373 "set.m"
if((objcT28=set,(*(BOOL(*)(id,SEL,id))_imp(objcT28,selTransTbl[16]))(objcT28,selTransTbl[16],e)))
{
res=(BOOL)0;
goto done;
}
}
done:

(objcT29=seq,(*_imp(objcT29,selTransTbl[6]))(objcT29,selTransTbl[6]));

return res;
}

# 392 "set.m"
static id*
ptrfind(id*p,id obj,int n)
{
id objcT30;

# 395 "set.m"
id*begin,*now,*end;

begin=p;
now=p+(((objcT30=obj,(*(unsigned(*)(id,SEL))_imp(objcT30,selTransTbl[10]))(objcT30,selTransTbl[10])))%n);
end=p+n;

for(;n--;now++)
{
id objcT31;

# 403 "set.m"
if(now>=end)
{
now=begin;
}
if( *now==(id)0||(objcT31= *now,(*(BOOL(*)(id,SEL,id))_imp(objcT31,selTransTbl[17]))(objcT31,selTransTbl[17],obj)))
{
return now;
}
}

fprintf(stderr,"find: table full shouldn't happen");
return NULL;
}

static id*
find(objset_t self,id obj)
{
(void)0;
return ptrfind(self->ptr,obj,self->capacity);
}

static id i_Set_add_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
id objcT32;

# 426 "set.m"
(objcT32=(id)self,(*_imp(objcT32,selTransTbl[18]))(objcT32,selTransTbl[18],anObject));
return(id)self;
}

static BOOL
needsexpand(objset_t self)
{
return 2*self->count>self->capacity;
}


static void
ptrrehash(id*newp,int newc,id*old,int oldc)
{
while(oldc--)
{
id obj= *old++;
id*newend=newp+newc;
if(obj)
{
id objcT33;

# 446 "set.m"
id*pos=newp+((objcT33=obj,(*(unsigned(*)(id,SEL))_imp(objcT33,selTransTbl[10]))(objcT33,selTransTbl[10]))%((unsigned)newc));
while( *pos)
{
pos++;
if(pos==newend)
{
pos=newp;
}
} *
pos=obj;
}
}
}

static void
rehash(objset_t self)
{
int c;
id*newp,*old;

c=self->capacity;
old=self->ptr;
newp=(id*)OC_Calloc(c*sizeof(id));

(void)0;
ptrrehash(newp,c,old,c);
(void)0;

OC_Free(old);
self->ptr=newp;
}

static void
expand(objset_t self)
{
id*newp,*old;
int newc,oldc;

oldc=self->capacity;
old=self->ptr;
newc=1+2*oldc;
newp=(id*)OC_Calloc(newc*sizeof(id));

(void)0;
ptrrehash(newp,newc,old,oldc);
(void)0;

OC_Free(old);
self->ptr=newp;
self->capacity=newc;
}

static id
add(objset_t self,id obj)
{
id*p;

if(needsexpand(self))
{
expand(self);
}

if( *(p=find(self,obj)))
{
return(id)0;
}
else
{
self->count++;
return *p=obj;
}
}

static id i_Set_addNTest_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
if(anObject)
{
return add(( &self->value),anObject);
}
else
{
return(id)0;
}
}

static id
filter(objset_t self,id obj)
{
id*p;

if(needsexpand(self))
{
expand(self);
}

if( *(p=find(self,obj)))
{
return *p;
}
else
{
self->count++; *
p=obj;
return(id)0;
}
}

static id i_Set_filter_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
if(anObject)
{
id t=filter(( &self->value),anObject);
if(t)
{
id objcT34;
(objcT34=anObject,(*_imp(objcT34,selTransTbl[6]))(objcT34,selTransTbl[6]));

return t;
}
else
{
return anObject;
}
}
else
{
return(id)0;
}
}


static id i_Set_add_ifDuplicate_(struct Set_PRIVATE *self,SEL _cmd,id anObject,id aBlock)
{
if(anObject)
{
id t=filter(( &self->value),anObject);
if(t)
{
id objcT35;

# 584 "set.m"
(objcT35=aBlock,(*_imp(objcT35,selTransTbl[19]))(objcT35,selTransTbl[19]));
return t;
}
else
{
return anObject;
}
}
else
{
return(id)0;
}
}


static id
replace(objset_t self,id obj)
{
id*p;

if(needsexpand(self))
{
expand(self);
}

if( *(p=find(self,obj)))
{
id tmp= *p; *
p=obj;
return tmp;
}
else
{
self->count++; *
p=obj;
return(id)0;
}
}

static id i_Set_replace_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
if(anObject)
{
return replace(( &self->value),anObject);
}
else
{
return(id)0;
}
}

# 641 "set.m"
static id
delete(objset_t self,id obj)
{
id*p;

if( *(p=find(self,obj)))
{
id tmp= *p; *
p=(id)0;
self->count--;
rehash(self);
return tmp;
}
else
{
return(id)0;
}
}

static id i_Set_remove_(struct Set_PRIVATE *self,SEL _cmd,id oldObject)
{
if(oldObject)
{
return delete(( &self->value),oldObject);
}
else
{
return(id)0;
}
}

static id i_Set_remove_ifAbsent_(struct Set_PRIVATE *self,SEL _cmd,id oldObject,id exceptionBlock)
{
if(oldObject)
{
return delete(( &self->value),oldObject);
}
else
{
return(id)0;
}
}

# 690 "set.m"
static BOOL i_Set_includesAllOf_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
if((id)self==aCltn)
{
return(BOOL)1;
}
else
{
id objcT36,objcT37,objcT39;

# 698 "set.m"
BOOL res=(BOOL)1;
id e,seq=(objcT36=aCltn,(*_imp(objcT36,selTransTbl[14]))(objcT36,selTransTbl[14]));
while((e=(objcT37=seq,(*_imp(objcT37,selTransTbl[15]))(objcT37,selTransTbl[15]))))
{
id objcT38;

# 702 "set.m"
if( !(objcT38=(id)self,(*(BOOL(*)(id,SEL,id))_imp(objcT38,selTransTbl[20]))(objcT38,selTransTbl[20],e)))
{
res=(BOOL)0;
goto done;
}
}
done:

(objcT39=seq,(*_imp(objcT39,selTransTbl[6]))(objcT39,selTransTbl[6]));

return res;
}
}

static BOOL i_Set_includesAnyOf_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
if((id)self==aCltn)
{
return(BOOL)1;
}
else
{
id objcT40,objcT41,objcT43;

# 724 "set.m"
BOOL res=(BOOL)0;
id e,seq=(objcT40=aCltn,(*_imp(objcT40,selTransTbl[14]))(objcT40,selTransTbl[14]));
while((e=(objcT41=seq,(*_imp(objcT41,selTransTbl[15]))(objcT41,selTransTbl[15]))))
{
id objcT42;

# 728 "set.m"
if((objcT42=(id)self,(*(BOOL(*)(id,SEL,id))_imp(objcT42,selTransTbl[20]))(objcT42,selTransTbl[20],e)))
{
res=(BOOL)1;
goto done;
}
}
done:

(objcT43=seq,(*_imp(objcT43,selTransTbl[6]))(objcT43,selTransTbl[6]));

return res;
}
}

# 748 "set.m"
static id i_Set_addAll_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
if((id)self==aCltn)
{
id objcT44;

# 752 "set.m"
(objcT44=(id)self,(*_imp(objcT44,selTransTbl[21]))(objcT44,selTransTbl[21]));
}
else
{
id objcT45,objcT46,objcT48;

# 756 "set.m"
id e,seq;

seq=(objcT45=aCltn,(*_imp(objcT45,selTransTbl[14]))(objcT45,selTransTbl[14]));
while((e=(objcT46=seq,(*_imp(objcT46,selTransTbl[15]))(objcT46,selTransTbl[15]))))
{
id objcT47;

# 761 "set.m"
(objcT47=(id)self,(*_imp(objcT47,selTransTbl[3]))(objcT47,selTransTbl[3],e));
}

seq=(objcT48=seq,(*_imp(objcT48,selTransTbl[6]))(objcT48,selTransTbl[6]));

}

return(id)self;
}

static id i_Set_addContentsOf_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
id objcT49;

# 773 "set.m"
return(objcT49=(id)self,(*_imp(objcT49,selTransTbl[22]))(objcT49,selTransTbl[22],aCltn));
}

static id i_Set_addContentsTo_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
id objcT50;

# 778 "set.m"
return(objcT50=aCltn,(*_imp(objcT50,selTransTbl[22]))(objcT50,selTransTbl[22],(id)self));
}

static id i_Set_removeAll_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
if((id)self==aCltn)
{
id objcT51;

# 785 "set.m"
(objcT51=(id)self,(*_imp(objcT51,selTransTbl[23]))(objcT51,selTransTbl[23]));
}
else
{
id objcT52,objcT53,objcT55;

# 789 "set.m"
id e,seq;

seq=(objcT52=aCltn,(*_imp(objcT52,selTransTbl[14]))(objcT52,selTransTbl[14]));
while((e=(objcT53=seq,(*_imp(objcT53,selTransTbl[15]))(objcT53,selTransTbl[15]))))
{
id objcT54;

# 794 "set.m"
(objcT54=(id)self,(*_imp(objcT54,selTransTbl[24]))(objcT54,selTransTbl[24],e));
}

seq=(objcT55=seq,(*_imp(objcT55,selTransTbl[6]))(objcT55,selTransTbl[6]));

}

return(id)self;
}

static id i_Set_removeContentsFrom_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
id objcT56;

# 806 "set.m"
return(objcT56=aCltn,(*_imp(objcT56,selTransTbl[25]))(objcT56,selTransTbl[25],(id)self));
}

static id i_Set_removeContentsOf_(struct Set_PRIVATE *self,SEL _cmd,id aCltn)
{
id objcT57;

# 811 "set.m"
return(objcT57=(id)self,(*_imp(objcT57,selTransTbl[25]))(objcT57,selTransTbl[25],aCltn));
}

# 820 "set.m"
static id i_Set_intersection_(struct Set_PRIVATE *self,SEL _cmd,id bag)
{
if((id)self==bag)
{
id objcT58;

# 824 "set.m"
return(objcT58=(id)self,(*_imp(objcT58,selTransTbl[4]))(objcT58,selTransTbl[4]));
}
else
{
id objcT59,objcT60,objcT61,objcT64;

# 828 "set.m"
id anElement,elements;
id intersection=(objcT59=self->isa,(*_imp(objcT59,selTransTbl[1]))(objcT59,selTransTbl[1]));

elements=(objcT60=(id)self,(*_imp(objcT60,selTransTbl[14]))(objcT60,selTransTbl[14]));
while((anElement=(objcT61=elements,(*_imp(objcT61,selTransTbl[15]))(objcT61,selTransTbl[15]))))
{
id objcT62,objcT63;

# 834 "set.m"
if((objcT62=bag,(*_imp(objcT62,selTransTbl[26]))(objcT62,selTransTbl[26],anElement)))
(objcT63=intersection,(*_imp(objcT63,selTransTbl[3]))(objcT63,selTransTbl[3],anElement));
}

elements=(objcT64=elements,(*_imp(objcT64,selTransTbl[6]))(objcT64,selTransTbl[6]));


return intersection;
}
}

static id i_Set_union_(struct Set_PRIVATE *self,SEL _cmd,id bag)
{
if((id)self==bag)
{
id objcT65;

# 849 "set.m"
return(objcT65=(id)self,(*_imp(objcT65,selTransTbl[4]))(objcT65,selTransTbl[4]));
}
else
{
id objcT66,objcT67;

# 853 "set.m"
return(objcT66=(objcT67=(id)self,(*_imp(objcT67,selTransTbl[4]))(objcT67,selTransTbl[4])),(*_imp(objcT66,selTransTbl[22]))(objcT66,selTransTbl[22],bag));
}
}

static id i_Set_difference_(struct Set_PRIVATE *self,SEL _cmd,id bag)
{
if((id)self==bag)
{
id objcT68;

# 861 "set.m"
return(objcT68=self->isa,(*_imp(objcT68,selTransTbl[1]))(objcT68,selTransTbl[1]));
}
else
{
id objcT69,objcT70;

# 865 "set.m"
return(objcT69=(objcT70=(id)self,(*_imp(objcT70,selTransTbl[4]))(objcT70,selTransTbl[4])),(*_imp(objcT69,selTransTbl[25]))(objcT69,selTransTbl[25],bag));
}
}

# 875 "set.m"
static id i_Set_asSet(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT71,objcT72;
if((objcT71=(id)self,(*(BOOL(*)(id,SEL,id))_imp(objcT71,selTransTbl[11]))(objcT71,selTransTbl[11],(id)(objcT72=Set,(*_imp(objcT72,selTransTbl[12]))(objcT72,selTransTbl[12])))))
{
return(id)self;
}
else
{
id objcT73,objcT74;

# 884 "set.m"
return(objcT73=(objcT74=Set,(*_imp(objcT74,selTransTbl[1]))(objcT74,selTransTbl[1])),(*_imp(objcT73,selTransTbl[22]))(objcT73,selTransTbl[22],(id)self));
}
}

# 39 "ordcltn.h"
extern id  OrdCltn;

# 888 "set.m"
static id i_Set_asOrdCltn(struct Set_PRIVATE *self,SEL _cmd)
{
id objcT75,objcT76;
if((objcT75=(id)self,(*(BOOL(*)(id,SEL,id))_imp(objcT75,selTransTbl[11]))(objcT75,selTransTbl[11],(id)(objcT76=OrdCltn,(*_imp(objcT76,selTransTbl[12]))(objcT76,selTransTbl[12])))))
{
return(id)self;
}
else
{
id objcT77,objcT78;

# 897 "set.m"
return(objcT77=(objcT78=OrdCltn,(*_imp(objcT78,selTransTbl[1]))(objcT78,selTransTbl[1])),(*_imp(objcT77,selTransTbl[22]))(objcT77,selTransTbl[22],(id)self));
}
}

# 908 "set.m"
static id i_Set_detect_(struct Set_PRIVATE *self,SEL _cmd,id aBlock)
{
id objcT79,objcT80,objcT83;

# 910 "set.m"
id e,seq;

seq=(objcT79=(id)self,(*_imp(objcT79,selTransTbl[14]))(objcT79,selTransTbl[14]));

while((e=(objcT80=seq,(*_imp(objcT80,selTransTbl[15]))(objcT80,selTransTbl[15]))))
{
id objcT81;

# 916 "set.m"
if(((objcT81=aBlock,(*_imp(objcT81,selTransTbl[27]))(objcT81,selTransTbl[27],e))))
{
id objcT82;
seq=(objcT82=seq,(*_imp(objcT82,selTransTbl[6]))(objcT82,selTransTbl[6]));

return e;
}
}


seq=(objcT83=seq,(*_imp(objcT83,selTransTbl[6]))(objcT83,selTransTbl[6]));

return(id)0;
}

static id i_Set_detect_ifNone_(struct Set_PRIVATE *self,SEL _cmd,id aBlock,id noneBlock)
{
id objcT84,objcT85,objcT88,objcT89;

# 933 "set.m"
id e,seq;

seq=(objcT84=(id)self,(*_imp(objcT84,selTransTbl[14]))(objcT84,selTransTbl[14]));

while((e=(objcT85=seq,(*_imp(objcT85,selTransTbl[15]))(objcT85,selTransTbl[15]))))
{
id objcT86;

# 939 "set.m"
if(((objcT86=aBlock,(*_imp(objcT86,selTransTbl[27]))(objcT86,selTransTbl[27],e))))
{
id objcT87;
seq=(objcT87=seq,(*_imp(objcT87,selTransTbl[6]))(objcT87,selTransTbl[6]));

return e;
}
}


seq=(objcT88=seq,(*_imp(objcT88,selTransTbl[6]))(objcT88,selTransTbl[6]));

return(objcT89=noneBlock,(*_imp(objcT89,selTransTbl[19]))(objcT89,selTransTbl[19]));
}

static id i_Set_select_(struct Set_PRIVATE *self,SEL _cmd,id testBlock)
{
id objcT90,objcT91,objcT92,objcT95;

# 956 "set.m"
id e,seq;
id newObject=(objcT90=self->isa,(*_imp(objcT90,selTransTbl[1]))(objcT90,selTransTbl[1]));

seq=(objcT91=(id)self,(*_imp(objcT91,selTransTbl[14]))(objcT91,selTransTbl[14]));

while((e=(objcT92=seq,(*_imp(objcT92,selTransTbl[15]))(objcT92,selTransTbl[15]))))
{
id objcT93;

# 963 "set.m"
if(((objcT93=testBlock,(*_imp(objcT93,selTransTbl[27]))(objcT93,selTransTbl[27],e))))
{
id objcT94;

# 965 "set.m"
(objcT94=newObject,(*_imp(objcT94,selTransTbl[3]))(objcT94,selTransTbl[3],e));
}
}


seq=(objcT95=seq,(*_imp(objcT95,selTransTbl[6]))(objcT95,selTransTbl[6]));

return newObject;
}

static id i_Set_reject_(struct Set_PRIVATE *self,SEL _cmd,id testBlock)
{
id objcT96,objcT97,objcT98,objcT101;

# 977 "set.m"
id e,seq;
id newObject=(objcT96=self->isa,(*_imp(objcT96,selTransTbl[1]))(objcT96,selTransTbl[1]));

seq=(objcT97=(id)self,(*_imp(objcT97,selTransTbl[14]))(objcT97,selTransTbl[14]));

while((e=(objcT98=seq,(*_imp(objcT98,selTransTbl[15]))(objcT98,selTransTbl[15]))))
{
id objcT99;

# 984 "set.m"
if( !((objcT99=testBlock,(*_imp(objcT99,selTransTbl[27]))(objcT99,selTransTbl[27],e))))
{
id objcT100;

# 986 "set.m"
(objcT100=newObject,(*_imp(objcT100,selTransTbl[3]))(objcT100,selTransTbl[3],e));
}
}


seq=(objcT101=seq,(*_imp(objcT101,selTransTbl[6]))(objcT101,selTransTbl[6]));

return newObject;
}

static id i_Set_collect_(struct Set_PRIVATE *self,SEL _cmd,id transformBlock)
{
id objcT102,objcT103,objcT104,objcT107;

# 998 "set.m"
id e,seq;
id newObject=(objcT102=self->isa,(*_imp(objcT102,selTransTbl[1]))(objcT102,selTransTbl[1]));

seq=(objcT103=(id)self,(*_imp(objcT103,selTransTbl[14]))(objcT103,selTransTbl[14]));

while((e=(objcT104=seq,(*_imp(objcT104,selTransTbl[15]))(objcT104,selTransTbl[15]))))
{
id objcT105;

# 1005 "set.m"
id anImage=(objcT105=transformBlock,(*_imp(objcT105,selTransTbl[27]))(objcT105,selTransTbl[27],e));
if(anImage)
{
id objcT106;

# 1008 "set.m"
(objcT106=newObject,(*_imp(objcT106,selTransTbl[3]))(objcT106,selTransTbl[3],anImage));
}
}


seq=(objcT107=seq,(*_imp(objcT107,selTransTbl[6]))(objcT107,selTransTbl[6]));

return newObject;
}

static unsigned i_Set_count_(struct Set_PRIVATE *self,SEL _cmd,id aBlock)
{
id objcT108,objcT109,objcT111;

# 1020 "set.m"
id e,seq;
unsigned c=0;

seq=(objcT108=(id)self,(*_imp(objcT108,selTransTbl[14]))(objcT108,selTransTbl[14]));
while((e=(objcT109=seq,(*_imp(objcT109,selTransTbl[15]))(objcT109,selTransTbl[15]))))
{
id objcT110;

# 1026 "set.m"
if((objcT110=aBlock,(*_imp(objcT110,selTransTbl[27]))(objcT110,selTransTbl[27],e)))
{
c++;
}
}

seq=(objcT111=seq,(*_imp(objcT111,selTransTbl[6]))(objcT111,selTransTbl[6]));


return c;
}

# 1046 "set.m"
static id i_Set_elementsPerform_(struct Set_PRIVATE *self,SEL _cmd,SEL aSelector)
{
id objcT112,objcT113,objcT115;

# 1048 "set.m"
id e,seq;

seq=(objcT112=(id)self,(*_imp(objcT112,selTransTbl[14]))(objcT112,selTransTbl[14]));
while((e=(objcT113=seq,(*_imp(objcT113,selTransTbl[15]))(objcT113,selTransTbl[15]))))
{
id objcT114;

# 1053 "set.m"
(objcT114=e,(*(id(*)(id,SEL,SEL))_imp(objcT114,selTransTbl[28]))(objcT114,selTransTbl[28],aSelector));
}

seq=(objcT115=seq,(*_imp(objcT115,selTransTbl[6]))(objcT115,selTransTbl[6]));


return(id)self;
}

static id i_Set_elementsPerform_with_(struct Set_PRIVATE *self,SEL _cmd,SEL aSelector,id anObject)
{
id objcT116,objcT117,objcT119;

# 1064 "set.m"
id e,seq;

seq=(objcT116=(id)self,(*_imp(objcT116,selTransTbl[14]))(objcT116,selTransTbl[14]));
while((e=(objcT117=seq,(*_imp(objcT117,selTransTbl[15]))(objcT117,selTransTbl[15]))))
{
id objcT118;

# 1069 "set.m"
(objcT118=e,(*(id(*)(id,SEL,SEL,id))_imp(objcT118,selTransTbl[29]))(objcT118,selTransTbl[29],aSelector,anObject));
}

seq=(objcT119=seq,(*_imp(objcT119,selTransTbl[6]))(objcT119,selTransTbl[6]));


return(id)self;
}

static id i_Set_elementsPerform_with_with_(struct Set_PRIVATE *self,SEL _cmd,SEL aSelector,id anObject,id otherObject)
{
id objcT120,objcT121,objcT123;

# 1080 "set.m"
id e,seq;

seq=(objcT120=(id)self,(*_imp(objcT120,selTransTbl[14]))(objcT120,selTransTbl[14]));
while((e=(objcT121=seq,(*_imp(objcT121,selTransTbl[15]))(objcT121,selTransTbl[15]))))
{
id objcT122;

# 1085 "set.m"
(objcT122=e,(*(id(*)(id,SEL,SEL,id,id))_imp(objcT122,selTransTbl[30]))(objcT122,selTransTbl[30],aSelector,anObject,otherObject));
}

seq=(objcT123=seq,(*_imp(objcT123,selTransTbl[6]))(objcT123,selTransTbl[6]));


return(id)self;
}

static id i_Set_elementsPerform_with_with_with_(struct Set_PRIVATE *self,SEL _cmd,SEL aSelector,id anObject,id otherObject,id thirdObj)
{
id objcT124,objcT125,objcT127;

# 1096 "set.m"
id e,seq;

seq=(objcT124=(id)self,(*_imp(objcT124,selTransTbl[14]))(objcT124,selTransTbl[14]));
while((e=(objcT125=seq,(*_imp(objcT125,selTransTbl[15]))(objcT125,selTransTbl[15]))))
{
id objcT126;

# 1101 "set.m"
(objcT126=e,(*(id(*)(id,SEL,SEL,id,id,id))_imp(objcT126,selTransTbl[31]))(objcT126,selTransTbl[31],aSelector,anObject,otherObject,thirdObj));
}

seq=(objcT127=seq,(*_imp(objcT127,selTransTbl[6]))(objcT127,selTransTbl[6]));


return(id)self;
}

# 1116 "set.m"
static id i_Set_do_(struct Set_PRIVATE *self,SEL _cmd,id aBlock)
{
id objcT128,objcT129,objcT131;

# 1118 "set.m"
id e,seq;

seq=(objcT128=(id)self,(*_imp(objcT128,selTransTbl[14]))(objcT128,selTransTbl[14]));

while((e=(objcT129=seq,(*_imp(objcT129,selTransTbl[15]))(objcT129,selTransTbl[15]))))
{
id objcT130;

# 1124 "set.m"
(objcT130=aBlock,(*_imp(objcT130,selTransTbl[27]))(objcT130,selTransTbl[27],e));
}


seq=(objcT131=seq,(*_imp(objcT131,selTransTbl[6]))(objcT131,selTransTbl[6]));

return(id)self;
}
static id i_Set_do_until_(struct Set_PRIVATE *self,SEL _cmd,id aBlock,BOOL*flag)
{
id objcT132,objcT133,objcT135;

# 1134 "set.m"
id e,seq;

seq=(objcT132=(id)self,(*_imp(objcT132,selTransTbl[14]))(objcT132,selTransTbl[14]));

while((e=(objcT133=seq,(*_imp(objcT133,selTransTbl[15]))(objcT133,selTransTbl[15]))))
{
id objcT134;

# 1140 "set.m"
(objcT134=aBlock,(*_imp(objcT134,selTransTbl[27]))(objcT134,selTransTbl[27],e));
if( *flag)
break;
}


seq=(objcT135=seq,(*_imp(objcT135,selTransTbl[6]))(objcT135,selTransTbl[6]));

return(id)self;
}

# 1158 "set.m"
static id i_Set_find_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
return(anObject)? *find(( &self->value),anObject):(id)0;
}

static BOOL i_Set_contains_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
id objcT136;

# 1165 "set.m"
return(BOOL)((objcT136=(id)self,(*_imp(objcT136,selTransTbl[26]))(objcT136,selTransTbl[26],anObject))?(BOOL)1:(BOOL)0);
}

static BOOL i_Set_includes_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
id objcT137;

# 1170 "set.m"
return(objcT137=(id)self,(*(BOOL(*)(id,SEL,id))_imp(objcT137,selTransTbl[16]))(objcT137,selTransTbl[16],anObject));
}

static unsigned i_Set_occurrencesOf_(struct Set_PRIVATE *self,SEL _cmd,id anObject)
{
id objcT138;

# 1175 "set.m"
return(unsigned)((objcT138=(id)self,(*_imp(objcT138,selTransTbl[26]))(objcT138,selTransTbl[26],anObject))?1:0);
}

# 1184 "set.m"
static id i_Set_printOn_(struct Set_PRIVATE *self,SEL _cmd,IOD aFile)
{
id objcT139,objcT140,objcT141;

# 1186 "set.m"
id s=(objcT139=(id)self,(*_imp(objcT139,selTransTbl[14]))(objcT139,selTransTbl[14]));
(objcT140=s,(*(id(*)(id,SEL,IOD))_imp(objcT140,selTransTbl[32]))(objcT140,selTransTbl[32],aFile));

(objcT141=s,(*_imp(objcT141,selTransTbl[6]))(objcT141,selTransTbl[6]));

return(id)self;
}

# 1201 "set.m"
static void
ptrfileout(id aFiler,id*a,int n)
{
while(n--)
{
id obj= *a++;
if(obj)
{
id objcT142;

# 1209 "set.m"
(objcT142=aFiler,(*(id(*)(id,SEL,void*,char))_imp(objcT142,selTransTbl[33]))(objcT142,selTransTbl[33], &obj,'@'));
}
}
}

static void
ptrfilein(id aFiler,id*a,int n)
{
# 1223 "set.m"
while(n--)
{
id objcT143;

# 1225 "set.m"
(objcT143=aFiler,(*(id(*)(id,SEL,void*,char))_imp(objcT143,selTransTbl[34]))(objcT143,selTransTbl[34],a++,'@'));
}
}

static void
fileout(id aFiler,objset_t self)
{
id objcT144;

# 1232 "set.m"
int n=self->count;
(objcT144=aFiler,(*(id(*)(id,SEL,void*,char))_imp(objcT144,selTransTbl[33]))(objcT144,selTransTbl[33], &n,'i'));
ptrfileout(aFiler,self->ptr,self->capacity);
}

static void
filein(id aFiler,objset_t self)
{
id objcT145;

# 1240 "set.m"
int n;
(objcT145=aFiler,(*(id(*)(id,SEL,void*,char))_imp(objcT145,selTransTbl[34]))(objcT145,selTransTbl[34], &n,'i'));
init(self,n,n);
ptrfilein(aFiler,self->ptr,n);
}

static id i_Set_fileOutOn_(struct Set_PRIVATE *self,SEL _cmd,id aFiler)
{
id objcT146;

# 1248 "set.m"
(objcT146=_Set.clsSuper,(*_impSuper(objcT146,selTransTbl[35]))((id)self,selTransTbl[35],aFiler));
fileout(aFiler, &self->value);
return(id)self;
}

static id i_Set_fileInFrom_(struct Set_PRIVATE *self,SEL _cmd,id aFiler)
{
id objcT147;

# 1255 "set.m"
(objcT147=_Set.clsSuper,(*_impSuper(objcT147,selTransTbl[36]))((id)self,selTransTbl[36],aFiler));
filein(aFiler, &self->value);
return(id)self;
}

static id i_Set_awakeFrom_(struct Set_PRIVATE *self,SEL _cmd,id aFiler)
{

expand( &self->value);
return(id)self;
}
extern id  Object;
extern struct _SHARED _Object;
extern struct _SHARED __Object;
extern id  Cltn;
extern struct _SHARED _Cltn;
extern struct _SHARED __Cltn;
static struct _SLT _Set_clsDispatchTbl[] ={
{"new",(id (*)())c_Set_new},
{"new:",(id (*)())c_Set_new_},
{"with:",(id (*)())c_Set_with_},
{"with:with:",(id (*)())c_Set_with_with_},
{"add:",(id (*)())c_Set_add_},
{(char*)0,(id (*)())0}
};
static struct _SLT _Set_nstDispatchTbl[] ={
{"copy",(id (*)())i_Set_copy},
{"deepCopy",(id (*)())i_Set_deepCopy},
{"emptyYourself",(id (*)())i_Set_emptyYourself},
{"addYourself",(id (*)())i_Set_addYourself},
{"freeContents",(id (*)())i_Set_freeContents},
{"freeAll",(id (*)())i_Set_freeAll},
{"free",(id (*)())i_Set_free},
{"release",(id (*)())i_Set_release},
{"objsetvalue",(id (*)())i_Set_objsetvalue},
{"size",(id (*)())i_Set_size},
{"isEmpty",(id (*)())i_Set_isEmpty},
{"eachElement",(id (*)())i_Set_eachElement},
{"hash",(id (*)())i_Set_hash},
{"isEqual:",(id (*)())i_Set_isEqual_},
{"add:",(id (*)())i_Set_add_},
{"addNTest:",(id (*)())i_Set_addNTest_},
{"filter:",(id (*)())i_Set_filter_},
{"add:ifDuplicate:",(id (*)())i_Set_add_ifDuplicate_},
{"replace:",(id (*)())i_Set_replace_},
{"remove:",(id (*)())i_Set_remove_},
{"remove:ifAbsent:",(id (*)())i_Set_remove_ifAbsent_},
{"includesAllOf:",(id (*)())i_Set_includesAllOf_},
{"includesAnyOf:",(id (*)())i_Set_includesAnyOf_},
{"addAll:",(id (*)())i_Set_addAll_},
{"addContentsOf:",(id (*)())i_Set_addContentsOf_},
{"addContentsTo:",(id (*)())i_Set_addContentsTo_},
{"removeAll:",(id (*)())i_Set_removeAll_},
{"removeContentsFrom:",(id (*)())i_Set_removeContentsFrom_},
{"removeContentsOf:",(id (*)())i_Set_removeContentsOf_},
{"intersection:",(id (*)())i_Set_intersection_},
{"union:",(id (*)())i_Set_union_},
{"difference:",(id (*)())i_Set_difference_},
{"asSet",(id (*)())i_Set_asSet},
{"asOrdCltn",(id (*)())i_Set_asOrdCltn},
{"detect:",(id (*)())i_Set_detect_},
{"detect:ifNone:",(id (*)())i_Set_detect_ifNone_},
{"select:",(id (*)())i_Set_select_},
{"reject:",(id (*)())i_Set_reject_},
{"collect:",(id (*)())i_Set_collect_},
{"count:",(id (*)())i_Set_count_},
{"elementsPerform:",(id (*)())i_Set_elementsPerform_},
{"elementsPerform:with:",(id (*)())i_Set_elementsPerform_with_},
{"elementsPerform:with:with:",(id (*)())i_Set_elementsPerform_with_with_},
{"elementsPerform:with:with:with:",(id (*)())i_Set_elementsPerform_with_with_with_},
{"do:",(id (*)())i_Set_do_},
{"do:until:",(id (*)())i_Set_do_until_},
{"find:",(id (*)())i_Set_find_},
{"contains:",(id (*)())i_Set_contains_},
{"includes:",(id (*)())i_Set_includes_},
{"occurrencesOf:",(id (*)())i_Set_occurrencesOf_},
{"printOn:",(id (*)())i_Set_printOn_},
{"fileOutOn:",(id (*)())i_Set_fileOutOn_},
{"fileInFrom:",(id (*)())i_Set_fileInFrom_},
{"awakeFrom:",(id (*)())i_Set_awakeFrom_},
{(char*)0,(id (*)())0}
};
id Set = (id)&_Set;
id  *OBJCCLASS_Set(void) { return &Set; }
struct _SHARED  _Set = {
  (id)&__Set,
  (id)&_Cltn,
  "Set",
  0,
  sizeof(struct Set_PRIVATE),
  54,
  _Set_nstDispatchTbl,
  41,
  &set_modDesc,
  0,
  (id)0,
  &Set,
};
id  OBJCCFUNC_Set(void) { return (id)&_Set; }
id  OBJCCSUPER_Set(void) { return _Set.clsSuper; }
struct _SHARED __Set = {
  (id)&__Object,
  (id)&__Cltn,
  "Set",
  0,
  sizeof(struct _SHARED),
  5,
  _Set_clsDispatchTbl,
  34,
  &set_modDesc,
  0,
  (id)0,
  0,
};
id  OBJCMFUNC_Set(void) { return (id)&__Set; }
id  OBJCMSUPER_Set(void) { return __Set.clsSuper; }
static char *_selTransTbl[] ={
"new:",
"new",
"objsetvalue",
"add:",
"copy",
"deepCopy",
"free",
"freeAll",
"notImplemented:",
"over:",
"hash",
"isKindOf:",
"class",
"size",
"eachElement",
"next",
"contains:",
"isEqual:",
"addNTest:",
"value",
"includes:",
"addYourself",
"addAll:",
"emptyYourself",
"remove:",
"removeAll:",
"find:",
"value:",
"perform:",
"perform:with:",
"perform:with:with:",
"perform:with:with:with:",
"printOn:",
"fileOut:type:",
"fileIn:type:",
"fileOutOn:",
"fileInFrom:",
0
};
struct modDescriptor set_modDesc = {
  "set",
  "objc3.2.8",
  0L,
  0,
  0,
  &Set,
  37,
  _selTransTbl,
  0
};
struct modDescriptor *_OBJCBIND_set(void)
{
  selTransTbl = _selTransTbl;
  return &set_modDesc;
}
int _OBJCPOSTLINK_set = 1;




syntax highlighted by Code2HTML, v. 0.9.1