

#include "BUILTIN.h"
extern OBJ _APair_2(OBJ,OBJ);OBJ __APair_2; /* & */
extern OBJ _APair_3(OBJ);OBJ __APair_3; /* &? */
extern OBJ _APair_4(OBJ);OBJ __APair_4; /* 2nd */
extern OBJ _APair_5(OBJ);OBJ __APair_5; /* 1st */
extern TUP2 _APair_8(OBJ);OBJ __APair_8; /* unpair */

extern OBJ _APair_2(OBJ x1,OBJ x2) /* & */
{OBJ r;
 PRD1(2,r);FLD1(r,1)=x1;FLD1(r,2)=x2;
 return r;}

extern OBJ _APair_3(OBJ x1) /* &? */
{OBJ r;
 FRPRD(x1,1);
 r=__ABUILTIN_5;
 return r;}

extern OBJ _APair_4(OBJ x1) /* 2nd */
{OBJ r;
 {OBJ x3=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r=x3;
   FREE(FLD1(x1,1),1);DSPRDF(x1);
  }else{
   COPY(x3,1);
   r=x3;
   FRPRD(x1,1);}}
 return r;}

extern OBJ _APair_5(OBJ x1) /* 1st */
{OBJ r;
 {OBJ x2=FLD1(x1,1);
  if(EXPRD(x1,1)){
   r=x2;
   FREE(FLD1(x1,2),1);DSPRDF(x1);
  }else{
   COPY(x2,1);
   r=x2;
   FRPRD(x1,1);}}
 return r;}

extern TUP2 _APair_8(OBJ x1) /* unpair */
{TUP2 r;
 {OBJ x8=FLD1(x1,1);OBJ x9=FLD1(x1,2);
  if(EXPRD(x1,1)){
   r.c1=x8;r.c2=x9;
   DSPRDF(x1);
  }else{
   COPY(x8,1);COPY(x9,1);
   r.c1=x8;r.c2=x9;
   FRPRD(x1,1);}}
 return r;}
extern OBJ _APair_8_c(OBJ x1) /* unpair */
{OBJ r;
 {TUP2 t=_APair_8(x1);
  PRD1(2,r);
  FLD1(r,1)=t.c1;
  FLD1(r,2)=t.c2;}
 return r;}

static OBJ _mt_1_0_1(OBJ t,OBJ t1) 
{OBJ r;
 DCCLS(t,1);
 r=(*(OBJ(*)(OBJ))ENTRY(t))(t1);
 return r;}
static OBJ _mt_1_0_1_l(OBJ t,OBJ t1) 
{OBJ r;
 DCCLS(t,1);
 r=(*(OBJ(*)(OBJ))ENTRY(t))(t1);
 COPY(r,1);LZYCLS(t,r);
 return r;}

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

init_APair()
{
 static int visited=0; if(visited) return; visited=1;
 CLS(1,_APair_8_c,__APair_8);
 CLS(1,_APair_5,__APair_5);
 CLS(1,_APair_4,__APair_4);
 CLS(1,_APair_3,__APair_3);
 CLS(2,_APair_2,__APair_2);
 MTH(1,0,1,_mt_1_0_1);LZYMTH(1,0,1,_mt_1_0_1_l);
 MTH(2,0,2,_mt_2_0_2);LZYMTH(2,0,2,_mt_2_0_2);}

