

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ _AMapNotForUserPurpose_4(OBJ,OBJ,OBJ);extern OBJ __AMapNotForUserPurpose_4;
extern OBJ _ACAST_3(OBJ);extern OBJ __ACAST_3;
extern OBJ _ABSTreeMap_5(OBJ,OBJ,OBJ,OBJ);extern OBJ __ABSTreeMap_5;
extern OBJ _AMapMap_5(OBJ,OBJ,OBJ);OBJ __AMapMap_5; /* * */
extern OBJ _AMapMap_6(OBJ,OBJ);OBJ __AMapMap_6; /* *'6 */

extern OBJ _AMapMap_5(OBJ x1,OBJ x2,OBJ x3) /* * */
{OBJ r;
 CPCLS(__AMapMap_6,1);
 CPCLS(__AMapNotForUserPurpose_4,1);
 {OBJ x4;OBJ x5;OBJ x6;OBJ x7;
  x4=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMapNotForUserPurpose_4,1))(__AMapNotForUserPurpose_4,x1);
  CPCLS(x4,1);
  x5=_ACAST_3(x3);
  x6=(*(OBJ(*)(OBJ,OBJ))METHOD(__AMapMap_6,1))(__AMapMap_6,x2);
  x7=_ABSTreeMap_5(x4,x4,x6,x5);
  r=_ACAST_3(x7);}
 return r;}

extern OBJ _AMapMap_6(OBJ x1,OBJ x2) /* *'6 */
{OBJ r;
 {OBJ x10;OBJ x11=FLD1(x2,2);
  if(EXPRD(x2,1)){
   {OBJ x12;
    x12=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x11);
    RSOME(x2,r);FLD1(r,2)=x12;}
  }else{
   x10=FLD1(x2,1);COPY(x10,1);COPY(x11,1);
   {OBJ x12;
    x12=(*(OBJ(*)(OBJ,OBJ))METHOD(x1,1))(x1,x11);
    FRPRD(x2,1);PRD1(2,r);FLD1(r,1)=x10;FLD1(r,2)=x12;}}}
 return r;}

init_AMapMap()
{
 static int visited=0; if(visited) return; visited=1;
 init_AMap();
 init_ANat();
 init_AOption();
 init_ASet();
 init_ASeq();
 init_APair();
 init_AMapNotForUserPurpose();
 init_ASetByBST();
 init_ASetByBSTMap();
 init_ACAST();
 init_ABSTree();
 init_ATree();
 init_ABSTreeMap();
 CLS(2,_AMapMap_6,__AMapMap_6);
 CLS(3,_AMapMap_5,__AMapMap_5);}

