

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ _ACom_23(OBJ);extern OBJ __ACom_23;

#include "Char.h"

#include "Bitset.h"

#include "Array.h"
extern OBJ _ADArrayReduce_6(OBJ,OBJ,OBJ);extern OBJ __ADArrayReduce_6;
extern OBJ _AComCompose_5(OBJ,OBJ);extern OBJ __AComCompose_5;
extern OBJ _ATableFun2_3(OBJ,OBJ,OBJ);OBJ __ATableFun2_3; /* / */
extern OBJ _ATableFun2_4(OBJ,OBJ,OBJ);OBJ __ATableFun2_4; /* /& */
extern OBJ _ATableFun2_5(OBJ,OBJ,OBJ,OBJ);OBJ __ATableFun2_5; /* /&'5 */
extern OBJ _ATableFun2_6(OBJ,OBJ,OBJ,OBJ);OBJ __ATableFun2_6; /* /&'6 */

extern OBJ _ATableFun2_3(OBJ x1,OBJ x2,OBJ x3) /* / */
{OBJ r;
 r=_ADArrayReduce_6(x1,x2,x3);
 return r;}

extern OBJ _ATableFun2_4(OBJ x1,OBJ x2,OBJ x3) /* /& */
{OBJ r;
 CPCLS(__ATableFun2_6,1);
 {OBJ x4;OBJ x5;
  x4=_ACom_23(x2);
  x5=(*(OBJ(*)(OBJ,OBJ))METHOD(__ATableFun2_6,1))(__ATableFun2_6,x1);
  r=_ADArrayReduce_6(x5,x4,x3);}
 return r;}

extern OBJ _ATableFun2_5(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* /&'5 */
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(x1,3))(x1,x2,x3,x4);
 return r;}

extern OBJ _ATableFun2_6(OBJ x1,OBJ x2,OBJ x3,OBJ x4) /* /&'6 */
{OBJ r;
 CPCLS(__ATableFun2_5,1);
 {OBJ x5;
  x5=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))METHOD(__ATableFun2_5,3))(__ATableFun2_5,x1,x2,x3);
  r=_AComCompose_5(x4,x5);}
 return r;}

static OBJ _mt_4_0_1(OBJ t,OBJ t1) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,1);
 FLDCLS(r,1)=t1;
 return r;}

static OBJ _mt_4_0_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 DPCLS(t,r);
 INCCLS(r,0,3);
 FLDCLS(r,1)=t1;
 FLDCLS(r,2)=t2;
 FLDCLS(r,3)=t3;
 return r;}

static OBJ _mt_4_0_4(OBJ t,OBJ t1,OBJ t2,OBJ t3,OBJ t4) 
{OBJ r;
 DCCLS(t,1);
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))ENTRY(t))(t1,t2,t3,t4);
 return r;}

static OBJ _mt_4_1_3(OBJ t,OBJ t1,OBJ t2,OBJ t3) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),t1,t2,t3);
 return r;}

static OBJ _mt_4_3_1(OBJ t,OBJ t1) 
{OBJ r;
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  COPY(FLDCLS(t,1),1);
  COPY(FLDCLS(t,2),1);
  COPY(FLDCLS(t,3),1);
  DCCLS(t,1);}
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1);
 return r;}
static OBJ _mt_4_3_1_l(OBJ t,OBJ t1) 
{OBJ r;
 r=(*(OBJ(*)(OBJ,OBJ,OBJ,OBJ))ENTRY(t))(FLDCLS(t,1),FLDCLS(t,2),FLDCLS(t,3),t1);
 if(EXCLS(t)){
  DSCLSF(t);
 }else{
  DCCLS(t,1);
  FLDCLS(t,1)=NIL;FLDCLS(t,2)=NIL;FLDCLS(t,3)=NIL;
  COPY(r,1);LZYCLS(t,r);}
 return r;}

init_ATableFun2()
{
 static int visited=0; if(visited) return; visited=1;
 init_ATable();
 init_ANat();
 init_ACom();
 init_AVoid();
 init_ASeq();
 init_AOption();
 init_ADArray();
 init_ANatMap();
 init_APair();
 init_AString();
 init_AChar();
 init_ASet();
 init_ABitset();
 init_AArray();
 init_ADArrayReduce();
 init_AComCompose();
 init_ASeqMap();
 CLS(4,_ATableFun2_6,__ATableFun2_6);
 CLS(4,_ATableFun2_5,__ATableFun2_5);
 CLS(3,_ATableFun2_4,__ATableFun2_4);
 CLS(3,_ATableFun2_3,__ATableFun2_3);
 MTH(4,0,1,_mt_4_0_1);LZYMTH(4,0,1,_mt_4_0_1);
 MTH(4,0,3,_mt_4_0_3);LZYMTH(4,0,3,_mt_4_0_3);
 MTH(4,0,4,_mt_4_0_4);LZYMTH(4,0,4,_mt_4_0_4);
 MTH(4,1,3,_mt_4_1_3);LZYMTH(4,1,3,_mt_4_1_3);
 MTH(4,3,1,_mt_4_3_1);LZYMTH(4,3,1,_mt_4_3_1_l);}

