home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2001 December / dppcpro1201.iso / Extras / maple / Viewer / WebEQ / MMLViewerInstall.cab / MMLViewerApplet.cab / webeq3 / parser / mathml / PeerConverter.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-05-24  |  19.9 KB  |  1,674 lines

  1. package webeq3.parser.mathml;
  2.  
  3. import webeq3.constants.AttributeConstants;
  4. import webeq3.schema.Box;
  5. import webeq3.schema.ContentBox;
  6. import webeq3.schema.MFrac;
  7. import webeq3.schema.MI;
  8. import webeq3.schema.MMultiscripts;
  9. import webeq3.schema.MN;
  10. import webeq3.schema.MO;
  11. import webeq3.schema.MOver;
  12. import webeq3.schema.MRoot;
  13. import webeq3.schema.MRow;
  14. import webeq3.schema.MSqrt;
  15. import webeq3.schema.MSub;
  16. import webeq3.schema.MSubsup;
  17. import webeq3.schema.MSup;
  18. import webeq3.schema.MTable;
  19. import webeq3.schema.MTd;
  20. import webeq3.schema.MTr;
  21. import webeq3.schema.MUnder;
  22.  
  23. public class PeerConverter implements MathMLConstants, AttributeConstants {
  24.    static final void addDOperator(Box var0, int var1) {
  25.       MI var2 = new MI(var0);
  26.       if (var1 == 133) {
  27.          ((Box)var2).addData("D");
  28.       } else if (var1 == 132) {
  29.          ((Box)var2).addData("&partial;");
  30.       } else {
  31.          ((Box)var2).addData("d");
  32.       }
  33.  
  34.       var0.addChild(var2);
  35.    }
  36.  
  37.    static final void addFences(Box var0) {
  38.       MO var1 = new MO(var0);
  39.       ((Box)var1).addData("(");
  40.       var0.insertChildAt(var1, 0);
  41.       MO var2 = new MO(var0);
  42.       ((Box)var2).addData(")");
  43.       var0.addChild(var2);
  44.    }
  45.  
  46.    static final void addParens(Box var0) {
  47.       MRow var1 = new MRow(var0);
  48.       MO var2 = new MO(var0);
  49.       ((Box)var2).addData("(");
  50.       ((Box)var1).addChild(var2);
  51.       int var3 = var0.getNumChildren() - 2;
  52.  
  53.       for(int var4 = 1; var4 < var3; ++var4) {
  54.          ((Box)var1).addChild(var0.removeChildAt(1));
  55.          var2 = new MO(var1);
  56.          ((Box)var2).addData(",");
  57.          ((Box)var1).addChild(var2);
  58.       }
  59.  
  60.       ((Box)var1).addChild(var0.removeChildAt(1));
  61.       var2 = new MO(var1);
  62.       ((Box)var2).addData(")");
  63.       ((Box)var1).addChild(var2);
  64.       var0.addChild(var1);
  65.    }
  66.  
  67.    static final void copyChildren(Box var0, Box var1, int var2, int var3) {
  68.       Object var4 = null;
  69.       int var5 = var3 == -1 ? var0.getNumChildren() : var3;
  70.  
  71.       for(int var6 = var2; var6 < var5; ++var6) {
  72.          Box var7 = var0.getChild(var6);
  73.          var7.setParent(var1);
  74.          var1.addChild(var7);
  75.       }
  76.  
  77.    }
  78.  
  79.    static final void distributeOp(Box var0, Box var1) {
  80.       Box var2 = var1.getCopy();
  81.       var2.cpeer = var1.cpeer;
  82.       var2.cpeer.ppeer = var2;
  83.  
  84.       for(int var3 = var0.getNumChildren() - 1; var3 > 0; --var3) {
  85.          var0.insertChildAt(var2, var3);
  86.          var2 = var2.getCopy();
  87.       }
  88.  
  89.    }
  90.  
  91.    static final Box getDegree(Box var0) {
  92.       Box var1 = null;
  93.  
  94.       for(int var2 = 1; var2 < var0.getNumChildren(); ++var2) {
  95.          var1 = var0.getChild(var2);
  96.          if (var1.cpeer == null) {
  97.             var1 = null;
  98.          } else if (!var1.cpeer.name.equals("degree") && !var1.cpeer.name.equals("logbase")) {
  99.             var1 = null;
  100.          } else {
  101.             var2 = var0.getNumChildren();
  102.          }
  103.       }
  104.  
  105.       return var1;
  106.    }
  107.  
  108.    static final MFrac getDSymbol(Box var0, Box var1, Box var2, int var3) {
  109.       MFrac var4 = new MFrac(var0);
  110.       Object var5 = null;
  111.       Object var6 = null;
  112.       if (var2 == null) {
  113.          addDOperator(var4, var3);
  114.          var6 = new MRow(var4);
  115.          addDOperator((Box)var6, var3);
  116.          ((Box)var6).addChild(var1);
  117.          var1.setParent((Box)var6);
  118.       } else {
  119.          MSup var10 = new MSup(var4);
  120.          var6 = new MSup(var4);
  121.          addDOperator(var10, var3);
  122.          ((Box)var10).addChild(var2);
  123.          var2.setParent(var10);
  124.          ((Box)var4).addChild(var10);
  125.          MRow var7 = new MRow((Box)var6);
  126.          addDOperator(var7, var3);
  127.          MI var8 = new MI(var7);
  128.          ((Box)var8).addData(" ");
  129.          ((Box)var7).addChild(var8);
  130.          ((Box)var7).addChild(var1);
  131.          var1.setParent(var7);
  132.          ((Box)var6).addChild(var7);
  133.          Box var9 = var2.getCopy();
  134.          ((Box)var6).addChild(var9);
  135.          var9.setParent((Box)var6);
  136.       }
  137.  
  138.       ((Box)var4).addChild((Box)var6);
  139.       return var4;
  140.    }
  141.  
  142.    private static final int getOperatorPrecedence(int var0) {
  143.       byte var1 = 2;
  144.       switch (var0) {
  145.          case 117:
  146.          case 118:
  147.          case 123:
  148.             var1 = 3;
  149.             break;
  150.          case 119:
  151.          case 122:
  152.             var1 = 1;
  153.             break;
  154.          case 120:
  155.             var1 = 4;
  156.          case 121:
  157.       }
  158.  
  159.       return var1;
  160.    }
  161.  
  162.    private static final String[] getSeparatedData(String var0) {
  163.       String[] var1 = new String[2];
  164.       int var2 = var0.indexOf("<sep/>");
  165.       var1[0] = var0.substring(0, var2);
  166.       var1[1] = var0.substring(var2 + 6);
  167.       return var1;
  168.    }
  169.  
  170.    static final void install_diff(ContentBox var0, int var1) {
  171.       Object var2 = null;
  172.       int var3 = ((Box)var0).getNumChildren();
  173.       Box[] var4 = new Box[2 * var3];
  174.       Box var5 = ((Box)var0).getParent();
  175.       MRow var6 = new MRow(var5);
  176.       makePeerPair(var0, var6);
  177.       int var7 = 1;
  178.       int var8 = 0;
  179.  
  180.       while(var7 < var3) {
  181.          Box var10 = ((Box)var0).getChild(var7);
  182.          ++var7;
  183.          if (var10.cpeer.name.equals("bvar") || var7 >= var3) {
  184.             if (var10.cpeer.name.equals("bvar")) {
  185.                var4[2 * var8] = var10.getChild(0);
  186.                ++var8;
  187.                if (var10.getNumChildren() > 1 && var10.getChild(1).cpeer.name.equals("degree")) {
  188.                   var4[2 * var8 - 1] = var10.getChild(1);
  189.                }
  190.             }
  191.  
  192.             if (var7 < var3) {
  193.                var10 = ((Box)var0).getChild(var7);
  194.                if (var10.cpeer.name.equals("degree")) {
  195.                   var4[2 * var8 - 1] = var10;
  196.                   ++var7;
  197.                }
  198.             }
  199.          }
  200.       }
  201.  
  202.       for(int var12 = 0; var12 < var8; ++var12) {
  203.          ((Box)var6).addChild(getDSymbol(var6, var4[2 * var12], var4[2 * var12 + 1], var1));
  204.       }
  205.  
  206.       MI var9 = new MI(var6);
  207.       ((Box)var9).addData(" ");
  208.       ((Box)var6).addChild(var9);
  209.       if (((Box)var0).getChild(1).cpeer.name.equals("bvar")) {
  210.          ((Box)var6).addChild(((Box)var0).getChild(var3 - 1));
  211.          ((Box)var0).getChild(var3 - 1).setParent(var6);
  212.       } else {
  213.          ((Box)var6).addChild(((Box)var0).getChild(1));
  214.          ((Box)var0).getChild(1).setParent(var6);
  215.       }
  216.  
  217.       var5.setChild(var6, var0.box_id);
  218.    }
  219.  
  220.    static final void install_forall_exists(Box var0, ContentBox var1, String var2, boolean var3) {
  221.       MRow var4 = new MRow(var0);
  222.       makePeerPair(var1, var4);
  223.       copyChildren(var1, var4, 0, -1);
  224.       int var5 = 1;
  225.  
  226.       while(var5 < ((Box)var4).getNumChildren() && ((Box)var4).getChild(var5).cpeer.name.equals("bvar")) {
  227.          if (var5 < ((Box)var4).getNumChildren() - 1 && !((Box)var4).getChild(var5 + 1).cpeer.name.equals("apply") && !((Box)var4).getChild(var5 + 1).cpeer.name.equals("reln")) {
  228.             MO var6 = new MO(var4);
  229.             ((Box)var6).addData(",");
  230.             MI var7 = new MI(var6);
  231.             ((Box)var7).addData(" ");
  232.             ((Box)var6).addChild(var7);
  233.             ((Box)var4).insertChildAt(var6, var5 + 1);
  234.             var5 += 2;
  235.          } else {
  236.             ++var5;
  237.          }
  238.       }
  239.  
  240.       int var9 = -1;
  241.       ContentBox var10 = ((Box)var4).getChild(((Box)var4).getNumChildren() - 1).cpeer;
  242.       if (var10 != null && (var10.name.equals("apply") || var10.name.equals("reln"))) {
  243.          var9 = ((Box)var4).getNumChildren() - 1;
  244.       }
  245.  
  246.       if (var9 > 0) {
  247.          MO var8 = new MO(var4);
  248.          if (var2.equals("&exists;")) {
  249.             ((Box)var8).addData("∣");
  250.          } else {
  251.             ((Box)var8).addData(",");
  252.          }
  253.  
  254.          ((Box)var4).insertChildAt(var8, var9);
  255.       }
  256.  
  257.       if (var3) {
  258.          addFences(var4);
  259.       }
  260.  
  261.       var0.setChild(var4, var1.box_id);
  262.    }
  263.  
  264.    static final void install_integral(ContentBox var0, int var1) {
  265.       Object var2 = null;
  266.       Object var3 = null;
  267.       Box[] var4 = new Box[3];
  268.       Box var5 = ((Box)var0).getParent();
  269.       MRow var6 = new MRow(var5);
  270.       makePeerPair(var0, var6);
  271.  
  272.       for(int var7 = 1; var7 < ((Box)var0).getNumChildren(); ++var7) {
  273.          Box var9 = ((Box)var0).getChild(var7);
  274.          if (var9.cpeer != null) {
  275.             if (var9.cpeer.name.equals("lowlimit")) {
  276.                var4[0] = var9;
  277.             } else if (var9.cpeer.name.equals("condition")) {
  278.                var4[0] = var9;
  279.             } else if (var9.cpeer.name.equals("uplimit")) {
  280.                var4[1] = var9;
  281.             } else if (var9.cpeer.name.equals("bvar")) {
  282.                var4[2] = var9;
  283.             }
  284.          }
  285.       }
  286.  
  287.       if (var4[0] == null && var4[1] == null) {
  288.          Box var12 = ((Box)var0).getChild(0);
  289.          var12.setParent(var6);
  290.          ((Box)var6).addChild(var12);
  291.       } else {
  292.          MSubsup var17 = new MSubsup(var6);
  293.          Box var10 = ((Box)var0).getChild(0);
  294.          var10.setParent(var17);
  295.          ((Box)var17).addChild(var10);
  296.          if (var4[0] != null) {
  297.             if (var1 != 130 && var4[2] != null && !var4[0].cpeer.name.equals("condition")) {
  298.                MRow var8 = new MRow(var17);
  299.                var4[2].setParent(var8);
  300.                ((Box)var8).addChild(var4[2]);
  301.                var10 = new MO(var8);
  302.                var10.addData("=");
  303.                ((Box)var8).addChild(var10);
  304.                var4[0].setParent(var8);
  305.                ((Box)var8).addChild(var4[0]);
  306.                var4[0] = var8;
  307.             } else {
  308.                var4[0].setParent(var17);
  309.             }
  310.          } else {
  311.             var4[0] = new MRow(var17);
  312.          }
  313.  
  314.          ((Box)var17).addChild(var4[0]);
  315.          if (var4[1] != null) {
  316.             var4[1].setParent(var17);
  317.          } else {
  318.             var4[1] = new MRow(var17);
  319.          }
  320.  
  321.          ((Box)var17).addChild(var4[1]);
  322.          ((Box)var6).addChild(var17);
  323.       }
  324.  
  325.       Box var13 = new MI(var6);
  326.       var13.addData(" ");
  327.       ((Box)var6).addChild(var13);
  328.       var13 = ((Box)var0).getChild(((Box)var0).getNumChildren() - 1);
  329.       var13.setParent(var6);
  330.       ((Box)var6).addChild(var13);
  331.       if (var4[2] != null && var1 == 130) {
  332.          var13 = new MI(var6);
  333.          var13.addData(" ");
  334.          ((Box)var6).addChild(var13);
  335.          var13 = new MI(var6);
  336.          var13.addData("d");
  337.          ((Box)var6).addChild(var13);
  338.          var4[2].setParent(var6);
  339.          ((Box)var6).addChild(var4[2]);
  340.       }
  341.  
  342.       var5.setChild(var6, var0.box_id);
  343.    }
  344.  
  345.    static final void install_MI(ContentBox var0, String var1) {
  346.       Box var2 = ((Box)var0).getParent();
  347.       MI var3 = new MI(var2);
  348.       makePeerPair(var0, var3);
  349.       var3.cpeer = var0.cpeer;
  350.       var3.cpeer.ppeer = var3;
  351.       ((Box)var3).addData(var1);
  352.       var2.setChild(var3, var0.box_id);
  353.    }
  354.  
  355.    static final void install_MO(ContentBox var0, String var1) {
  356.       Box var2 = ((Box)var0).getParent();
  357.       MO var3 = new MO(var2);
  358.       makePeerPair(var0, var3);
  359.       var3.cpeer = var0.cpeer;
  360.       var3.cpeer.ppeer = var3;
  361.       ((Box)var3).addData(var1);
  362.       var2.setChild(var3, var0.box_id);
  363.    }
  364.  
  365.    static final void install_token(ContentBox var0) {
  366.       Box var1 = ((Box)var0).getParent();
  367.       Object var2 = null;
  368.       if (((Box)var0).getNumChildren() == 0) {
  369.          if (var0.type == 172) {
  370.             var2 = new MO(var1);
  371.          } else if (var0.type == 170) {
  372.             var2 = new MN(var1);
  373.          } else {
  374.             var2 = new MI(var1);
  375.          }
  376.  
  377.          ((Box)var2).addData(var0.adata);
  378.       } else {
  379.          var2 = new MRow(var1);
  380.          copyChildren(var0, (Box)var2, 0, -1);
  381.       }
  382.  
  383.       makePeerPair(var0, (Box)var2);
  384.       ((Box)var2).cpeer.empty = false;
  385.       var1.setChild((Box)var2, var0.box_id);
  386.    }
  387.  
  388.    static final void makeEquiv(ContentBox var0) throws PeerException {
  389.       Object var1 = null;
  390.       Object var2 = null;
  391.       Object var3 = null;
  392.       Object var4 = null;
  393.       switch (var0.type) {
  394.          case 101:
  395.             install_MO(var0, "=");
  396.             break;
  397.          case 102:
  398.             install_MO(var0, "<");
  399.             break;
  400.          case 103:
  401.             install_MO(var0, "≤");
  402.             break;
  403.          case 104:
  404.             install_MO(var0, ">");
  405.             break;
  406.          case 105:
  407.             install_MO(var0, "≥");
  408.             break;
  409.          case 106:
  410.             install_MO(var0, "∉");
  411.             break;
  412.          case 107:
  413.             install_MO(var0, "⊈");
  414.             break;
  415.          case 108:
  416.             install_MO(var0, "⊂⃒");
  417.             break;
  418.          case 109:
  419.             install_MO(var0, "∈");
  420.             break;
  421.          case 110:
  422.             install_MO(var0, "⊆");
  423.             break;
  424.          case 111:
  425.             install_MO(var0, "⊂");
  426.             break;
  427.          case 112:
  428.             install_MO(var0, "&to;");
  429.          case 113:
  430.          case 114:
  431.          case 115:
  432.          case 116:
  433.          case 118:
  434.          case 120:
  435.          case 127:
  436.          case 131:
  437.          case 132:
  438.          case 133:
  439.          case 152:
  440.          case 158:
  441.          case 160:
  442.          case 190:
  443.          case 192:
  444.          case 193:
  445.          case 199:
  446.          case 200:
  447.          case 201:
  448.          case 202:
  449.          case 203:
  450.          case 204:
  451.          case 205:
  452.          case 206:
  453.          case 207:
  454.          case 208:
  455.          case 209:
  456.          case 210:
  457.          case 211:
  458.          case 212:
  459.          case 213:
  460.          case 214:
  461.          case 215:
  462.          case 216:
  463.          case 217:
  464.          case 218:
  465.          case 219:
  466.          case 220:
  467.          case 221:
  468.          case 222:
  469.          case 223:
  470.          case 224:
  471.          case 225:
  472.          case 226:
  473.          case 227:
  474.          case 228:
  475.          case 229:
  476.          case 230:
  477.          case 231:
  478.          case 232:
  479.          case 233:
  480.          case 234:
  481.          case 235:
  482.          case 236:
  483.          case 237:
  484.          case 238:
  485.          case 239:
  486.          case 240:
  487.          case 241:
  488.          case 242:
  489.          case 243:
  490.          case 244:
  491.          case 245:
  492.          case 246:
  493.          case 247:
  494.          case 248:
  495.          case 249:
  496.          case 272:
  497.          default:
  498.             break;
  499.          case 117:
  500.             install_MO(var0, "÷");
  501.             break;
  502.          case 119:
  503.             install_MO(var0, "-");
  504.             break;
  505.          case 121:
  506.             install_MO(var0, " mod");
  507.             break;
  508.          case 122:
  509.             install_MO(var0, "+");
  510.             break;
  511.          case 123:
  512.             install_MO(var0, "⁢");
  513.             break;
  514.          case 124:
  515.          case 125:
  516.          case 126:
  517.          case 128:
  518.          case 129:
  519.          case 137:
  520.          case 138:
  521.          case 139:
  522.          case 140:
  523.          case 141:
  524.          case 142:
  525.          case 143:
  526.          case 144:
  527.          case 145:
  528.          case 146:
  529.          case 147:
  530.          case 148:
  531.          case 149:
  532.          case 150:
  533.          case 151:
  534.          case 153:
  535.          case 156:
  536.          case 157:
  537.          case 273:
  538.          case 274:
  539.             Box var36 = ((Box)var0).getParent();
  540.             MO var33 = new MO(var36);
  541.             ((Box)var33).addData(var0.name);
  542.             MO var70 = new MO(var33);
  543.             ((Box)var70).addData("⁡");
  544.             ((Box)var33).addChild(var70);
  545.             makePeerPair(var0, var33);
  546.             var36.setChild(var33, var0.box_id);
  547.             break;
  548.          case 130:
  549.             install_MO(var0, "∫");
  550.             break;
  551.          case 134:
  552.             install_MO(var0, "∑");
  553.             break;
  554.          case 135:
  555.             install_MO(var0, "∏");
  556.             break;
  557.          case 136:
  558.             install_MO(var0, "lim");
  559.             break;
  560.          case 154:
  561.             install_MO(var0, "σ");
  562.             break;
  563.          case 155:
  564.             install_MO(var0, "σ");
  565.             break;
  566.          case 159:
  567.             install_MO(var0, "det");
  568.             break;
  569.          case 161:
  570.             install_MO(var0, "&neg;");
  571.             break;
  572.          case 162:
  573.             install_MO(var0, "&implies;");
  574.             break;
  575.          case 163:
  576.             install_MO(var0, "and");
  577.             break;
  578.          case 164:
  579.             install_MO(var0, "or");
  580.             break;
  581.          case 165:
  582.             install_MO(var0, "xor");
  583.             break;
  584.          case 166:
  585.             install_MO(var0, "∖");
  586.             break;
  587.          case 167:
  588.             install_MO(var0, "∪");
  589.             break;
  590.          case 168:
  591.             install_MO(var0, "∩");
  592.             break;
  593.          case 169:
  594.          case 250:
  595.             install_token(var0);
  596.             break;
  597.          case 170:
  598.             String var5 = ((Box)var0).getAttributeByIndex(50);
  599.             if (!var5.equals("") && !var5.equals("real") && !var5.equals("constant")) {
  600.                if (var5.equals("integer")) {
  601.                   String var72 = ((Box)var0).getRawAttribute(51);
  602.                   if (var72 != null && !var72.equals("")) {
  603.                      MSub var29 = new MSub(((Box)var0).getParent());
  604.                      makePeerPair(var0, var29);
  605.                      MN var56 = new MN(var29);
  606.                      ((Box)var56).addData(var0.adata);
  607.                      ((Box)var29).addChild(var56);
  608.                      var56 = new MN(var29);
  609.                      ((Box)var56).addData(var72);
  610.                      ((Box)var29).addChild(var56);
  611.                      ((Box)var0).getParent().setChild(var29, var0.box_id);
  612.                   } else {
  613.                      install_token(var0);
  614.                   }
  615.                } else if (var5.equals("rational")) {
  616.                   MFrac var30 = new MFrac(((Box)var0).getParent());
  617.                   makePeerPair(var0, var30);
  618.                   String[] var73 = getSeparatedData(var0.adata);
  619.                   MN var58 = new MN(var30);
  620.                   ((Box)var58).addData(var73[0]);
  621.                   ((Box)var30).addChild(var58);
  622.                   var58 = new MN(var30);
  623.                   ((Box)var58).addData(var73[1]);
  624.                   ((Box)var30).addChild(var58);
  625.                   ((Box)var0).getParent().setChild(var30, var0.box_id);
  626.                } else if (var5.equals("complex-cartesian")) {
  627.                   MRow var31 = new MRow(((Box)var0).getParent());
  628.                   makePeerPair(var0, var31);
  629.                   String[] var74 = getSeparatedData(var0.adata);
  630.                   Box var60 = new MN(var31);
  631.                   var60.addData(var74[0]);
  632.                   ((Box)var31).addChild(var60);
  633.                   var60 = new MO(var31);
  634.                   var60.addData("+");
  635.                   ((Box)var31).addChild(var60);
  636.                   var60 = new MN(var31);
  637.                   var60.addData(var74[1]);
  638.                   ((Box)var31).addChild(var60);
  639.                   var60 = new MI(var31);
  640.                   var60.addData("i");
  641.                   ((Box)var31).addChild(var60);
  642.                   ((Box)var0).getParent().setChild(var31, var0.box_id);
  643.                } else if (var5.equals("complex-polar")) {
  644.                   MRow var32 = new MRow(((Box)var0).getParent());
  645.                   makePeerPair(var0, var32);
  646.                   String[] var75 = getSeparatedData(var0.adata);
  647.                   Box var64 = new MI(var32);
  648.                   var64.addData("Polar");
  649.                   ((Box)var32).addChild(var64);
  650.                   var64 = new MO(var32);
  651.                   var64.addData("(");
  652.                   ((Box)var32).addChild(var64);
  653.                   var64 = new MN(var32);
  654.                   var64.addData(var75[0]);
  655.                   ((Box)var32).addChild(var64);
  656.                   var64 = new MO(var32);
  657.                   var64.addData(",");
  658.                   ((Box)var32).addChild(var64);
  659.                   var64 = new MN(var32);
  660.                   var64.addData(var75[1]);
  661.                   ((Box)var32).addChild(var64);
  662.                   var64 = new MO(var32);
  663.                   var64.addData(")");
  664.                   ((Box)var32).addChild(var64);
  665.                   ((Box)var0).getParent().setChild(var32, var0.box_id);
  666.                }
  667.             } else {
  668.                install_token(var0);
  669.             }
  670.             break;
  671.          case 171:
  672.             process_apply(var0);
  673.             break;
  674.          case 172:
  675.             Box var35 = ((Box)var0).getParent();
  676.             if (((Box)var0).getNumChildren() == 0) {
  677.                var1 = new MO(var35);
  678.                ((Box)var1).addData(var0.adata);
  679.             } else {
  680.                var1 = new MRow(var35);
  681.                copyChildren(var0, (Box)var1, 0, -1);
  682.             }
  683.  
  684.             MO var55 = new MO((Box)var1);
  685.             ((Box)var55).addData("⁡");
  686.             ((Box)var1).addChild(var55);
  687.             makePeerPair(var0, (Box)var1);
  688.             var35.setChild((Box)var1, var0.box_id);
  689.             break;
  690.          case 173:
  691.             for(int var8 = 0; var8 < ((Box)var0).getNumChildren() - 1; ++var8) {
  692.                if (((Box)var0).getChild(var8).cpeer == null || !((Box)var0).getChild(var8).cpeer.name.equals("ci") && !((Box)var0).getChild(var8).cpeer.name.equals("bvar")) {
  693.                   throw new PeerException("All but last child of <LAMBDA> must be <BVAR>'s.");
  694.                }
  695.             }
  696.  
  697.             MRow var27 = new MRow(((Box)var0).getParent());
  698.             makePeerPair(var0, var27);
  699.             ((Box)var27).addChild(((Box)var0).getChild(0));
  700.             int var9 = ((Box)var0).getNumChildren();
  701.  
  702.             for(int var10 = 1; var10 < var9 - 1; ++var10) {
  703.                MO var53 = new MO(var27);
  704.                ((Box)var53).addData(",");
  705.                ((Box)var27).addChild(var53);
  706.                ((Box)var27).addChild(((Box)var0).getChild(var10));
  707.             }
  708.  
  709.             MO var54 = new MO(var27);
  710.             ((Box)var54).addData("↦");
  711.             ((Box)var27).addChild(var54);
  712.             ((Box)var27).addChild(((Box)var0).getChild(var9 - 1));
  713.             ((Box)var0).getParent().setChild(var27, var0.box_id);
  714.             break;
  715.          case 174:
  716.             if (((Box)var0).getNumChildren() != 2) {
  717.                throw new PeerException("An <INTERVAL> must have exactly two children.");
  718.             }
  719.  
  720.             MRow var26 = new MRow(((Box)var0).getParent());
  721.             makePeerPair(var0, var26);
  722.             String var71 = ((Box)var0).getAttributeByIndex(47);
  723.             String[] var76 = new String[]{"[", "]"};
  724.             if (var71 != null) {
  725.                if (var71.toLowerCase().equals("open")) {
  726.                   var76[0] = "(";
  727.                   var76[1] = ")";
  728.                } else if (var71.toLowerCase().equals("open-closed")) {
  729.                   var76[0] = "(";
  730.                } else if (var71.toLowerCase().equals("closed-open")) {
  731.                   var76[1] = ")";
  732.                }
  733.             }
  734.  
  735.             MO var50 = new MO(var26);
  736.             ((Box)var50).addData(var76[0]);
  737.             ((Box)var26).addChild(var50);
  738.             ((Box)var26).addChild(((Box)var0).getChild(0));
  739.             var50 = new MO(var26);
  740.             ((Box)var50).addData(",");
  741.             ((Box)var26).addChild(var50);
  742.             ((Box)var26).addChild(((Box)var0).getChild(1));
  743.             var50 = new MO(var26);
  744.             ((Box)var50).addData(var76[1]);
  745.             ((Box)var26).addChild(var50);
  746.             ((Box)var0).getParent().setChild(var26, var0.box_id);
  747.             break;
  748.          case 175:
  749.          case 178:
  750.             MRow var25 = new MRow(((Box)var0).getParent());
  751.             makePeerPair(var0, var25);
  752.             Box var45 = new MO(var25);
  753.             var45.addData("{");
  754.             ((Box)var25).addChild(var45);
  755.             var45 = ((Box)var0).getChild(0);
  756.             if (var45 != null) {
  757.                if (var45.cpeer.name.toLowerCase().equals("condition")) {
  758.                   ((Box)var25).addChild(var45);
  759.                } else {
  760.                   boolean var6 = true;
  761.                   ((Box)var25).addChild(((Box)var0).getChild(0));
  762.  
  763.                   for(int var7 = 1; var7 < ((Box)var0).getNumChildren(); ++var7) {
  764.                      if (!var6 || ((Box)var0).getChild(var7).cpeer != null && !((Box)var0).getChild(var7).cpeer.name.equals("condition")) {
  765.                         var45 = new MO(var25);
  766.                         var45.addData(",");
  767.                         ((Box)var25).addChild(var45);
  768.                      } else {
  769.                         var45 = new MO(var25);
  770.                         var45.addData("∣");
  771.                         ((Box)var25).addChild(var45);
  772.                         var6 = false;
  773.                      }
  774.  
  775.                      ((Box)var25).addChild(((Box)var0).getChild(var7));
  776.                   }
  777.                }
  778.             }
  779.  
  780.             var45 = new MO(var25);
  781.             var45.addData("}");
  782.             ((Box)var25).addChild(var45);
  783.             ((Box)var0).getParent().setChild(var25, var0.box_id);
  784.             break;
  785.          case 176:
  786.             for(int var11 = 0; var11 < ((Box)var0).getNumChildren(); ++var11) {
  787.                if (((Box)var0).getChild(var11).cpeer == null || !((Box)var0).getChild(var11).cpeer.name.equals("matrixrow")) {
  788.                   throw new PeerException("All children of <MATRIX> must be <MATRIXROW>'s.");
  789.                }
  790.             }
  791.  
  792.             MRow var24 = new MRow(((Box)var0).getParent());
  793.             makePeerPair(var0, var24);
  794.             MO var42 = new MO(var24);
  795.             ((Box)var42).addData("[");
  796.             ((Box)var24).addChild(var42);
  797.             MTable var43 = new MTable(var24);
  798.             copyChildren(var0, var43, 0, -1);
  799.             ((Box)var24).addChild(var43);
  800.             MO var44 = new MO(var24);
  801.             ((Box)var44).addData("]");
  802.             ((Box)var24).addChild(var44);
  803.             ((Box)var0).getParent().setChild(var24, var0.box_id);
  804.             break;
  805.          case 177:
  806.             MTr var23 = new MTr(((Box)var0).getParent());
  807.             makePeerPair(var0, var23);
  808.  
  809.             for(int var12 = 0; var12 < ((Box)var0).getNumChildren(); ++var12) {
  810.                MTd var41 = new MTd(var23);
  811.                copyChildren(var0, var41, var12, var12 + 1);
  812.                ((Box)var23).addChild(var41);
  813.             }
  814.  
  815.             ((Box)var0).getParent().setChild(var23, var0.box_id);
  816.             break;
  817.          case 179:
  818.             MRow var22 = new MRow(((Box)var0).getParent());
  819.             makePeerPair(var0, var22);
  820.             ((Box)var22).addChild(new Box());
  821.             copyChildren(var0, var22, 0, -1);
  822.             addParens(var22);
  823.             ((Box)var22).removeChildAt(0);
  824.             ((Box)var0).getParent().setChild(var22, var0.box_id);
  825.             break;
  826.          case 180:
  827.             MRow var21 = new MRow(((Box)var0).getParent());
  828.             makePeerPair(var0, var21);
  829.             if (((Box)var0).getChild(0).cpeer == null || !((Box)var0).getChild(0).cpeer.name.equals("reln") && !((Box)var0).getChild(0).cpeer.name.equals("apply") && !((Box)var0).getChild(0).cpeer.name.equals("ci")) {
  830.                throw new PeerException("The child of <CONDITION> must be a <RELN> or an <APPLY>.");
  831.             }
  832.  
  833.             ((Box)var21).addChild(((Box)var0).getChild(0));
  834.             if (((Box)var0).getChild(0).cpeer.name.equals("ci")) {
  835.                System.out.println("Children of <CONDITION> now use <RELN> or <APPLY> instead of <CI>.");
  836.                boolean var77 = true;
  837.  
  838.                for(int var14 = 1; var14 < ((Box)var0).getNumChildren(); ++var14) {
  839.                   if (!var77 || ((Box)var0).getChild(var14).cpeer != null && !((Box)var0).getChild(var14).cpeer.name.equals("e")) {
  840.                      MO var40 = new MO(var21);
  841.                      ((Box)var40).addData(",");
  842.                      ((Box)var21).addChild(var40);
  843.                   } else {
  844.                      MO var39 = new MO(var21);
  845.                      ((Box)var39).addData("∣");
  846.                      ((Box)var21).addChild(var39);
  847.                      var77 = false;
  848.                   }
  849.  
  850.                   if (var77 && !((Box)var0).getChild(var14).cpeer.name.equals("ci") || !var77 && !((Box)var0).getChild(var14).cpeer.name.equals("e")) {
  851.                      throw new PeerException("Children of <CONDITION> must be <CI>'s followed by <E>'s.");
  852.                   }
  853.  
  854.                   ((Box)var21).addChild(((Box)var0).getChild(var14));
  855.                }
  856.             }
  857.  
  858.             ((Box)var0).getParent().setChild(var21, var0.box_id);
  859.             break;
  860.          case 181:
  861.             MRow var20 = new MRow(((Box)var0).getParent());
  862.             makePeerPair(var0, var20);
  863.             ((Box)var0).getParent().setChild(var20, var0.box_id);
  864.             break;
  865.          case 182:
  866.             if (((Box)var0).getChild(0).cpeer == null || ((Box)var0).getChild(0).cpeer.content_type != 200 && ((Box)var0).getChild(0).cpeer.content_type != 201) {
  867.                throw new PeerException("The first child of <RELN> must be a relation.");
  868.             }
  869.  
  870.             MRow var19 = new MRow(((Box)var0).getParent());
  871.             makePeerPair(var0, var19);
  872.             copyChildren(var0, var19, 1, -1);
  873.             distributeOp(var19, ((Box)var0).getChild(0));
  874.             ((Box)var0).getParent().setChild(var19, var0.box_id);
  875.             break;
  876.          case 183:
  877.          case 184:
  878.          case 186:
  879.          case 194:
  880.             if (((Box)var0).getNumChildren() != 1) {
  881.                throw new PeerException("<" + var0.name + "/> must have exactly one child.");
  882.             }
  883.          case 185:
  884.             Box var34 = ((Box)var0).getParent();
  885.             MRow var18 = new MRow(var34);
  886.             makePeerPair(var0, var18);
  887.             var18.cpeer.empty = false;
  888.             copyChildren(var0, var18, 0, -1);
  889.             var34.setChild(var18, var0.box_id);
  890.             break;
  891.          case 187:
  892.             MRow var17 = new MRow(((Box)var0).getParent());
  893.             makePeerPair(var0, var17);
  894.             copyChildren(var0, var17, 0, -1);
  895.             ((Box)var0).getParent().setChild(var17, var0.box_id);
  896.             break;
  897.          case 188:
  898.             ((Box)var0).getParent().removeChildAt(var0.box_id);
  899.             var0.cpeer.ppeer = null;
  900.             break;
  901.          case 189:
  902.             String var13 = ((Box)var0).getAttributeByIndex(55).toLowerCase();
  903.             if ("mathml-presentation".equals(var13)) {
  904.                MRow var16 = new MRow(((Box)var0).getParent());
  905.                makePeerPair(var0, var16);
  906.                copyChildren(var0, var16, 0, -1);
  907.                ((Box)var0).getParent().setChild(var16, var0.box_id);
  908.                ((Box)var0).getParent().removeChildAt(0);
  909.             } else {
  910.                ((Box)var0).getParent().removeChildAt(var0.box_id);
  911.             }
  912.             break;
  913.          case 191:
  914.             install_MO(var0, "ˆ");
  915.             break;
  916.          case 195:
  917.             install_MO(var0, "id");
  918.             break;
  919.          case 196:
  920.             install_MO(var0, "∀");
  921.             break;
  922.          case 197:
  923.             install_MO(var0, "&exists;");
  924.             break;
  925.          case 198:
  926.             install_MO(var0, "&neq;");
  927.             break;
  928.          case 251:
  929.             install_MI(var0, "ℤ");
  930.             break;
  931.          case 252:
  932.             install_MI(var0, "ℝ");
  933.             break;
  934.          case 253:
  935.             install_MI(var0, "ℚ");
  936.             break;
  937.          case 254:
  938.             install_MI(var0, "ℕ");
  939.             break;
  940.          case 255:
  941.             install_MI(var0, "ℂ");
  942.             break;
  943.          case 256:
  944.             install_MI(var0, "ℙ");
  945.             break;
  946.          case 257:
  947.             install_MI(var0, "e");
  948.             break;
  949.          case 258:
  950.             install_MI(var0, "i");
  951.             break;
  952.          case 259:
  953.             install_MI(var0, "NaN");
  954.             break;
  955.          case 260:
  956.             install_MI(var0, "true");
  957.             break;
  958.          case 261:
  959.             install_MI(var0, "false");
  960.             break;
  961.          case 262:
  962.             install_MI(var0, "Γ");
  963.             break;
  964.          case 263:
  965.             install_MI(var0, "π");
  966.             break;
  967.          case 264:
  968.             install_MI(var0, "∅");
  969.             break;
  970.          case 265:
  971.             install_MI(var0, "∞");
  972.             break;
  973.          case 266:
  974.             install_MO(var0, "≡");
  975.             break;
  976.          case 267:
  977.             install_MO(var0, "≈");
  978.             break;
  979.          case 268:
  980.             install_MO(var0, "div");
  981.             break;
  982.          case 269:
  983.             install_MO(var0, "grad");
  984.             break;
  985.          case 270:
  986.             install_MO(var0, "curl");
  987.             break;
  988.          case 271:
  989.             MSup var15 = new MSup(((Box)var0).getParent());
  990.             Box var37 = new MO(var15);
  991.             var37.addData("∇");
  992.             ((Box)var15).addChild(var37);
  993.             var37 = new MN(var15);
  994.             var37.addData("2");
  995.             ((Box)var15).addChild(var37);
  996.             makePeerPair(var0, var15);
  997.             var15.cpeer = var0.cpeer;
  998.             var15.cpeer.ppeer = var15;
  999.             ((Box)var0).getParent().setChild(var15, var0.box_id);
  1000.             break;
  1001.          case 275:
  1002.             install_MO(var0, "ℜ");
  1003.             break;
  1004.          case 276:
  1005.             install_MO(var0, "ℑ");
  1006.             break;
  1007.          case 277:
  1008.             install_MO(var0, "×");
  1009.             break;
  1010.          case 278:
  1011.             install_MO(var0, "˙");
  1012.             break;
  1013.          case 279:
  1014.             install_MO(var0, "˙");
  1015.       }
  1016.  
  1017.    }
  1018.  
  1019.    static final void makePeerPair(ContentBox var0, Box var1) {
  1020.       var1.attribute_stack = var0.attribute_stack;
  1021.       var1.setAttributeVec(((Box)var0).getAttributeVec());
  1022.       Object var2 = null;
  1023.  
  1024.       for(int var3 = 0; var3 < ((Box)var0).getNumChildren(); ++var3) {
  1025.          ((Box)var0).getChild(var3).setParent(var1);
  1026.       }
  1027.  
  1028.       var1.cpeer = var0.cpeer;
  1029.       var1.cpeer.ppeer = var1;
  1030.    }
  1031.  
  1032.    private static final boolean needsFence(Box var0, Box var1) {
  1033.       boolean var2 = false;
  1034.       int[] var3 = new int[]{159, 124, 125, 126, 153, 156, 157, 172, 154, 127, 115, 160, 193, 155, 118, 121, 192, 196, 197, 0};
  1035.       Box var4 = var0.getChild(0);
  1036.       if (var4.cpeer == null && var1 == var0.getChild(0)) {
  1037.          var2 = true;
  1038.       }
  1039.  
  1040.       if (var4 != null && var4.cpeer != null) {
  1041.          ContentBox var5 = var4.cpeer;
  1042.          ContentBox var6 = var1.getChild(0).cpeer;
  1043.          if (var5.type == 119) {
  1044.             if (getOperatorPrecedence(var5.type) >= getOperatorPrecedence(var6.type)) {
  1045.                var2 = true;
  1046.             }
  1047.          } else if (var6.type == 119 && var1.getNumChildren() == 2) {
  1048.             var2 = true;
  1049.          } else if (var5.content_type == 203) {
  1050.             var2 = true;
  1051.          } else if (var5.content_type == 208) {
  1052.             var2 = true;
  1053.          } else if (getOperatorPrecedence(var5.type) >= getOperatorPrecedence(var6.type)) {
  1054.             var2 = true;
  1055.          }
  1056.  
  1057.          if (var2) {
  1058.             for(int var7 = 0; var3[var7] != 0 && var2; ++var7) {
  1059.                if (var5.type == var3[var7]) {
  1060.                   var2 = false;
  1061.                }
  1062.             }
  1063.          }
  1064.       }
  1065.  
  1066.       return var2;
  1067.    }
  1068.  
  1069.    static final void process_apply(ContentBox var0) throws PeerException {
  1070.       Box var1 = ((Box)var0).getParent();
  1071.       Object var2 = null;
  1072.       Object var3 = null;
  1073.       boolean var4 = false;
  1074.       if (var1.getClass().getName().equals("webeq3.schema.ContentBox") && ((ContentBox)var1).name.toLowerCase().equals("apply")) {
  1075.          var4 = needsFence(var1, var0);
  1076.       }
  1077.  
  1078.       int var5 = ((Box)var0).getNumChildren();
  1079.       if (var5 == 0) {
  1080.          MRow var41 = new MRow(var1);
  1081.          makePeerPair(var0, var41);
  1082.          var1.setChild(var41, var0.box_id);
  1083.       } else {
  1084.          Box var6 = ((Box)var0).getChild(0);
  1085.          switch (var6.cpeer.type) {
  1086.             case 113:
  1087.                if (((Box)var0).getNumChildren() != 2) {
  1088.                   throw new PeerException("In <APPLY>:  The function <INVERSE/> must be followed by one more child.");
  1089.                }
  1090.  
  1091.                MSup var38 = new MSup(var1);
  1092.                makePeerPair(var0, var38);
  1093.                Box var66 = ((Box)var0).getChild(1);
  1094.                var66.setParent(var38);
  1095.                ((Box)var38).addChild(var66);
  1096.                var66 = new MN(var38);
  1097.                var66.addData("-1");
  1098.                ((Box)var38).addChild(var66);
  1099.                var1.setChild(var38, var0.box_id);
  1100.                break;
  1101.             case 114:
  1102.             case 169:
  1103.             case 170:
  1104.             case 171:
  1105.             case 173:
  1106.             case 174:
  1107.             case 175:
  1108.             case 176:
  1109.             case 177:
  1110.             case 178:
  1111.             case 179:
  1112.             case 180:
  1113.             case 181:
  1114.             case 182:
  1115.             case 183:
  1116.             case 184:
  1117.             case 185:
  1118.             case 186:
  1119.             case 187:
  1120.             case 188:
  1121.             case 189:
  1122.             case 194:
  1123.             case 195:
  1124.             case 199:
  1125.             case 200:
  1126.             case 201:
  1127.             case 202:
  1128.             case 203:
  1129.             case 204:
  1130.             case 205:
  1131.             case 206:
  1132.             case 207:
  1133.             case 208:
  1134.             case 209:
  1135.             case 210:
  1136.             case 211:
  1137.             case 212:
  1138.             case 213:
  1139.             case 214:
  1140.             case 215:
  1141.             case 216:
  1142.             case 217:
  1143.             case 218:
  1144.             case 219:
  1145.             case 220:
  1146.             case 221:
  1147.             case 222:
  1148.             case 223:
  1149.             case 224:
  1150.             case 225:
  1151.             case 226:
  1152.             case 227:
  1153.             case 228:
  1154.             case 229:
  1155.             case 230:
  1156.             case 231:
  1157.             case 232:
  1158.             case 233:
  1159.             case 234:
  1160.             case 235:
  1161.             case 236:
  1162.             case 237:
  1163.             case 238:
  1164.             case 239:
  1165.             case 240:
  1166.             case 241:
  1167.             case 242:
  1168.             case 243:
  1169.             case 244:
  1170.             case 245:
  1171.             case 246:
  1172.             case 247:
  1173.             case 248:
  1174.             case 249:
  1175.             case 251:
  1176.             case 252:
  1177.             case 253:
  1178.             case 254:
  1179.             case 255:
  1180.             case 256:
  1181.             case 257:
  1182.             case 258:
  1183.             case 259:
  1184.             case 260:
  1185.             case 261:
  1186.             case 262:
  1187.             case 263:
  1188.             case 264:
  1189.             case 265:
  1190.             default:
  1191.                MRow var40 = new MRow(var1);
  1192.                makePeerPair(var0, var40);
  1193.                copyChildren(var0, var40, 0, -1);
  1194.                if (((Box)var40).getNumChildren() > 1) {
  1195.                   Box var17 = ((Box)var40).getChild(1);
  1196.                   if (var17 instanceof MRow && var17.getNumChildren() > 0) {
  1197.                      var17 = var17.getChild(0);
  1198.                      if (!"(".equals(var17.adata)) {
  1199.                         addParens(var40);
  1200.                      }
  1201.                   } else {
  1202.                      addParens(var40);
  1203.                   }
  1204.                }
  1205.  
  1206.                var1.setChild(var40, var0.box_id);
  1207.                break;
  1208.             case 115:
  1209.             case 160:
  1210.                if (((Box)var0).getNumChildren() != 2) {
  1211.                   throw new PeerException("In <APPLY>:  The function <" + var6.cpeer.name + "/> must be followed by one more child.");
  1212.                }
  1213.  
  1214.                if (((Box)var0).getNumChildren() == 1) {
  1215.                   var2 = new MRow(var1);
  1216.                   makePeerPair(var0, (Box)var2);
  1217.                   if (var6.cpeer.type == 115) {
  1218.                      MO var60 = new MO((Box)var2);
  1219.                      ((Box)var60).addData("exp");
  1220.                      ((Box)var2).addChild(var60);
  1221.                   } else {
  1222.                      MO var61 = new MO((Box)var2);
  1223.                      ((Box)var61).addData("tr");
  1224.                      ((Box)var2).addChild(var61);
  1225.                   }
  1226.  
  1227.                   addParens((Box)var2);
  1228.                } else {
  1229.                   var2 = new MSup(var1);
  1230.                   makePeerPair(var0, (Box)var2);
  1231.                   if (var6.cpeer.type == 115) {
  1232.                      Box var62 = new MI((Box)var2);
  1233.                      var62.addData("e");
  1234.                      ((Box)var2).addChild(var62);
  1235.                      var62 = ((Box)var0).getChild(1);
  1236.                      var62.setParent((Box)var2);
  1237.                      ((Box)var2).addChild(var62);
  1238.                   } else {
  1239.                      Box var64 = ((Box)var0).getChild(1);
  1240.                      var64.setParent((Box)var2);
  1241.                      ((Box)var2).addChild(var64);
  1242.                      var64 = new MI((Box)var2);
  1243.                      var64.addData("t");
  1244.                      ((Box)var2).addChild(var64);
  1245.                   }
  1246.                }
  1247.  
  1248.                var1.setChild((Box)var2, var0.box_id);
  1249.                break;
  1250.             case 116:
  1251.                if (((Box)var0).getNumChildren() != 2) {
  1252.                   throw new PeerException("In <APPLY>:  The function <FACTORIAL/> must be followed by one more child.");
  1253.                }
  1254.  
  1255.                MRow var36 = new MRow(var1);
  1256.                makePeerPair(var0, var36);
  1257.                Box var58 = ((Box)var0).getChild(1);
  1258.                var58.setParent(var36);
  1259.                ((Box)var36).addChild(var58);
  1260.                var58 = new MO(var36);
  1261.                var58.addData("!");
  1262.                ((Box)var36).addChild(var58);
  1263.                var1.setChild(var36, var0.box_id);
  1264.                break;
  1265.             case 117:
  1266.             case 118:
  1267.                if (((Box)var0).getNumChildren() != 3) {
  1268.                   throw new PeerException("In <APPLY>:  The operation <DIVIDE/> must be followed by two children.");
  1269.                }
  1270.  
  1271.                if (var4) {
  1272.                   var2 = new MRow(var1);
  1273.                   makePeerPair(var0, (Box)var2);
  1274.                   MFrac var57 = new MFrac((Box)var2);
  1275.                   makePeerPair(var0, var57);
  1276.                   copyChildren(var0, var57, 1, 3);
  1277.                   ((Box)var2).addChild(var57);
  1278.                   addFences((Box)var2);
  1279.                } else {
  1280.                   var2 = new MFrac(var1);
  1281.                   makePeerPair(var0, (Box)var2);
  1282.                   copyChildren(var0, (Box)var2, 1, 3);
  1283.                }
  1284.  
  1285.                var1.setChild((Box)var2, var0.box_id);
  1286.                break;
  1287.             case 119:
  1288.                if (((Box)var0).getNumChildren() == 3) {
  1289.                   MRow var34 = new MRow(var1);
  1290.                   makePeerPair(var0, var34);
  1291.                   copyChildren(var0, var34, 1, -1);
  1292.                   distributeOp(var34, var6);
  1293.                   var1.setChild(var34, var0.box_id);
  1294.                   if (var4) {
  1295.                      addFences(var34);
  1296.                   }
  1297.  
  1298.                   return;
  1299.                }
  1300.  
  1301.                if (((Box)var0).getNumChildren() == 2) {
  1302.                   MRow var33 = new MRow(var1);
  1303.                   makePeerPair(var0, var33);
  1304.                   copyChildren(var0, var33, 1, -1);
  1305.                   ((Box)var33).insertChildAt(var6, 0);
  1306.                   var6.setAttribute(13, "prefix");
  1307.                   var1.setChild(var33, var0.box_id);
  1308.                   if (var4) {
  1309.                      addFences(var33);
  1310.                   }
  1311.  
  1312.                   return;
  1313.                }
  1314.  
  1315.                throw new PeerException("In <APPLY>:  The function <MINUS/> must be followed by one or two children.");
  1316.             case 120:
  1317.                if (((Box)var0).getNumChildren() != 3) {
  1318.                   throw new PeerException("In <APPLY>:  The function <" + var6.cpeer.name + "/> must be followed by two more children.");
  1319.                }
  1320.  
  1321.                MSup var32 = new MSup(var1);
  1322.                makePeerPair(var0, var32);
  1323.                copyChildren(var0, var32, 1, -1);
  1324.                var1.setChild(var32, var0.box_id);
  1325.                return;
  1326.             case 121:
  1327.                if (((Box)var0).getNumChildren() != 3) {
  1328.                   throw new PeerException("In <APPLY>:  The function <REM/> must be followed by exactly two children.");
  1329.                }
  1330.  
  1331.                MRow var31 = new MRow(var1);
  1332.                makePeerPair(var0, var31);
  1333.                ((Box)var31).addChild(((Box)var0).getChild(1));
  1334.                ((Box)var31).addChild(((Box)var0).getChild(0));
  1335.                MO var12 = new MO(var31);
  1336.                ((Box)var12).addData("(");
  1337.                ((Box)var31).addChild(var12);
  1338.                ((Box)var31).addChild(((Box)var0).getChild(2));
  1339.                MO var13 = new MO(var31);
  1340.                ((Box)var13).addData(")");
  1341.                ((Box)var31).addChild(var13);
  1342.                var1.setChild(var31, var0.box_id);
  1343.                break;
  1344.             case 124:
  1345.             case 125:
  1346.             case 126:
  1347.             case 153:
  1348.             case 154:
  1349.             case 156:
  1350.             case 157:
  1351.             case 172:
  1352.             case 250:
  1353.             case 274:
  1354.                MRow var30 = new MRow(var1);
  1355.                makePeerPair(var0, var30);
  1356.                copyChildren(var0, var30, 0, -1);
  1357.                var1.setChild(var30, var0.box_id);
  1358.                addParens(var30);
  1359.                return;
  1360.             case 127:
  1361.                if (((Box)var0).getNumChildren() < 2 || ((Box)var0).getNumChildren() > 3) {
  1362.                   throw new PeerException("In <APPLY>:  The function <ROOT/> must be followed by one or two more children.");
  1363.                }
  1364.  
  1365.                Box var56 = getDegree(var0);
  1366.                if (var56 == null) {
  1367.                   var2 = new MSqrt(var1);
  1368.                   makePeerPair(var0, (Box)var2);
  1369.                   copyChildren(var0, (Box)var2, 1, 2);
  1370.                } else {
  1371.                   var2 = new MRoot(var1);
  1372.                   makePeerPair(var0, (Box)var2);
  1373.                   if (((Box)var0).getChild(1).cpeer.name.equals("degree")) {
  1374.                      ((Box)var2).addChild(((Box)var0).getChild(2));
  1375.                      ((Box)var2).addChild(((Box)var0).getChild(1));
  1376.                   } else {
  1377.                      copyChildren(var0, (Box)var2, 1, 3);
  1378.                   }
  1379.                }
  1380.  
  1381.                var1.setChild((Box)var2, var0.box_id);
  1382.                break;
  1383.             case 128:
  1384.             case 137:
  1385.             case 138:
  1386.             case 139:
  1387.             case 140:
  1388.             case 141:
  1389.             case 142:
  1390.             case 143:
  1391.             case 144:
  1392.             case 145:
  1393.             case 146:
  1394.             case 147:
  1395.             case 148:
  1396.             case 149:
  1397.             case 150:
  1398.             case 151:
  1399.             case 159:
  1400.             case 161:
  1401.             case 268:
  1402.             case 269:
  1403.             case 270:
  1404.             case 271:
  1405.             case 273:
  1406.             case 275:
  1407.             case 276:
  1408.                if (((Box)var0).getNumChildren() != 2) {
  1409.                   throw new PeerException("In <APPLY>:  The unary operator  <" + var6.cpeer.name + "/> must be followed by exactly one more child.");
  1410.                }
  1411.  
  1412.                MRow var28 = new MRow(var1);
  1413.                makePeerPair(var0, var28);
  1414.                copyChildren(var0, var28, 0, -1);
  1415.                if (var4) {
  1416.                   addFences(var28);
  1417.                }
  1418.  
  1419.                var1.setChild(var28, var0.box_id);
  1420.                return;
  1421.             case 129:
  1422.                MRow var27 = new MRow(var1);
  1423.                makePeerPair(var0, var27);
  1424.                Box var55 = getDegree(var0);
  1425.                if (var55 == null) {
  1426.                   copyChildren(var0, var27, 0, 2);
  1427.                } else {
  1428.                   byte var69 = 1;
  1429.  
  1430.                   try {
  1431.                      if (((Box)var0).getChild(1).cpeer.name.equals("logbase") || ((Box)var0).getChild(1).cpeer.name.equals("degree")) {
  1432.                         var69 = 2;
  1433.                      }
  1434.                   } catch (Exception var18) {
  1435.                   }
  1436.  
  1437.                   MSub var70 = new MSub(var27);
  1438.                   ((Box)var70).addChild(((Box)var0).getChild(0));
  1439.                   ((Box)var0).getChild(0).setParent(var70);
  1440.                   ((Box)var70).addChild(var55);
  1441.                   var55.setParent(var70);
  1442.                   ((Box)var27).addChild(var70);
  1443.                   ((Box)var27).addChild(((Box)var0).getChild(var69));
  1444.                   ((Box)var0).getChild(var69).setParent(var27);
  1445.                }
  1446.  
  1447.                var1.setChild(var27, var0.box_id);
  1448.                break;
  1449.             case 130:
  1450.             case 134:
  1451.             case 135:
  1452.                install_integral(var0, var6.cpeer.type);
  1453.                break;
  1454.             case 131:
  1455.             case 132:
  1456.                install_diff(var0, var6.cpeer.type);
  1457.                break;
  1458.             case 133:
  1459.                MRow var26 = new MRow(var1);
  1460.                makePeerPair(var0, var26);
  1461.                Box var54 = getDegree(var0);
  1462.                if (var54 == null) {
  1463.                   addDOperator(var26, var6.cpeer.type);
  1464.                } else {
  1465.                   MSup var68 = new MSup(var26);
  1466.                   addDOperator(var68, var6.cpeer.type);
  1467.                   ((Box)var68).addChild(var54);
  1468.                   var54.setParent(var68);
  1469.                   ((Box)var26).addChild(var68);
  1470.                }
  1471.  
  1472.                copyChildren(var0, var26, 1, 2);
  1473.                var1.setChild(var26, var0.box_id);
  1474.                break;
  1475.             case 136:
  1476.                Box[] var7 = new Box[2];
  1477.                MRow var25 = new MRow(var1);
  1478.                makePeerPair(var0, var25);
  1479.  
  1480.                for(int var8 = 1; var8 < ((Box)var0).getNumChildren(); ++var8) {
  1481.                   Box var52 = ((Box)var0).getChild(var8);
  1482.                   if (var52.cpeer != null) {
  1483.                      if (var52.cpeer.name.equals("lowlimit")) {
  1484.                         var7[0] = var52;
  1485.                      } else if (var52.cpeer.name.equals("condition")) {
  1486.                         var7[0] = var52;
  1487.                      } else if (var52.cpeer.name.equals("bvar")) {
  1488.                         var7[1] = var52;
  1489.                      }
  1490.                   }
  1491.                }
  1492.  
  1493.                if (var7[0] != null && var7[1] != null) {
  1494.                   MUnder var71 = new MUnder(var25);
  1495.                   copyChildren(var0, var71, 0, 1);
  1496.                   MRow var72 = new MRow(var71);
  1497.                   if (var7[0].cpeer.name.equals("lowlimit")) {
  1498.                      ((Box)var72).addChild(var7[1]);
  1499.                      var7[1].setParent(var72);
  1500.                      MO var53 = new MO(var72);
  1501.                      ((Box)var53).addData("→");
  1502.                      ((Box)var72).addChild(var53);
  1503.                   }
  1504.  
  1505.                   ((Box)var72).addChild(var7[0]);
  1506.                   var7[0].setParent(var72);
  1507.                   ((Box)var71).addChild(var72);
  1508.                   ((Box)var25).addChild(var71);
  1509.                   copyChildren(var0, var25, ((Box)var0).getNumChildren() - 1, -1);
  1510.                } else {
  1511.                   copyChildren(var0, var25, 0, 2);
  1512.                }
  1513.  
  1514.                var1.setChild(var25, var0.box_id);
  1515.                break;
  1516.             case 152:
  1517.                MRow var24 = new MRow(var1);
  1518.                makePeerPair(var0, var24);
  1519.                MO var14 = new MO(var24);
  1520.                ((Box)var14).addData("⟨");
  1521.                ((Box)var24).addChild(var14);
  1522.                Box var51 = getDegree(var0);
  1523.                if (var51 == null) {
  1524.                   copyChildren(var0, var24, 1, 2);
  1525.                } else {
  1526.                   MSup var15 = new MSup(var24);
  1527.                   copyChildren(var0, var15, 2, 3);
  1528.                   ((Box)var15).addChild(var51);
  1529.                   var51.setParent(var15);
  1530.                   ((Box)var24).addChild(var15);
  1531.                }
  1532.  
  1533.                MO var73 = new MO(var24);
  1534.                ((Box)var73).addData("⟩");
  1535.                ((Box)var24).addChild(var73);
  1536.                var1.setChild(var24, var0.box_id);
  1537.                break;
  1538.             case 155:
  1539.                MSup var23 = new MSup(var1);
  1540.                MRow var49 = new MRow(var23);
  1541.                ((Box)var23).addChild(var49);
  1542.                copyChildren(var0, var49, 0, -1);
  1543.                addParens(var49);
  1544.                MN var50 = new MN(var23);
  1545.                ((Box)var23).addChild(var50);
  1546.                ((Box)var50).addData("2");
  1547.                var1.setChild(var23, var0.box_id);
  1548.                break;
  1549.             case 158:
  1550.                if (((Box)var0).getNumChildren() < 3) {
  1551.                   throw new PeerException("In <APPLY>:  The function <SELECT/> must be followed by two or more children.");
  1552.                }
  1553.  
  1554.                MMultiscripts var22 = new MMultiscripts(var1);
  1555.                makePeerPair(var0, var22);
  1556.                ((Box)var22).addChild(((Box)var0).getChild(1));
  1557.                ((Box)var22).addChild(((Box)var0).getChild(2));
  1558.                Box var47 = new Box(var22);
  1559.                ((Box)var22).addChild(var47);
  1560.  
  1561.                for(int var16 = 3; var16 < ((Box)var0).getNumChildren(); ++var16) {
  1562.                   ((Box)var22).addChild(((Box)var0).getChild(var16));
  1563.                   var47 = new Box(var22);
  1564.                   ((Box)var22).addChild(var47);
  1565.                }
  1566.  
  1567.                var1.setChild(var22, var0.box_id);
  1568.                break;
  1569.             case 162:
  1570.             case 166:
  1571.                if (((Box)var0).getNumChildren() != 3) {
  1572.                   throw new PeerException("In <APPLY>:  The function <" + var6.cpeer.name + "/> must be followed by two more children.");
  1573.                }
  1574.             case 101:
  1575.             case 102:
  1576.             case 103:
  1577.             case 104:
  1578.             case 105:
  1579.             case 106:
  1580.             case 107:
  1581.             case 108:
  1582.             case 109:
  1583.             case 110:
  1584.             case 111:
  1585.             case 112:
  1586.             case 122:
  1587.             case 123:
  1588.             case 163:
  1589.             case 164:
  1590.             case 165:
  1591.             case 167:
  1592.             case 168:
  1593.             case 191:
  1594.             case 198:
  1595.             case 266:
  1596.             case 267:
  1597.             case 277:
  1598.             case 278:
  1599.             case 279:
  1600.                MRow var39 = new MRow(var1);
  1601.                makePeerPair(var0, var39);
  1602.                copyChildren(var0, var39, 1, -1);
  1603.                distributeOp(var39, var6);
  1604.                if (var4) {
  1605.                   addFences(var39);
  1606.                }
  1607.  
  1608.                var1.setChild(var39, var0.box_id);
  1609.                return;
  1610.             case 190:
  1611.                if (((Box)var0).getNumChildren() != 3) {
  1612.                   throw new PeerException("In <APPLY>:  The function <QUOTIENT/> must be followed by exactly two children.");
  1613.                }
  1614.  
  1615.                MRow var21 = new MRow(var1);
  1616.                makePeerPair(var0, var21);
  1617.                MO var9 = new MO(var21);
  1618.                ((Box)var9).addData("⌊");
  1619.                ((Box)var21).addChild(var9);
  1620.                MFrac var10 = new MFrac(var21);
  1621.                ((Box)var10).addChild(((Box)var0).getChild(1));
  1622.                ((Box)var10).addChild(((Box)var0).getChild(2));
  1623.                ((Box)var21).addChild(var10);
  1624.                MO var11 = new MO(var21);
  1625.                ((Box)var11).addData("⌋");
  1626.                ((Box)var21).addChild(var11);
  1627.                var1.setChild(var21, var0.box_id);
  1628.                break;
  1629.             case 192:
  1630.             case 272:
  1631.                if (((Box)var0).getNumChildren() != 2) {
  1632.                   throw new PeerException("In <APPLY>:  The function <ABS/> must be followed by one more child.");
  1633.                }
  1634.  
  1635.                MRow var20 = new MRow(var1);
  1636.                makePeerPair(var0, var20);
  1637.                Box var44 = new MO(var20);
  1638.                var44.addData("|");
  1639.                ((Box)var20).addChild(var44);
  1640.                var44 = ((Box)var0).getChild(1);
  1641.                var44.setParent(var20);
  1642.                ((Box)var20).addChild(var44);
  1643.                var44 = new MO(var20);
  1644.                var44.addData("|");
  1645.                ((Box)var20).addChild(var44);
  1646.                var1.setChild(var20, var0.box_id);
  1647.                break;
  1648.             case 193:
  1649.                if (((Box)var0).getNumChildren() != 2) {
  1650.                   throw new PeerException("In <APPLY>:  The function <CONJUGATE/> must be followed by one more child.");
  1651.                }
  1652.  
  1653.                MOver var19 = new MOver(var1);
  1654.                makePeerPair(var0, var19);
  1655.                Box var42 = ((Box)var0).getChild(1);
  1656.                var42.setParent(var19);
  1657.                ((Box)var19).addChild(var42);
  1658.                var42 = new MO(var19);
  1659.                var42.setAttribute(7, "true");
  1660.                var42.addData("&bar;");
  1661.                ((Box)var19).addChild(var42);
  1662.                var1.setChild(var19, var0.box_id);
  1663.                break;
  1664.             case 196:
  1665.                install_forall_exists(var1, var0, "∀", var4);
  1666.                break;
  1667.             case 197:
  1668.                install_forall_exists(var1, var0, "&exists;", var4);
  1669.          }
  1670.  
  1671.       }
  1672.    }
  1673. }
  1674.