

#include "BUILTIN.h"

#include "Denotation.h"

#include "Nat.h"

#include "Char.h"

#include "Int.h"
extern OBJ _AUnion2Conv_3(OBJ,OBJ,OBJ);OBJ __AUnion2Conv_3; /* ` */
OBJ __AUnion2Conv_4; /* `'4 */
OBJ __AUnion2Conv_5; /* `'5 */
OBJ __AUnion2Conv_6; /* `'6 */

extern OBJ _AUnion2Conv_3(OBJ x1,OBJ x2,OBJ x3) /* ` */
{OBJ r;
 if(ISTGPRD(x3,0)){
  {OBJ x22=FLD(x3,1);
   if(EXPRD(x3,1)){
    DSPRDF(x3);
   }else{
    COPY(x22,1);
    FRPRD(x3,1);}
   FRCLS(x2,1);
   CPPRD(__AUnion2Conv_4,1);
   CPPRD(__AUnion2Conv_5,1);
   {OBJ x23;OBJ x24;
    x23=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x22);
    ADenotation_4(x23,__AUnion2Conv_4,x24);
    ADenotation_4(__AUnion2Conv_5,x24,r);}}
 }else{
  {OBJ x25=FLD(x3,1);
   if(EXPRD(x3,1)){
    DSPRDF(x3);
   }else{
    COPY(x25,1);
    FRPRD(x3,1);}
   FRCLS(x1,1);
   CPPRD(__AUnion2Conv_4,1);
   CPPRD(__AUnion2Conv_6,1);
   {OBJ x26;OBJ x27;
    x26=(*(OBJ(*)(OBJ,OBJ))METHOD(x2,1))(x2,x25);
    ADenotation_4(x26,__AUnion2Conv_4,x27);
    ADenotation_4(__AUnion2Conv_6,x27,r);}}}
 return r;}

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

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

init_AUnion2Conv()
{
 static int visited=0; if(visited) return; visited=1;
 init_AUnion2();
 init_ADenotation();
 init_ANat();
 init_AChar();
 init_AInt();
 DEN("[2|",__AUnion2Conv_6);
 DEN("[1|",__AUnion2Conv_5);
 DEN("]",__AUnion2Conv_4);
 CLS(3,_AUnion2Conv_3,__AUnion2Conv_3);
 MTH(3,0,2,_mt_3_0_2);LZYMTH(3,0,2,_mt_3_0_2);
 MTH(3,2,1,_mt_3_2_1);LZYMTH(3,2,1,_mt_3_2_1_l);}

