Changeset 3456


Ignore:
Timestamp:
Feb 29, 2008, 7:41:52 PM (13 years ago)
Author:
yura
Message:
  • Woring Alpha version of debugger - lines are in AST.
Location:
to-imperative/trunk/java/compiler/org/refal/plus/compiler
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/compiler/org/refal/plus/compiler/rfp_asail_cpp.java

    r3428 r3456  
    4242    }
    4343  });
    44   static  final Expr _c_183 = Expr.fromSequence ("static AtStart init_registrator_ (&init_);");
    45   static  final Expr _c_6 = _c_183.subexpr (40, 2);
     44  static  final Expr _c_184 = Expr.fromSequence ("static AtStart init_registrator_ (&init_);");
     45  static  final Expr _c_6 = _c_184.subexpr (40, 2);
    4646  static  final Expr _c_7 = Expr.fromSequence ("rfrt::Entry rf_entry (");
    47   static  final Expr _c_47 = Expr.fromSequence (": {}");
    48   static  final Expr _c_8 = _c_47.subexpr (3, 1);
     47  static  final Expr _c_48 = Expr.fromSequence (": {}");
     48  static  final Expr _c_8 = _c_48.subexpr (3, 1);
    4949  static  final Expr _c_9 = Expr.fromSequence ("static void init_ () {");
    50   static  final Expr _c_10 = new Expr ((Comparable<?>) _c_183);
     50  static  final Expr _c_10 = new Expr ((Comparable<?>) _c_184);
    5151  static  final Expr _c_11 = new Expr (Symbol.newWord ("STATIC"));
    5252  static  final Expr _c_12 = new Expr (Symbol.newWord ("DECL-OBJ"));
    5353  static  final Expr _c_13 = _c_6.subexpr (1, 1);
    5454  static  final Expr _c_14 = Expr.fromSequence (" = ");
    55   static  final Expr _c_184 = Expr.fromSequence ("#include <rf_core.hh>");
    56   static  final Expr _c_185 = Expr.fromSequence ("using namespace rfrt;");
    57   static  final Expr _c_15 = Expr.concat ((Comparable<?>) _c_184, (Comparable<?>) _c_185);
     55  static  final Expr _c_185 = Expr.fromSequence ("#include <rf_core.hh>");
     56  static  final Expr _c_186 = Expr.fromSequence ("using namespace rfrt;");
     57  static  final Expr _c_15 = Expr.concat ((Comparable<?>) _c_185, (Comparable<?>) _c_186);
    5858  static  final Expr _c_16 = new Expr (Symbol.newWord ("UNDEF"));
    59   static  final Expr _c_17 = new Expr (Symbol.newWord ("NATIVE"));
    60   static  final Expr _c_18 = new Expr (Symbol.newInt ("1"));
    61   static  final Expr _c_177 = Expr.fromSequence ("printf (\"           argument \"); ");
    62   static  final Expr _c_19 = _c_177.subexpr (20, 3);
    63   static  final Expr _c_180 = Expr.fromSequence ("printf (\"           result   \"); ");
    64   static  final Expr _c_20 = _c_180.subexpr (20, 3);
    65   static  final Expr _c_21 = new Expr (Symbol.newWord ("Not available"));
    66   static  final Expr _c_22 = new Expr (Symbol.newWord ("ERROR"));
    67   static  final Expr _c_75 = Expr.concat (Symbol.newWord ("CONSTEXPR"), Symbol.newWord ("LOCAL"));
    68   static  final Expr _c_23 = _c_75.subexpr (1, 1);
    69   static  final Expr _c_73 = Expr.concat (Symbol.newWord ("CONSTEXPR"), Symbol.newWord ("IMPORT"));
    70   static  final Expr _c_24 = _c_73.subexpr (1, 1);
    71   static  final Expr _c_25 = new Expr (Symbol.newWord ("FUNC"));
    72   static  final Expr _c_26 = new Expr (Symbol.newWord ("FUNC?"));
    73   static  final Expr _c_27 = Expr.getConcatenator (4).toRight (Symbol.newWord ("org")).toRight (Symbol.newWord ("refal")).toRight (Symbol.newWord ("plus")).toRight (Symbol.newWord ("wrappers")).yield ();
    74   static  final Expr _c_28 = _c_184.subexpr (12, 1);
    75   static  final Expr _c_29 = new Expr (Symbol.newWord ("TRACEALL"));
    76   static  final Expr _c_30 = _c_184.subexpr (17, 1);
    77   static  final Expr _c_31 = new Expr (Symbol.newWord ("DECL-FUNC"));
    78   static  final Expr _c_32 = Expr.fromSequence ("RF_ARG ");
    79   static  final Expr _c_163 = Expr.concat ((Comparable<?>) Expr.empty, Symbol.newWord ("Vars"));
    80   static  final Expr _c_33 = _c_163.subexpr (1, 1);
    81   static  final Expr _c_34 = Expr.fromSequence ("RF_RES ");
    82   static  final Expr _c_35 = Expr.fromSequence ("RF_END");
    83   static  final Expr _c_36 = _c_6.subexpr (0, 1);
    84   static  final Expr _c_172 = Expr.fromSequence (" <<<\\n\", rfrt::stack->get_depth());");
    85   static  final Expr _c_37 = _c_172.subexpr (7, 2);
    86   static  final Expr _c_38 = Expr.fromSequence ("RF_FUNC (");
    87   static  final Expr _c_39 = new Expr (Symbol.newWord ("TRACE"));
    88   static  final Expr _c_40 = new Expr (Symbol.newWord ("IF-INT-CMP"));
    89   static  final Expr _c_41 = _c_14.subexpr (0, 1);
    90   static  final Expr _c_92 = Expr.fromSequence ("if (RF_CALL (");
    91   static  final Expr _c_42 = _c_92.subexpr (0, 4);
    92   static  final Expr _c_43 = _c_9.subexpr (21, 1);
    93   static  final Expr _c_44 = new Expr (Symbol.newWord ("IF"));
    94   static  final Expr _c_45 = new Expr (Symbol.newWord ("FOR"));
    95   static  final Expr _c_46 = new Expr (Symbol.newWord ("LABEL"));
    96   static  final Expr _c_48 = Expr.fromSequence ("for ( ; ; ");
    97   static  final Expr _c_49 = new Expr (Symbol.newWord ("TRY"));
    98   static  final Expr _c_50 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_TRAP"));
    99   static  final Expr _c_51 = new Expr (Symbol.newWord ("CATCH-ERROR"));
    100   static  final Expr _c_52 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_CLEANUP;"));
    101   static  final Expr _c_53 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_WITH"));
    102   static  final Expr _c_54 = new Expr (Symbol.newWord ("RETFAIL"));
    103   static  final Expr _c_186 = Expr.fromSequence ("else RF_RETFAIL;");
    104   static  final Expr _c_55 = new Expr ((Comparable<?>) _c_186.subexpr (5, 11));
    105   static  final Expr _c_56 = new Expr (Symbol.newWord ("FATAL"));
    106   static  final Expr _c_57 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_FUNC_ERROR (unexpected_fail);"));
    107   static  final Expr _c_58 = new Expr (Symbol.newWord ("LSPLIT"));
    108   static  final Expr _c_59 = Expr.fromSequence ("RF_lsplit (");
    109   static  final Expr _c_60 = new Expr (Symbol.newWord ("RSPLIT"));
    110   static  final Expr _c_61 = Expr.fromSequence ("RF_rsplit (");
    111   static  final Expr _c_62 = new Expr (Symbol.newWord ("ASSIGN"));
    112   static  final Expr _c_63 = new Expr (Symbol.newWord ("DECL"));
    113   static  final Expr _c_64 = Expr.fromSequence ("int ");
    114   static  final Expr _c_86 = Expr.fromSequence ("extern Expr ");
    115   static  final Expr _c_65 = _c_86.subexpr (7, 5);
    116   static  final Expr _c_66 = _c_38.subexpr (7, 2);
    117   static  final Expr _c_67 = new Expr (Symbol.newWord ("DROP"));
    118   static  final Expr _c_68 = Expr.fromSequence (".drop ();");
    119   static  final Expr _c_69 = new Expr (Symbol.newWord ("CONTINUE"));
    120   static  final Expr _c_70 = Expr.fromSequence ("goto ");
    121   static  final Expr _c_71 = new Expr (Symbol.newWord ("BREAK"));
    122   static  final Expr _c_72 = Expr.fromSequence ("RF_ERROR (");
    123   static  final Expr _c_74 = _c_163.subexpr (0, 1);
    124   static  final Expr _c_76 = _c_73.subexpr (0, 1);
    125   static  final Expr _c_77 = _c_183.subexpr (0, 7);
    126   static  final Expr _c_78 = new Expr (new Func () {
     59  static  final Expr _c_17 = new Expr (Symbol.newWord ("LINENUMBER"));
     60  static  final Expr _c_18 = new Expr (Symbol.newWord ("NATIVE"));
     61  static  final Expr _c_19 = new Expr (Symbol.newInt ("1"));
     62  static  final Expr _c_178 = Expr.fromSequence ("printf (\"           argument \"); ");
     63  static  final Expr _c_20 = _c_178.subexpr (20, 3);
     64  static  final Expr _c_181 = Expr.fromSequence ("printf (\"           result   \"); ");
     65  static  final Expr _c_21 = _c_181.subexpr (20, 3);
     66  static  final Expr _c_22 = new Expr (Symbol.newWord ("Not available"));
     67  static  final Expr _c_23 = new Expr (Symbol.newWord ("ERROR"));
     68  static  final Expr _c_76 = Expr.concat (Symbol.newWord ("CONSTEXPR"), Symbol.newWord ("LOCAL"));
     69  static  final Expr _c_24 = _c_76.subexpr (1, 1);
     70  static  final Expr _c_74 = Expr.concat (Symbol.newWord ("CONSTEXPR"), Symbol.newWord ("IMPORT"));
     71  static  final Expr _c_25 = _c_74.subexpr (1, 1);
     72  static  final Expr _c_26 = new Expr (Symbol.newWord ("FUNC"));
     73  static  final Expr _c_27 = new Expr (Symbol.newWord ("FUNC?"));
     74  static  final Expr _c_28 = Expr.getConcatenator (4).toRight (Symbol.newWord ("org")).toRight (Symbol.newWord ("refal")).toRight (Symbol.newWord ("plus")).toRight (Symbol.newWord ("wrappers")).yield ();
     75  static  final Expr _c_29 = _c_185.subexpr (12, 1);
     76  static  final Expr _c_30 = new Expr (Symbol.newWord ("TRACEALL"));
     77  static  final Expr _c_31 = _c_185.subexpr (17, 1);
     78  static  final Expr _c_32 = new Expr (Symbol.newWord ("DECL-FUNC"));
     79  static  final Expr _c_33 = Expr.fromSequence ("RF_ARG ");
     80  static  final Expr _c_164 = Expr.concat ((Comparable<?>) Expr.empty, Symbol.newWord ("Vars"));
     81  static  final Expr _c_34 = _c_164.subexpr (1, 1);
     82  static  final Expr _c_35 = Expr.fromSequence ("RF_RES ");
     83  static  final Expr _c_36 = Expr.fromSequence ("RF_END");
     84  static  final Expr _c_37 = _c_6.subexpr (0, 1);
     85  static  final Expr _c_173 = Expr.fromSequence (" <<<\\n\", rfrt::stack->get_depth());");
     86  static  final Expr _c_38 = _c_173.subexpr (7, 2);
     87  static  final Expr _c_39 = Expr.fromSequence ("RF_FUNC (");
     88  static  final Expr _c_40 = new Expr (Symbol.newWord ("TRACE"));
     89  static  final Expr _c_41 = new Expr (Symbol.newWord ("IF-INT-CMP"));
     90  static  final Expr _c_42 = _c_14.subexpr (0, 1);
     91  static  final Expr _c_93 = Expr.fromSequence ("if (RF_CALL (");
     92  static  final Expr _c_43 = _c_93.subexpr (0, 4);
     93  static  final Expr _c_44 = _c_9.subexpr (21, 1);
     94  static  final Expr _c_45 = new Expr (Symbol.newWord ("IF"));
     95  static  final Expr _c_46 = new Expr (Symbol.newWord ("FOR"));
     96  static  final Expr _c_47 = new Expr (Symbol.newWord ("LABEL"));
     97  static  final Expr _c_49 = Expr.fromSequence ("for ( ; ; ");
     98  static  final Expr _c_50 = new Expr (Symbol.newWord ("TRY"));
     99  static  final Expr _c_51 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_TRAP"));
     100  static  final Expr _c_52 = new Expr (Symbol.newWord ("CATCH-ERROR"));
     101  static  final Expr _c_53 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_CLEANUP;"));
     102  static  final Expr _c_54 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_WITH"));
     103  static  final Expr _c_55 = new Expr (Symbol.newWord ("RETFAIL"));
     104  static  final Expr _c_187 = Expr.fromSequence ("else RF_RETFAIL;");
     105  static  final Expr _c_56 = new Expr ((Comparable<?>) _c_187.subexpr (5, 11));
     106  static  final Expr _c_57 = new Expr (Symbol.newWord ("FATAL"));
     107  static  final Expr _c_58 = new Expr ((Comparable<?>) Expr.fromSequence ("RF_FUNC_ERROR (unexpected_fail);"));
     108  static  final Expr _c_59 = new Expr (Symbol.newWord ("LSPLIT"));
     109  static  final Expr _c_60 = Expr.fromSequence ("RF_lsplit (");
     110  static  final Expr _c_61 = new Expr (Symbol.newWord ("RSPLIT"));
     111  static  final Expr _c_62 = Expr.fromSequence ("RF_rsplit (");
     112  static  final Expr _c_63 = new Expr (Symbol.newWord ("ASSIGN"));
     113  static  final Expr _c_64 = new Expr (Symbol.newWord ("DECL"));
     114  static  final Expr _c_65 = Expr.fromSequence ("int ");
     115  static  final Expr _c_87 = Expr.fromSequence ("extern Expr ");
     116  static  final Expr _c_66 = _c_87.subexpr (7, 5);
     117  static  final Expr _c_67 = _c_39.subexpr (7, 2);
     118  static  final Expr _c_68 = new Expr (Symbol.newWord ("DROP"));
     119  static  final Expr _c_69 = Expr.fromSequence (".drop ();");
     120  static  final Expr _c_70 = new Expr (Symbol.newWord ("CONTINUE"));
     121  static  final Expr _c_71 = Expr.fromSequence ("goto ");
     122  static  final Expr _c_72 = new Expr (Symbol.newWord ("BREAK"));
     123  static  final Expr _c_73 = Expr.fromSequence ("RF_ERROR (");
     124  static  final Expr _c_75 = _c_164.subexpr (0, 1);
     125  static  final Expr _c_77 = _c_74.subexpr (0, 1);
     126  static  final Expr _c_78 = _c_184.subexpr (0, 7);
     127  static  final Expr _c_79 = new Expr (new Func () {
    127128    public boolean eval (Expr arg, Result res) throws RefalException {
    128129      refal.plus.CppMangle.Rfp2Cpp (arg, res);
     
    130131    }
    131132  });
    132   static  final Expr _c_79 = new Expr (new Func () {
     133  static  final Expr _c_80 = new Expr (new Func () {
    133134    public boolean eval (Expr arg, Result res) throws RefalException {
    134135      return Name_To_CPP_0 (arg, res);
    135136    }
    136137  });
    137   static  final Expr _c_80 = new Expr (Symbol.newWord ("OBJ"));
    138   static  final Expr _c_81 = new Expr (Symbol.newWord ("BOX"));
    139   static  final Expr _c_175 = Expr.fromSequence ("printf(\"  : \");");
    140   static  final Expr _c_82 = _c_175.subexpr (12, 2);
    141   static  final Expr _c_83 = Expr.fromSequence ("Expr::create_sym< rftype::NamedObject<rftype::BoxContents> >(L\"");
    142   static  final Expr _c_84 = _c_83.subexpr (59, 4);
    143   static  final Expr _c_85 = Expr.fromSequence ("new rftype::StaticObject<rftype::");
    144   static  final Expr _c_87 = Expr.fromSequence ("RF_DECL (");
    145   static  final Expr _c_88 = new Expr (Symbol.newWord ("EXTERN"));
    146   static  final Expr _c_89 = new Expr (Symbol.newWord ("CALL"));
    147   static  final Expr _c_90 = new Expr (Symbol.newWord ("Exprs"));
    148   static  final Expr _c_91 = _c_172.subexpr (32, 2);
    149   static  final Expr _c_93 = new Expr ((Comparable<?>) Expr.fromSequence ("return true;"));
    150   static  final Expr _c_94 = new Expr ((Comparable<?>) _c_186);
    151   static  final Expr _c_95 = new Expr (Symbol.newWord ("TAILCALL?"));
    152   static  final Expr _c_96 = new Expr (Symbol.newWord ("TAILCALL"));
    153   static  final Expr _c_97 = _c_32.subexpr (0, 3);
    154   static  final Expr _c_98 = Expr.fromSequence ("empty");
    155   static  final Expr _c_99 = new Expr (new Func () {
     138  static  final Expr _c_81 = new Expr (Symbol.newWord ("OBJ"));
     139  static  final Expr _c_82 = new Expr (Symbol.newWord ("BOX"));
     140  static  final Expr _c_176 = Expr.fromSequence ("printf(\"  : \");");
     141  static  final Expr _c_83 = _c_176.subexpr (12, 2);
     142  static  final Expr _c_84 = Expr.fromSequence ("Expr::create_sym< rftype::NamedObject<rftype::BoxContents> >(L\"");
     143  static  final Expr _c_85 = _c_84.subexpr (59, 4);
     144  static  final Expr _c_86 = Expr.fromSequence ("new rftype::StaticObject<rftype::");
     145  static  final Expr _c_88 = Expr.fromSequence ("RF_DECL (");
     146  static  final Expr _c_89 = new Expr (Symbol.newWord ("EXTERN"));
     147  static  final Expr _c_90 = new Expr (Symbol.newWord ("CALL"));
     148  static  final Expr _c_91 = new Expr (Symbol.newWord ("Exprs"));
     149  static  final Expr _c_92 = _c_173.subexpr (32, 2);
     150  static  final Expr _c_94 = new Expr ((Comparable<?>) Expr.fromSequence ("return true;"));
     151  static  final Expr _c_95 = new Expr ((Comparable<?>) _c_187);
     152  static  final Expr _c_96 = new Expr (Symbol.newWord ("TAILCALL?"));
     153  static  final Expr _c_97 = new Expr (Symbol.newWord ("TAILCALL"));
     154  static  final Expr _c_98 = _c_33.subexpr (0, 3);
     155  static  final Expr _c_99 = Expr.fromSequence ("empty");
     156  static  final Expr _c_100 = new Expr (new Func () {
    156157    public boolean eval (Expr arg, Result res) throws RefalException {
    157158      Term_Ref_To_CPP (arg, res);
     
    159160    }
    160161  });
    161   static  final Expr _c_100 = new Expr (Symbol.newWord ("+"));
    162   static  final Expr _c_101 = _c_66.subexpr (1, 1);
    163   static  final Expr _c_102 = new Expr (Symbol.newWord ("PAREN"));
    164   static  final Expr _c_103 = _c_68.subexpr (5, 3);
    165   static  final Expr _c_104 = new Expr (Symbol.newWord ("DEREF"));
    166   static  final Expr _c_105 = Expr.fromSequence ("Expr (");
    167   static  final Expr _c_106 = new Expr (Symbol.newWord ("SUBEXPR"));
    168   static  final Expr _c_107 = new Expr (Symbol.newWord ("REF"));
    169   static  final Expr _c_108 = new Expr (Symbol.newWord ("ERROR-EXPR"));
    170   static  final Expr _c_109 = Expr.fromSequence ("err");
    171   static  final Expr _c_110 = _c_83.subexpr (4, 2);
    172   static  final Expr _c_151 = Expr.fromSequence (" + Expr::create<rftype::Word>(\"");
    173   static  final Expr _c_113 = _c_151.subexpr (3, 28);
    174   static  final Expr _c_111 = _c_113.subexpr (25, 3);
    175   static  final Expr _c_112 = _c_113.subexpr (0, 13);
    176   static  final Expr _c_114 = new Expr (Symbol.newWord ("Illegal type int-symbol: "));
    177   static  final Expr _c_115 = new Expr (Symbol.newWord ("LENGTH"));
    178   static  final Expr _c_116 = Expr.fromSequence (".get_len ()");
    179   static  final Expr _c_117 = new Expr (Symbol.newWord ("MAX"));
    180   static  final Expr _c_118 = new Expr (Symbol.newWord ("Ints"));
    181   static  final Expr _c_119 = Expr.fromSequence ("pxx_max (");
    182   static  final Expr _c_120 = new Expr (Symbol.newWord ("MIN"));
    183   static  final Expr _c_121 = Expr.fromSequence ("pxx_min (");
    184   static  final Expr _c_122 = new Expr (Symbol.newWord ("INFIX"));
    185   static  final Expr _c_123 = new Expr (new Func () {
     162  static  final Expr _c_101 = new Expr (Symbol.newWord ("+"));
     163  static  final Expr _c_102 = _c_67.subexpr (1, 1);
     164  static  final Expr _c_103 = new Expr (Symbol.newWord ("PAREN"));
     165  static  final Expr _c_104 = _c_69.subexpr (5, 3);
     166  static  final Expr _c_105 = new Expr (Symbol.newWord ("DEREF"));
     167  static  final Expr _c_106 = Expr.fromSequence ("Expr (");
     168  static  final Expr _c_107 = new Expr (Symbol.newWord ("SUBEXPR"));
     169  static  final Expr _c_108 = new Expr (Symbol.newWord ("REF"));
     170  static  final Expr _c_109 = new Expr (Symbol.newWord ("ERROR-EXPR"));
     171  static  final Expr _c_110 = Expr.fromSequence ("err");
     172  static  final Expr _c_111 = _c_84.subexpr (4, 2);
     173  static  final Expr _c_152 = Expr.fromSequence (" + Expr::create<rftype::Word>(\"");
     174  static  final Expr _c_114 = _c_152.subexpr (3, 28);
     175  static  final Expr _c_112 = _c_114.subexpr (25, 3);
     176  static  final Expr _c_113 = _c_114.subexpr (0, 13);
     177  static  final Expr _c_115 = new Expr (Symbol.newWord ("Illegal type int-symbol: "));
     178  static  final Expr _c_116 = new Expr (Symbol.newWord ("LENGTH"));
     179  static  final Expr _c_117 = Expr.fromSequence (".get_len ()");
     180  static  final Expr _c_118 = new Expr (Symbol.newWord ("MAX"));
     181  static  final Expr _c_119 = new Expr (Symbol.newWord ("Ints"));
     182  static  final Expr _c_120 = Expr.fromSequence ("pxx_max (");
     183  static  final Expr _c_121 = new Expr (Symbol.newWord ("MIN"));
     184  static  final Expr _c_122 = Expr.fromSequence ("pxx_min (");
     185  static  final Expr _c_123 = new Expr (Symbol.newWord ("INFIX"));
     186  static  final Expr _c_124 = new Expr (new Func () {
    186187    public boolean eval (Expr arg, Result res) throws RefalException {
    187188      Expr_Int_To_CPP (arg, res);
     
    189190    }
    190191  });
    191   static  final Expr _c_124 = new Expr (Symbol.newWord ("CALL-FAILS"));
    192   static  final Expr _c_125 = Expr.fromSequence ("!RF_CALL (");
    193   static  final Expr _c_126 = new Expr (Symbol.newWord ("SYMBOL?"));
    194   static  final Expr _c_127 = Expr.fromSequence (".symbol_at (");
    195   static  final Expr _c_128 = new Expr (Symbol.newWord ("FLAT-SUBEXPR?"));
    196   static  final Expr _c_129 = Expr.fromSequence (".flat_at (");
    197   static  final Expr _c_130 = new Expr (Symbol.newWord ("ITER-FAILS"));
    198   static  final Expr _c_131 = Expr.fromSequence ("!RF_iter(");
    199   static  final Expr _c_132 = new Expr (Symbol.newWord ("EQ"));
    200   static  final Expr _c_133 = Expr.fromSequence (".eq (");
    201   static  final Expr _c_134 = new Expr (Symbol.newWord ("TERM-EQ"));
    202   static  final Expr _c_135 = Expr.fromSequence (".term_eq (");
    203   static  final Expr _c_136 = new Expr (Symbol.newWord ("NOT"));
    204   static  final Expr _c_137 = _c_125.subexpr (0, 1);
    205   static  final Expr _c_138 = new Expr (Symbol.newWord ("INC-ITER"));
    206   static  final Expr _c_139 = Expr.fromSequence (")++");
    207   static  final Expr _c_140 = _c_131.subexpr (1, 8);
    208   static  final Expr _c_141 = new Expr (Symbol.newWord ("DEC-ITER"));
    209   static  final Expr _c_142 = Expr.fromSequence (")--");
    210   static  final Expr _c_145 = Expr.fromSequence (" + rftype::Char::create_expr (\"");
    211   static  final Expr _c_143 = _c_145.subexpr (0, 3);
    212   static  final Expr _c_144 = new Expr (Symbol.newInt ("127"));
    213   static  final Expr _c_146 = Expr.fromSequence (" + rftype::Char::create_expr (L\"");
    214   static  final Expr _c_147 = Expr.fromSequence (") ()");
    215   static  final Expr _c_148 = Expr.fromSequence (" + (");
    216   static  final Expr _c_149 = Expr.fromSequence (" + Expr::create_sym<rftype::Func> (");
    217   static  final Expr _c_150 = _c_151.subexpr (0, 16);
    218   static  final Expr _c_153 = Expr.fromSequence ("\\\\");
    219   static  final Expr _c_152 = _c_153.subexpr (0, 1);
    220   static  final Expr _c_154 = Expr.fromSequence ("\n");
    221   static  final Expr _c_155 = _c_172.subexpr (4, 2);
    222   static  final Expr _c_156 = Expr.fromSequence ("\t");
    223   static  final Expr _c_157 = Expr.fromSequence ("\\t");
    224   static  final Expr _c_158 = Expr.fromSequence ("\r");
    225   static  final Expr _c_159 = Expr.fromSequence ("\\r");
    226   static  final Expr _c_160 = _c_151.subexpr (30, 1);
    227   static  final Expr _c_161 = Expr.fromSequence ("\\\"");
    228   static  final Expr _c_162 = Expr.fromSequence ("RF_VOID");
    229   static  final Expr _c_164 = Expr.fromSequence ("/*void*/");
    230   static  final Expr _c_165 = Expr.fromSequence (";;)");
    231   static  final Expr _c_166 = _c_27.subexpr (1, 2);
    232   static  final Expr _c_167 = _c_27.subexpr (1, 1);
    233   static  final Expr _c_168 = _c_47.subexpr (1, 2);
    234   static  final Expr _c_169 = _c_185.subexpr (6, 10);
    235   static  final Expr _c_170 = new Expr ((Comparable<?>) _c_8);
    236   static  final Expr _c_171 = new Expr (new Func () {
     192  static  final Expr _c_125 = new Expr (Symbol.newWord ("CALL-FAILS"));
     193  static  final Expr _c_126 = Expr.fromSequence ("!RF_CALL (");
     194  static  final Expr _c_127 = new Expr (Symbol.newWord ("SYMBOL?"));
     195  static  final Expr _c_128 = Expr.fromSequence (".symbol_at (");
     196  static  final Expr _c_129 = new Expr (Symbol.newWord ("FLAT-SUBEXPR?"));
     197  static  final Expr _c_130 = Expr.fromSequence (".flat_at (");
     198  static  final Expr _c_131 = new Expr (Symbol.newWord ("ITER-FAILS"));
     199  static  final Expr _c_132 = Expr.fromSequence ("!RF_iter(");
     200  static  final Expr _c_133 = new Expr (Symbol.newWord ("EQ"));
     201  static  final Expr _c_134 = Expr.fromSequence (".eq (");
     202  static  final Expr _c_135 = new Expr (Symbol.newWord ("TERM-EQ"));
     203  static  final Expr _c_136 = Expr.fromSequence (".term_eq (");
     204  static  final Expr _c_137 = new Expr (Symbol.newWord ("NOT"));
     205  static  final Expr _c_138 = _c_126.subexpr (0, 1);
     206  static  final Expr _c_139 = new Expr (Symbol.newWord ("INC-ITER"));
     207  static  final Expr _c_140 = Expr.fromSequence (")++");
     208  static  final Expr _c_141 = _c_132.subexpr (1, 8);
     209  static  final Expr _c_142 = new Expr (Symbol.newWord ("DEC-ITER"));
     210  static  final Expr _c_143 = Expr.fromSequence (")--");
     211  static  final Expr _c_146 = Expr.fromSequence (" + rftype::Char::create_expr (\"");
     212  static  final Expr _c_144 = _c_146.subexpr (0, 3);
     213  static  final Expr _c_145 = new Expr (Symbol.newInt ("127"));
     214  static  final Expr _c_147 = Expr.fromSequence (" + rftype::Char::create_expr (L\"");
     215  static  final Expr _c_148 = Expr.fromSequence (") ()");
     216  static  final Expr _c_149 = Expr.fromSequence (" + (");
     217  static  final Expr _c_150 = Expr.fromSequence (" + Expr::create_sym<rftype::Func> (");
     218  static  final Expr _c_151 = _c_152.subexpr (0, 16);
     219  static  final Expr _c_154 = Expr.fromSequence ("\\\\");
     220  static  final Expr _c_153 = _c_154.subexpr (0, 1);
     221  static  final Expr _c_155 = Expr.fromSequence ("\n");
     222  static  final Expr _c_156 = _c_173.subexpr (4, 2);
     223  static  final Expr _c_157 = Expr.fromSequence ("\t");
     224  static  final Expr _c_158 = Expr.fromSequence ("\\t");
     225  static  final Expr _c_159 = Expr.fromSequence ("\r");
     226  static  final Expr _c_160 = Expr.fromSequence ("\\r");
     227  static  final Expr _c_161 = _c_152.subexpr (30, 1);
     228  static  final Expr _c_162 = Expr.fromSequence ("\\\"");
     229  static  final Expr _c_163 = Expr.fromSequence ("RF_VOID");
     230  static  final Expr _c_165 = Expr.fromSequence ("/*void*/");
     231  static  final Expr _c_166 = Expr.fromSequence (";;)");
     232  static  final Expr _c_167 = _c_28.subexpr (1, 2);
     233  static  final Expr _c_168 = _c_28.subexpr (1, 1);
     234  static  final Expr _c_169 = _c_48.subexpr (1, 2);
     235  static  final Expr _c_170 = _c_186.subexpr (6, 10);
     236  static  final Expr _c_171 = new Expr ((Comparable<?>) _c_8);
     237  static  final Expr _c_172 = new Expr (new Func () {
    237238    public boolean eval (Expr arg, Result res) throws RefalException {
    238239      Open_Namespace (arg, res);
     
    240241    }
    241242  });
    242   static  final Expr _c_173 = Expr.fromSequence ("printf (\"+ %5u: enter >>> ");
    243   static  final Expr _c_174 = Expr.fromSequence ("printf(\"%2d: \", ");
    244   static  final Expr _c_179 = Expr.fromSequence (").to_Expr().writeln(stdout);");
    245   static  final Expr _c_176 = _c_179.subexpr (10, 18);
    246   static  final Expr _c_178 = Expr.fromSequence ("printf (\"- %5u: exit  >>> ");
    247   static  final Expr _c_181 = Expr.fromSequence ("printf (\"- %5u: fail  >>> ");
    248   static  final Expr _c_182 = Expr.getConcatenator (3).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Unexpected fail")).yield ();
     243  static  final Expr _c_174 = Expr.fromSequence ("printf (\"+ %5u: enter >>> ");
     244  static  final Expr _c_175 = Expr.fromSequence ("printf(\"%2d: \", ");
     245  static  final Expr _c_180 = Expr.fromSequence (").to_Expr().writeln(stdout);");
     246  static  final Expr _c_177 = _c_180.subexpr (10, 18);
     247  static  final Expr _c_179 = Expr.fromSequence ("printf (\"- %5u: exit  >>> ");
     248  static  final Expr _c_182 = Expr.fromSequence ("printf (\"- %5u: fail  >>> ");
     249  static  final Expr _c_183 = Expr.getConcatenator (3).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Unexpected fail")).yield ();
    249250
    250251  @RefalFormat("$func RFP_ASAIL_To_CPP t = e;")
     
    553554            }
    554555            Expr _v_deref__item2 = (Expr) _vt_item.at (0);
    555             int _v_len5 = _v_deref__item2.length ();
     556            if (_v_deref__item2.length () != 2)
     557            {
     558              break _block2__branch2;
     559            }
     560            if (!_c_17.termEquals (_v_deref__item2, 0))
     561            {
     562              break _block2__branch2;
     563            }
     564            if (!_v_deref__item2.isSymbolAt ((0 + 1)))
     565            {
     566              break _block2__branch2;
     567            }
     568            Expr _vs_N = Expr.empty;
     569            _vs_N = _v_deref__item2.subexpr ((0 + 1), 1);
     570            _ve_cpp__item = Expr.empty;
     571            break _block2;
     572          }
     573          _block2__branch3: {
     574            if (_vt_item.isSymbolAt (0))
     575            {
     576              break _block2__branch3;
     577            }
     578            Expr _v_deref__item3 = (Expr) _vt_item.at (0);
     579            int _v_len5 = _v_deref__item3.length ();
    556580            int _v_len6 = 6;
    557581            if (_v_len5 < _v_len6)
    558582            {
    559               break _block2__branch2;
     583              break _block2__branch3;
    560584            }
    561585            int _v_len__native = (_v_len5 - _v_len6);
    562             if (_v_deref__item2.isSymbolAt ((0 + 1 + 1 + 1)))
    563             {
    564               break _block2__branch2;
    565             }
    566             if (_v_deref__item2.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    567             {
    568               break _block2__branch2;
    569             }
    570             if (_v_deref__item2.isSymbolAt ((0 + 1 + 1 + 1 + 1 + 1)))
    571             {
    572               break _block2__branch2;
    573             }
    574             Expr _v_deref__deref__item2 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1));
    575             Expr _v_deref__deref__item22 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1));
    576             Expr _v_deref__deref__item23 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1 + 1));
    577             int _v_len7 = _v_deref__deref__item2.length ();
     586            if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1)))
     587            {
     588              break _block2__branch3;
     589            }
     590            if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     591            {
     592              break _block2__branch3;
     593            }
     594            if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1 + 1 + 1)))
     595            {
     596              break _block2__branch3;
     597            }
     598            Expr _v_deref__deref__item3 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1));
     599            Expr _v_deref__deref__item32 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1 + 1));
     600            Expr _v_deref__deref__item33 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1 + 1 + 1));
     601            int _v_len7 = _v_deref__deref__item3.length ();
    578602            int _v_len8 = 0;
    579603            if (_v_len7 < _v_len8)
    580604            {
    581               break _block2__branch2;
     605              break _block2__branch3;
    582606            }
    583607            int _v_len__name = (_v_len7 - _v_len8);
    584             int _v_len9 = _v_deref__deref__item22.length ();
     608            int _v_len9 = _v_deref__deref__item32.length ();
    585609            int _v_len10 = 0;
    586610            if (_v_len9 < _v_len10)
    587611            {
    588               break _block2__branch2;
     612              break _block2__branch3;
    589613            }
    590614            int _v_len__in = (_v_len9 - _v_len10);
    591             int _v_len11 = _v_deref__deref__item23.length ();
     615            int _v_len11 = _v_deref__deref__item33.length ();
    592616            int _v_len12 = 0;
    593617            if (_v_len11 < _v_len12)
    594618            {
    595               break _block2__branch2;
     619              break _block2__branch3;
    596620            }
    597621            int _v_len__out = (_v_len11 - _v_len12);
    598             if (!_c_17.termEquals (_v_deref__item2, 0))
    599             {
    600               break _block2__branch2;
    601             }
    602             if (!_v_deref__item2.isSymbolAt ((0 + 1)))
    603             {
    604               break _block2__branch2;
    605             }
    606             if (!_v_deref__item2.isSymbolAt ((0 + 1 + 1)))
    607             {
    608               break _block2__branch2;
     622            if (!_c_18.termEquals (_v_deref__item3, 0))
     623            {
     624              break _block2__branch3;
     625            }
     626            if (!_v_deref__item3.isSymbolAt ((0 + 1)))
     627            {
     628              break _block2__branch3;
     629            }
     630            if (!_v_deref__item3.isSymbolAt ((0 + 1 + 1)))
     631            {
     632              break _block2__branch3;
    609633            }
    610634            Expr _vs_linkage = Expr.empty;
    611             _vs_linkage = _v_deref__item2.subexpr ((0 + 1), 1);
     635            _vs_linkage = _v_deref__item3.subexpr ((0 + 1), 1);
    612636            Expr _vs_tag = Expr.empty;
    613             _vs_tag = _v_deref__item2.subexpr ((0 + 1 + 1), 1);
     637            _vs_tag = _v_deref__item3.subexpr ((0 + 1 + 1), 1);
    614638            Expr _ve_native = Expr.empty;
    615             _ve_native = _v_deref__item2.subexpr ((0 + 1 + 1 + 1 + 1 + 1 + 1), _v_len__native);
     639            _ve_native = _v_deref__item3.subexpr ((0 + 1 + 1 + 1 + 1 + 1 + 1), _v_len__native);
    616640            Expr _ve_name = Expr.empty;
    617             _ve_name = _v_deref__deref__item2.subexpr (0, _v_len__name);
     641            _ve_name = _v_deref__deref__item3.subexpr (0, _v_len__name);
    618642            Expr _ve_in = Expr.empty;
    619             _ve_in = _v_deref__deref__item22.subexpr (0, _v_len__in);
     643            _ve_in = _v_deref__deref__item32.subexpr (0, _v_len__in);
    620644            Expr _ve_out = Expr.empty;
    621             _ve_out = _v_deref__deref__item23.subexpr (0, _v_len__out);
     645            _ve_out = _v_deref__deref__item33.subexpr (0, _v_len__out);
    622646            Result _ge_auxcall1 = new Result (Expr.empty);
    623647            rfp_vars.Vars (_ve_in, _ge_auxcall1);
    624648            Result _ge_auxcall2 = new Result (Expr.empty);
    625649            Result _gs_auxcall3 = new Result (Expr.empty);
    626             rfp_vars.Gener_Var_Indices (_c_18, _ge_auxcall1.getExpr (), _c_19, _ge_auxcall2, _gs_auxcall3);
     650            rfp_vars.Gener_Var_Indices (_c_19, _ge_auxcall1.getExpr (), _c_20, _ge_auxcall2, _gs_auxcall3);
    627651            Result _v_Del__Pragmas1 = new Result (Expr.empty);
    628652            rfp_helper.Del_Pragmas (Expr.concat (_ge_auxcall2.getExpr (), _gs_auxcall3.getExpr ()), _v_Del__Pragmas1);
     
    640664            Expr _ve_rfArg = Expr.empty;
    641665            _ve_rfArg = _v_Del__Pragmas1.getExpr ().subexpr (0, _v_len__rfArg);
    642             Expr _vs__dollar_tmp_m_125_m_73 = Expr.empty;
    643             _vs__dollar_tmp_m_125_m_73 = _v_Del__Pragmas1.getExpr ().subexpr ((0 + _v_len__rfArg), 1);
     666            Expr _vs__dollar_tmp_m_126_m_73 = Expr.empty;
     667            _vs__dollar_tmp_m_126_m_73 = _v_Del__Pragmas1.getExpr ().subexpr ((0 + _v_len__rfArg), 1);
    644668            Result _ge_auxcall4 = new Result (Expr.empty);
    645669            rfp_vars.Vars (_ve_out, _ge_auxcall4);
    646670            Result _ge_auxcall5 = new Result (Expr.empty);
    647671            Result _gs_auxcall6 = new Result (Expr.empty);
    648             rfp_vars.Gener_Var_Indices (_c_18, _ge_auxcall4.getExpr (), _c_20, _ge_auxcall5, _gs_auxcall6);
     672            rfp_vars.Gener_Var_Indices (_c_19, _ge_auxcall4.getExpr (), _c_21, _ge_auxcall5, _gs_auxcall6);
    649673            Result _v_Del__Pragmas2 = new Result (Expr.empty);
    650674            rfp_helper.Del_Pragmas (Expr.concat (_ge_auxcall5.getExpr (), _gs_auxcall6.getExpr ()), _v_Del__Pragmas2);
     
    662686            Expr _ve_rfRes = Expr.empty;
    663687            _ve_rfRes = _v_Del__Pragmas2.getExpr ().subexpr (0, _v_len__rfRes);
    664             Expr _vs__dollar_tmp_m_126_m_74 = Expr.empty;
    665             _vs__dollar_tmp_m_126_m_74 = _v_Del__Pragmas2.getExpr ().subexpr ((0 + _v_len__rfRes), 1);
     688            Expr _vs__dollar_tmp_m_127_m_74 = Expr.empty;
     689            _vs__dollar_tmp_m_127_m_74 = _v_Del__Pragmas2.getExpr ().subexpr ((0 + _v_len__rfRes), 1);
    666690            Result _va_3 = new Result ();
    667             ASAIL_To_CPP (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_vs_tag).toRight (_c_23).toRight ((Comparable<?>) _ve_name).toRight ((Comparable<?>) _ve_rfArg).toRight ((Comparable<?>) _ve_rfRes).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_22).toRight (_ve_name).toRight (_c_21).yield ()).yield ()), _va_3);
     691            ASAIL_To_CPP (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_vs_tag).toRight (_c_24).toRight ((Comparable<?>) _ve_name).toRight ((Comparable<?>) _ve_rfArg).toRight ((Comparable<?>) _ve_rfRes).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_23).toRight (_ve_name).toRight (_c_22).yield ()).yield ()), _va_3);
    668692            _ve_cpp__item = _va_3.getExpr ();
    669693            break _block2;
    670694          }
    671           _block2__branch3: {
     695          _block2__branch4: {
    672696            if (_vt_item.isSymbolAt (0))
    673697            {
    674               break _block2__branch3;
    675             }
    676             Expr _v_deref__item3 = (Expr) _vt_item.at (0);
    677             int _v_len17 = _v_deref__item3.length ();
     698              break _block2__branch4;
     699            }
     700            Expr _v_deref__item4 = (Expr) _vt_item.at (0);
     701            int _v_len17 = _v_deref__item4.length ();
    678702            int _v_len18 = 5;
    679703            if (_v_len17 < _v_len18)
    680704            {
    681               break _block2__branch3;
     705              break _block2__branch4;
    682706            }
    683707            int _v_len__body = (_v_len17 - _v_len18);
    684             if (_v_deref__item3.isSymbolAt ((0 + 1 + 1)))
    685             {
    686               break _block2__branch3;
    687             }
    688             Expr _v_deref__deref__item3 = (Expr) _v_deref__item3.at ((0 + 1 + 1));
    689             int _v_len19 = _v_deref__deref__item3.length ();
     708            if (_v_deref__item4.isSymbolAt ((0 + 1 + 1)))
     709            {
     710              break _block2__branch4;
     711            }
     712            Expr _v_deref__deref__item4 = (Expr) _v_deref__item4.at ((0 + 1 + 1));
     713            int _v_len19 = _v_deref__deref__item4.length ();
    690714            int _v_len20 = 0;
    691715            if (_v_len19 < _v_len20)
    692716            {
    693               break _block2__branch3;
     717              break _block2__branch4;
    694718            }
    695719            int _v_len__name2 = (_v_len19 - _v_len20);
    696             if (!_v_deref__item3.isSymbolAt (0))
    697             {
    698               break _block2__branch3;
    699             }
    700             if (!_c_24.termEquals (_v_deref__item3, (0 + 1)))
    701             {
    702               break _block2__branch3;
     720            if (!_v_deref__item4.isSymbolAt (0))
     721            {
     722              break _block2__branch4;
     723            }
     724            if (!_c_25.termEquals (_v_deref__item4, (0 + 1)))
     725            {
     726              break _block2__branch4;
    703727            }
    704728            Expr _vs_tag = Expr.empty;
    705             _vs_tag = _v_deref__item3.subexpr (0, 1);
     729            _vs_tag = _v_deref__item4.subexpr (0, 1);
    706730            Expr _vt_args = Expr.empty;
    707             _vt_args = _v_deref__item3.subexpr ((0 + 1 + 1 + 1), 1);
     731            _vt_args = _v_deref__item4.subexpr ((0 + 1 + 1 + 1), 1);
    708732            Expr _vt_ress = Expr.empty;
    709             _vt_ress = _v_deref__item3.subexpr ((0 + 1 + 1 + 1 + 1), 1);
     733            _vt_ress = _v_deref__item4.subexpr ((0 + 1 + 1 + 1 + 1), 1);
    710734            Expr _ve_body = Expr.empty;
    711             _ve_body = _v_deref__item3.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body);
     735            _ve_body = _v_deref__item4.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body);
    712736            Expr _ve_name = Expr.empty;
    713             _ve_name = _v_deref__deref__item3.subexpr (0, _v_len__name2);
     737            _ve_name = _v_deref__deref__item4.subexpr (0, _v_len__name2);
    714738            _block3: {
    715739              _block3__branch1: {
    716                 if (!_vs_tag.termEquals (_c_25, 0))
     740                if (!_vs_tag.termEquals (_c_26, 0))
    717741                {
    718742                  break _block3__branch1;
     
    720744                break _block3;
    721745              }
    722               if (!_vs_tag.termEquals (_c_26, 0))
     746              if (!_vs_tag.termEquals (_c_27, 0))
    723747              {
    724                 break _block2__branch3;
     748                break _block2__branch4;
    725749              }
    726750            }
     
    729753            if (_v_len21 < _v_len22)
    730754            {
    731               break _block2__branch3;
     755              break _block2__branch4;
    732756            }
    733757            int _v_len__n = (_v_len21 - _v_len22);
    734             if (!_c_27.equals (_ve_name, 0))
    735             {
    736               break _block2__branch3;
     758            if (!_c_28.equals (_ve_name, 0))
     759            {
     760              break _block2__branch4;
    737761            }
    738762            Expr _ve_n = Expr.empty;
    739763            _ve_n = _ve_name.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__n);
    740764            Result _ge_auxcall7 = new Result (Expr.empty);
    741             refal.plus.List.Intersperse (_c_28, _ve_n, _ge_auxcall7);
     765            refal.plus.List.Intersperse (_c_29, _ve_n, _ge_auxcall7);
    742766            Result _gs_auxcall8 = new Result (Expr.empty);
    743767            refal.plus.Convert.ToWord (_ge_auxcall7.getExpr (), _gs_auxcall8);
    744             refal.plus.Table.Bind (Unavailable_Imports, _ve_name, Expr.getConcatenator ().toRight (_vs_tag).toRight (_c_23).toRight ((Comparable<?>) _gs_auxcall8.getExpr ()).toRight (_vt_args).toRight (_vt_ress).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_22).toRight (_ve_n).toRight (_c_21).yield ()).yield ());
     768            refal.plus.Table.Bind (Unavailable_Imports, _ve_name, Expr.getConcatenator ().toRight (_vs_tag).toRight (_c_24).toRight ((Comparable<?>) _gs_auxcall8.getExpr ()).toRight (_vt_args).toRight (_vt_ress).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_23).toRight (_ve_n).toRight (_c_22).yield ()).yield ());
    745769            _ve_cpp__item = Expr.empty;
    746770            break _block2;
    747771          }
    748           _block2__branch4: {
     772          _block2__branch5: {
    749773            if (_vt_item.isSymbolAt (0))
    750774            {
    751               break _block2__branch4;
    752             }
    753             Expr _v_deref__item4 = (Expr) _vt_item.at (0);
    754             int _v_len23 = _v_deref__item4.length ();
     775              break _block2__branch5;
     776            }
     777            Expr _v_deref__item5 = (Expr) _vt_item.at (0);
     778            int _v_len23 = _v_deref__item5.length ();
    755779            int _v_len24 = 5;
    756780            if (_v_len23 < _v_len24)
    757781            {
    758               break _block2__branch4;
     782              break _block2__branch5;
    759783            }
    760784            int _v_len__body2 = (_v_len23 - _v_len24);
    761             if (_v_deref__item4.isSymbolAt ((0 + 1 + 1 + 1)))
    762             {
    763               break _block2__branch4;
    764             }
    765             if (_v_deref__item4.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    766             {
    767               break _block2__branch4;
    768             }
    769             Expr _v_deref__deref__item4 = (Expr) _v_deref__item4.at ((0 + 1 + 1 + 1));
    770             Expr _v_deref__deref__item42 = (Expr) _v_deref__item4.at ((0 + 1 + 1 + 1 + 1));
    771             int _v_len25 = _v_deref__deref__item4.length ();
     785            if (_v_deref__item5.isSymbolAt ((0 + 1 + 1 + 1)))
     786            {
     787              break _block2__branch5;
     788            }
     789            if (_v_deref__item5.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     790            {
     791              break _block2__branch5;
     792            }
     793            Expr _v_deref__deref__item5 = (Expr) _v_deref__item5.at ((0 + 1 + 1 + 1));
     794            Expr _v_deref__deref__item52 = (Expr) _v_deref__item5.at ((0 + 1 + 1 + 1 + 1));
     795            int _v_len25 = _v_deref__deref__item5.length ();
    772796            int _v_len26 = 0;
    773797            if (_v_len25 < _v_len26)
    774798            {
    775               break _block2__branch4;
     799              break _block2__branch5;
    776800            }
    777801            int _v_len__args = (_v_len25 - _v_len26);
    778             int _v_len27 = _v_deref__deref__item42.length ();
     802            int _v_len27 = _v_deref__deref__item52.length ();
    779803            int _v_len28 = 0;
    780804            if (_v_len27 < _v_len28)
    781805            {
    782               break _block2__branch4;
     806              break _block2__branch5;
    783807            }
    784808            int _v_len__ress = (_v_len27 - _v_len28);
    785             if (!_v_deref__item4.isSymbolAt (0))
    786             {
    787               break _block2__branch4;
    788             }
    789             if (!_v_deref__item4.isSymbolAt ((0 + 1)))
    790             {
    791               break _block2__branch4;
     809            if (!_v_deref__item5.isSymbolAt (0))
     810            {
     811              break _block2__branch5;
     812            }
     813            if (!_v_deref__item5.isSymbolAt ((0 + 1)))
     814            {
     815              break _block2__branch5;
    792816            }
    793817            Expr _vs_tag = Expr.empty;
    794             _vs_tag = _v_deref__item4.subexpr (0, 1);
     818            _vs_tag = _v_deref__item5.subexpr (0, 1);
    795819            Expr _vs_linkage = Expr.empty;
    796             _vs_linkage = _v_deref__item4.subexpr ((0 + 1), 1);
     820            _vs_linkage = _v_deref__item5.subexpr ((0 + 1), 1);
    797821            Expr _vt_name = Expr.empty;
    798             _vt_name = _v_deref__item4.subexpr ((0 + 1 + 1), 1);
     822            _vt_name = _v_deref__item5.subexpr ((0 + 1 + 1), 1);
    799823            Expr _ve_body = Expr.empty;
    800             _ve_body = _v_deref__item4.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body2);
     824            _ve_body = _v_deref__item5.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body2);
    801825            Expr _ve_args = Expr.empty;
    802             _ve_args = _v_deref__deref__item4.subexpr (0, _v_len__args);
     826            _ve_args = _v_deref__deref__item5.subexpr (0, _v_len__args);
    803827            Expr _ve_ress = Expr.empty;
    804             _ve_ress = _v_deref__deref__item42.subexpr (0, _v_len__ress);
     828            _ve_ress = _v_deref__deref__item52.subexpr (0, _v_len__ress);
    805829            _block4: {
    806830              _block4__branch1: {
    807                 if (!_vs_tag.termEquals (_c_25, 0))
     831                if (!_vs_tag.termEquals (_c_26, 0))
    808832                {
    809833                  break _block4__branch1;
     
    811835                break _block4;
    812836              }
    813               if (!_vs_tag.termEquals (_c_26, 0))
     837              if (!_vs_tag.termEquals (_c_27, 0))
    814838              {
    815                 break _block2__branch4;
     839                break _block2__branch5;
    816840              }
    817841            }
     
    828852                _exit1: _continue1: for ( ; ; _va_4.next ())
    829853                {
    830                   Expr _ve__dollar_tmp_m_137_m_25 = _va_4.getLeft();
     854                  Expr _ve__dollar_tmp_m_138_m_25 = _va_4.getLeft();
    831855                  Expr _v_lsplit__Get1 = _va_4.getRight();
    832856                  if (!_va_4.isValid ())
     
    840864                    break _block5__branch1;
    841865                  }
    842                   int _v_len___dollar_tmp_m_137_m_34 = (_v_len29 - _v_len30);
     866                  int _v_len___dollar_tmp_m_138_m_34 = (_v_len29 - _v_len30);
    843867                  if (!_vt_name.termEquals (_v_lsplit__Get1, 0))
    844868                  {
    845869                    continue _continue1;
    846870                  }
    847                   Expr _ve__dollar_tmp_m_137_m_34 = Expr.empty;
    848                   _ve__dollar_tmp_m_137_m_34 = _v_lsplit__Get1.subexpr ((0 + 1), _v_len___dollar_tmp_m_137_m_34);
     871                  Expr _ve__dollar_tmp_m_138_m_34 = Expr.empty;
     872                  _ve__dollar_tmp_m_138_m_34 = _v_lsplit__Get1.subexpr ((0 + 1), _v_len___dollar_tmp_m_138_m_34);
    849873                  Result _ge_auxcall9 = new Result (Expr.empty);
    850874                  refal.plus.List.Concat (_vt_name, _ge_auxcall9);
     
    863887                _block7: {
    864888                  _block7__branch1: {
    865                     if (!refal.plus.Table.IsInTable (rfp_helper.RFP_Options, _c_29))
     889                    if (!refal.plus.Table.IsInTable (rfp_helper.RFP_Options, _c_30))
    866890                    {
    867891                      break _block7__branch1;
     
    877901                refal.plus.List.Concat (_vt_name, _ge_auxcall11);
    878902                Result _ge_name__6 = new Result (Expr.empty);
    879                 refal.plus.List.Intersperse (_c_30, _ge_auxcall11.getExpr (), _ge_name__6);
     903                refal.plus.List.Intersperse (_c_31, _ge_auxcall11.getExpr (), _ge_name__6);
    880904                refal.plus.Box.Store (Current_Trace, Expr.concat (_ge_name__6.getExpr (), (Comparable<?>) _ve_ress));
    881905                Result _ge_auxcall12 = new Result (Expr.empty);
     
    892916            }
    893917            Result _ve_qualifiers = new Result (Expr.empty);
    894             Result _ve__dollar_tmp_m_149_m_54 = new Result (Expr.empty);
    895             Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_149_m_54);
     918            Result _ve__dollar_tmp_m_150_m_54 = new Result (Expr.empty);
     919            Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_150_m_54);
    896920            Result _ge_auxcall14 = new Result (Expr.empty);
    897921            Namespace_Control (_ve_qualifiers.getExpr (), _ge_auxcall14);
    898922            Result _ge_auxcall15 = new Result (Expr.empty);
    899             Name_To_CPP (_c_31, _vt_name, _ge_auxcall15);
     923            Name_To_CPP (_c_32, _vt_name, _ge_auxcall15);
    900924            Result _ge_auxcall16 = new Result (Expr.empty);
    901             Args_To_CPP (_c_32, _c_33, _ve_args, _ge_auxcall16);
     925            Args_To_CPP (_c_33, _c_34, _ve_args, _ge_auxcall16);
    902926            Result _ge_auxcall17 = new Result (Expr.empty);
    903             Args_To_CPP (_c_34, _c_33, _ve_ress, _ge_auxcall17);
     927            Args_To_CPP (_c_35, _c_34, _ve_ress, _ge_auxcall17);
    904928            Result _ge_auxcall18 = new Result (Expr.empty);
    905929            ASAIL_To_CPP (_ve_body, _ge_auxcall18);
    906             _ve_cpp__item = Expr.concat (_ge_auxcall14.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_38).toRight (_ge_auxcall15.getExpr ()).toRight (_c_37).toRight (_ge_auxcall16.getExpr ()).toRight (_c_37).toRight (_ge_auxcall17.getExpr ()).toRight (_c_36).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_trace__enter).toRight (_ge_auxcall18.getExpr ()).toRight (_ve_trace__exit).yield ()).toRight (_c_35).yield ());
     930            _ve_cpp__item = Expr.concat (_ge_auxcall14.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_39).toRight (_ge_auxcall15.getExpr ()).toRight (_c_38).toRight (_ge_auxcall16.getExpr ()).toRight (_c_38).toRight (_ge_auxcall17.getExpr ()).toRight (_c_37).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_trace__enter).toRight (_ge_auxcall18.getExpr ()).toRight (_ve_trace__exit).yield ()).toRight (_c_36).yield ());
    907931            break _block2;
    908932          }
    909           _block2__branch5: {
     933          _block2__branch6: {
    910934            if (_vt_item.isSymbolAt (0))
    911935            {
    912               break _block2__branch5;
    913             }
    914             Expr _v_deref__item5 = (Expr) _vt_item.at (0);
    915             if (_v_deref__item5.length () != 2)
    916             {
    917               break _block2__branch5;
    918             }
    919             if (!_c_39.termEquals (_v_deref__item5, 0))
    920             {
    921               break _block2__branch5;
     936              break _block2__branch6;
     937            }
     938            Expr _v_deref__item6 = (Expr) _vt_item.at (0);
     939            if (_v_deref__item6.length () != 2)
     940            {
     941              break _block2__branch6;
     942            }
     943            if (!_c_40.termEquals (_v_deref__item6, 0))
     944            {
     945              break _block2__branch6;
    922946            }
    923947            Expr _vt_name = Expr.empty;
    924             _vt_name = _v_deref__item5.subexpr ((0 + 1), 1);
     948            _vt_name = _v_deref__item6.subexpr ((0 + 1), 1);
    925949            refal.plus.Table.Bind (rfpc.RFP_Trace, _vt_name, Expr.empty);
    926950            _ve_cpp__item = Expr.empty;
    927951            break _block2;
    928952          }
    929           _block2__branch6: {
     953          _block2__branch7: {
    930954            if (_vt_item.isSymbolAt (0))
    931955            {
    932               break _block2__branch6;
    933             }
    934             Expr _v_deref__item6 = (Expr) _vt_item.at (0);
    935             int _v_len31 = _v_deref__item6.length ();
     956              break _block2__branch7;
     957            }
     958            Expr _v_deref__item7 = (Expr) _vt_item.at (0);
     959            int _v_len31 = _v_deref__item7.length ();
    936960            int _v_len32 = 4;
    937961            if (_v_len31 < _v_len32)
    938962            {
    939               break _block2__branch6;
     963              break _block2__branch7;
    940964            }
    941965            int _v_len__body3 = (_v_len31 - _v_len32);
    942             if (_v_deref__item6.isSymbolAt ((0 + 1 + 1)))
    943             {
    944               break _block2__branch6;
    945             }
    946             if (_v_deref__item6.isSymbolAt ((0 + 1 + 1 + 1)))
    947             {
    948               break _block2__branch6;
    949             }
    950             Expr _v_deref__deref__item6 = (Expr) _v_deref__item6.at ((0 + 1 + 1));
    951             Expr _v_deref__deref__item62 = (Expr) _v_deref__item6.at ((0 + 1 + 1 + 1));
    952             int _v_len33 = _v_deref__deref__item6.length ();
     966            if (_v_deref__item7.isSymbolAt ((0 + 1 + 1)))
     967            {
     968              break _block2__branch7;
     969            }
     970            if (_v_deref__item7.isSymbolAt ((0 + 1 + 1 + 1)))
     971            {
     972              break _block2__branch7;
     973            }
     974            Expr _v_deref__deref__item7 = (Expr) _v_deref__item7.at ((0 + 1 + 1));
     975            Expr _v_deref__deref__item72 = (Expr) _v_deref__item7.at ((0 + 1 + 1 + 1));
     976            int _v_len33 = _v_deref__deref__item7.length ();
    953977            int _v_len34 = 0;
    954978            if (_v_len33 < _v_len34)
    955979            {
    956               break _block2__branch6;
     980              break _block2__branch7;
    957981            }
    958982            int _v_len__arg1 = (_v_len33 - _v_len34);
    959             int _v_len35 = _v_deref__deref__item62.length ();
     983            int _v_len35 = _v_deref__deref__item72.length ();
    960984            int _v_len36 = 0;
    961985            if (_v_len35 < _v_len36)
    962986            {
    963               break _block2__branch6;
     987              break _block2__branch7;
    964988            }
    965989            int _v_len__arg2 = (_v_len35 - _v_len36);
    966             if (!_c_40.termEquals (_v_deref__item6, 0))
    967             {
    968               break _block2__branch6;
    969             }
    970             if (!_v_deref__item6.isSymbolAt ((0 + 1)))
    971             {
    972               break _block2__branch6;
     990            if (!_c_41.termEquals (_v_deref__item7, 0))
     991            {
     992              break _block2__branch7;
     993            }
     994            if (!_v_deref__item7.isSymbolAt ((0 + 1)))
     995            {
     996              break _block2__branch7;
    973997            }
    974998            Expr _vs_op = Expr.empty;
    975             _vs_op = _v_deref__item6.subexpr ((0 + 1), 1);
     999            _vs_op = _v_deref__item7.subexpr ((0 + 1), 1);
    9761000            Expr _ve_body = Expr.empty;
    977             _ve_body = _v_deref__item6.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__body3);
     1001            _ve_body = _v_deref__item7.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__body3);
    9781002            Expr _ve_arg1 = Expr.empty;
    979             _ve_arg1 = _v_deref__deref__item6.subexpr (0, _v_len__arg1);
     1003            _ve_arg1 = _v_deref__deref__item7.subexpr (0, _v_len__arg1);
    9801004            Expr _ve_arg2 = Expr.empty;
    981             _ve_arg2 = _v_deref__deref__item62.subexpr (0, _v_len__arg2);
     1005            _ve_arg2 = _v_deref__deref__item72.subexpr (0, _v_len__arg2);
    9821006            Result _ge_auxcall19 = new Result (Expr.empty);
    9831007            Expr_Int_To_CPP (_ve_arg1, _ge_auxcall19);
     
    9861010            Result _ge_auxcall21 = new Result (Expr.empty);
    9871011            ASAIL_To_CPP (_ve_body, _ge_auxcall21);
    988             _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight (_ge_auxcall19.getExpr ()).toRight (_c_41).toRight (_vs_op).toRight (_c_41).toRight (_ge_auxcall20.getExpr ()).toRight (_c_36).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall21.getExpr ()).toRight (_c_8).yield ());
     1012            _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight (_ge_auxcall19.getExpr ()).toRight (_c_42).toRight (_vs_op).toRight (_c_42).toRight (_ge_auxcall20.getExpr ()).toRight (_c_37).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall21.getExpr ()).toRight (_c_8).yield ());
    9891013            break _block2;
    9901014          }
    991           _block2__branch7: {
     1015          _block2__branch8: {
    9921016            if (_vt_item.isSymbolAt (0))
    9931017            {
    994               break _block2__branch7;
    995             }
    996             Expr _v_deref__item7 = (Expr) _vt_item.at (0);
    997             int _v_len37 = _v_deref__item7.length ();
     1018              break _block2__branch8;
     1019            }
     1020            Expr _v_deref__item8 = (Expr) _vt_item.at (0);
     1021            int _v_len37 = _v_deref__item8.length ();
    9981022            int _v_len38 = 2;
    9991023            if (_v_len37 < _v_len38)
    10001024            {
    1001               break _block2__branch7;
     1025              break _block2__branch8;
    10021026            }
    10031027            int _v_len__body4 = (_v_len37 - _v_len38);
    1004             if (!_c_44.termEquals (_v_deref__item7, 0))
    1005             {
    1006               break _block2__branch7;
     1028            if (!_c_45.termEquals (_v_deref__item8, 0))
     1029            {
     1030              break _block2__branch8;
    10071031            }
    10081032            Expr _vt_cond = Expr.empty;
    1009             _vt_cond = _v_deref__item7.subexpr ((0 + 1), 1);
     1033            _vt_cond = _v_deref__item8.subexpr ((0 + 1), 1);
    10101034            Expr _ve_body = Expr.empty;
    1011             _ve_body = _v_deref__item7.subexpr ((0 + 1 + 1), _v_len__body4);
     1035            _ve_body = _v_deref__item8.subexpr ((0 + 1 + 1), _v_len__body4);
    10121036            Result _ge_auxcall22 = new Result (Expr.empty);
    10131037            Cond_To_CPP (_vt_cond, _ge_auxcall22);
    10141038            Result _ge_auxcall23 = new Result (Expr.empty);
    10151039            ASAIL_To_CPP (_ve_body, _ge_auxcall23);
    1016             _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight (_ge_auxcall22.getExpr ()).toRight (_c_36).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall23.getExpr ()).toRight (_c_8).yield ());
     1040            _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight (_ge_auxcall22.getExpr ()).toRight (_c_37).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall23.getExpr ()).toRight (_c_8).yield ());
    10171041            break _block2;
    10181042          }
    1019           _block2__branch8: {
     1043          _block2__branch9: {
    10201044            if (_vt_item.isSymbolAt (0))
    10211045            {
    1022               break _block2__branch8;
    1023             }
    1024             Expr _v_deref__item8 = (Expr) _vt_item.at (0);
    1025             int _v_len39 = _v_deref__item8.length ();
     1046              break _block2__branch9;
     1047            }
     1048            Expr _v_deref__item9 = (Expr) _vt_item.at (0);
     1049            int _v_len39 = _v_deref__item9.length ();
    10261050            int _v_len40 = 5;
    10271051            if (_v_len39 < _v_len40)
    10281052            {
    1029               break _block2__branch8;
     1053              break _block2__branch9;
    10301054            }
    10311055            int _v_len__body5 = (_v_len39 - _v_len40);
    1032             if (_v_deref__item8.isSymbolAt ((0 + 1)))
    1033             {
    1034               break _block2__branch8;
    1035             }
    1036             if (_v_deref__item8.isSymbolAt ((0 + 1 + 1)))
    1037             {
    1038               break _block2__branch8;
    1039             }
    1040             if (_v_deref__item8.isSymbolAt ((0 + 1 + 1 + 1)))
    1041             {
    1042               break _block2__branch8;
    1043             }
    1044             if (_v_deref__item8.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    1045             {
    1046               break _block2__branch8;
    1047             }
    1048             Expr _v_deref__deref__item8 = (Expr) _v_deref__item8.at ((0 + 1));
    1049             Expr _v_deref__deref__item82 = (Expr) _v_deref__item8.at ((0 + 1 + 1));
    1050             Expr _v_deref__deref__item83 = (Expr) _v_deref__item8.at ((0 + 1 + 1 + 1));
    1051             Expr _v_deref__deref__item84 = (Expr) _v_deref__item8.at ((0 + 1 + 1 + 1 + 1));
    1052             int _v_len41 = _v_deref__deref__item8.length ();
     1056            if (_v_deref__item9.isSymbolAt ((0 + 1)))
     1057            {
     1058              break _block2__branch9;
     1059            }
     1060            if (_v_deref__item9.isSymbolAt ((0 + 1 + 1)))
     1061            {
     1062              break _block2__branch9;
     1063            }
     1064            if (_v_deref__item9.isSymbolAt ((0 + 1 + 1 + 1)))
     1065            {
     1066              break _block2__branch9;
     1067            }
     1068            if (_v_deref__item9.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     1069            {
     1070              break _block2__branch9;
     1071            }
     1072            Expr _v_deref__deref__item9 = (Expr) _v_deref__item9.at ((0 + 1));
     1073            Expr _v_deref__deref__item92 = (Expr) _v_deref__item9.at ((0 + 1 + 1));
     1074            Expr _v_deref__deref__item93 = (Expr) _v_deref__item9.at ((0 + 1 + 1 + 1));
     1075            Expr _v_deref__deref__item94 = (Expr) _v_deref__item9.at ((0 + 1 + 1 + 1 + 1));
     1076            int _v_len41 = _v_deref__deref__item9.length ();
    10531077            int _v_len42 = 0;
    10541078            if (_v_len41 < _v_len42)
    10551079            {
    1056               break _block2__branch8;
     1080              break _block2__branch9;
    10571081            }
    10581082            int _v_len__cont__label = (_v_len41 - _v_len42);
    1059             int _v_len43 = _v_deref__deref__item82.length ();
     1083            int _v_len43 = _v_deref__deref__item92.length ();
    10601084            int _v_len44 = 0;
    10611085            if (_v_len43 < _v_len44)
    10621086            {
    1063               break _block2__branch8;
     1087              break _block2__branch9;
    10641088            }
    10651089            int _v_len__break__label = (_v_len43 - _v_len44);
    1066             int _v_len45 = _v_deref__deref__item83.length ();
     1090            int _v_len45 = _v_deref__deref__item93.length ();
    10671091            int _v_len46 = 0;
    10681092            if (_v_len45 < _v_len46)
    10691093            {
    1070               break _block2__branch8;
     1094              break _block2__branch9;
    10711095            }
    10721096            int _v_len__cond = (_v_len45 - _v_len46);
    1073             int _v_len47 = _v_deref__deref__item84.length ();
     1097            int _v_len47 = _v_deref__deref__item94.length ();
    10741098            int _v_len48 = 0;
    10751099            if (_v_len47 < _v_len48)
    10761100            {
    1077               break _block2__branch8;
     1101              break _block2__branch9;
    10781102            }
    10791103            int _v_len__step = (_v_len47 - _v_len48);
    1080             if (!_c_45.termEquals (_v_deref__item8, 0))
    1081             {
    1082               break _block2__branch8;
     1104            if (!_c_46.termEquals (_v_deref__item9, 0))
     1105            {
     1106              break _block2__branch9;
    10831107            }
    10841108            Expr _ve_body = Expr.empty;
    1085             _ve_body = _v_deref__item8.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body5);
     1109            _ve_body = _v_deref__item9.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body5);
    10861110            Expr _ve_cont__label = Expr.empty;
    1087             _ve_cont__label = _v_deref__deref__item8.subexpr (0, _v_len__cont__label);
     1111            _ve_cont__label = _v_deref__deref__item9.subexpr (0, _v_len__cont__label);
    10881112            Expr _ve_break__label = Expr.empty;
    1089             _ve_break__label = _v_deref__deref__item82.subexpr (0, _v_len__break__label);
     1113            _ve_break__label = _v_deref__deref__item92.subexpr (0, _v_len__break__label);
    10901114            Expr _ve_cond = Expr.empty;
    1091             _ve_cond = _v_deref__deref__item83.subexpr (0, _v_len__cond);
     1115            _ve_cond = _v_deref__deref__item93.subexpr (0, _v_len__cond);
    10921116            Expr _ve_step = Expr.empty;
    1093             _ve_step = _v_deref__deref__item84.subexpr (0, _v_len__step);
     1117            _ve_step = _v_deref__deref__item94.subexpr (0, _v_len__step);
    10941118            Expr _ge_body__5 = Expr.empty;
    10951119            _block8: {
     
    10991123                  break _block8__branch1;
    11001124                }
    1101                 Expr _vt__dollar_tmp_m_166_m_25 = Expr.empty;
    1102                 _vt__dollar_tmp_m_166_m_25 = _ve_cont__label.subexpr (0, 1);
     1125                Expr _vt__dollar_tmp_m_167_m_25 = Expr.empty;
     1126                _vt__dollar_tmp_m_167_m_25 = _ve_cont__label.subexpr (0, 1);
    11031127                Result _ge_auxcall24 = new Result (Expr.empty);
    11041128                ASAIL_To_CPP (_ve_body, _ge_auxcall24);
    11051129                Result _ge_auxcall25 = new Result (Expr.empty);
    1106                 refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_46, _ve_cont__label)), _ge_auxcall25);
    1107                 _ge_body__5 = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall24.getExpr ()).toRight (_c_8).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_46).toRight (_ge_auxcall25.getExpr ()).toRight (_c_47).yield ()).toRight (_c_8).yield ());
     1130                refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_47, _ve_cont__label)), _ge_auxcall25);
     1131                _ge_body__5 = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall24.getExpr ()).toRight (_c_8).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_47).toRight (_ge_auxcall25.getExpr ()).toRight (_c_48).yield ()).toRight (_c_8).yield ());
    11081132                break _block8;
    11091133              }
    11101134              Result _ge_auxcall26 = new Result (Expr.empty);
    11111135              ASAIL_To_CPP (_ve_body, _ge_auxcall26);
    1112               _ge_body__5 = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall26.getExpr ()).toRight (_c_8).yield ());
     1136              _ge_body__5 = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall26.getExpr ()).toRight (_c_8).yield ());
    11131137            }
    11141138            Expr _ve_break = Expr.empty;
     
    11191143                  break _block9__branch1;
    11201144                }
    1121                 Expr _vt__dollar_tmp_m_174_m_26 = Expr.empty;
    1122                 _vt__dollar_tmp_m_174_m_26 = _ve_break__label.subexpr (0, 1);
     1145                Expr _vt__dollar_tmp_m_175_m_26 = Expr.empty;
     1146                _vt__dollar_tmp_m_175_m_26 = _ve_break__label.subexpr (0, 1);
    11231147                Result _ge_auxcall27 = new Result (Expr.empty);
    1124                 refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_46, _ve_break__label)), _ge_auxcall27);
    1125                 _ve_break = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_46).toRight (_ge_auxcall27.getExpr ()).toRight (_c_47).yield ());
     1148                refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_47, _ve_break__label)), _ge_auxcall27);
     1149                _ve_break = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_47).toRight (_ge_auxcall27.getExpr ()).toRight (_c_48).yield ());
    11261150                break _block9;
    11271151              }
     
    11301154            Result _ge_auxcall28 = new Result (Expr.empty);
    11311155            Step_To_CPP (_ve_step, _ge_auxcall28);
    1132             _ve_cpp__item = Expr.getConcatenator ().toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_48).toRight (_ge_auxcall28.getExpr ()).toRight (_c_36).yield ()).toRight (_ge_body__5).toRight (_ve_break).yield ();
     1156            _ve_cpp__item = Expr.getConcatenator ().toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_49).toRight (_ge_auxcall28.getExpr ()).toRight (_c_37).yield ()).toRight (_ge_body__5).toRight (_ve_break).yield ();
    11331157            break _block2;
    11341158          }
    1135           _block2__branch9: {
     1159          _block2__branch10: {
    11361160            if (_vt_item.isSymbolAt (0))
    11371161            {
    1138               break _block2__branch9;
    1139             }
    1140             Expr _v_deref__item9 = (Expr) _vt_item.at (0);
    1141             int _v_len49 = _v_deref__item9.length ();
     1162              break _block2__branch10;
     1163            }
     1164            Expr _v_deref__item10 = (Expr) _vt_item.at (0);
     1165            int _v_len49 = _v_deref__item10.length ();
    11421166            int _v_len50 = 2;
    11431167            if (_v_len49 < _v_len50)
    11441168            {
    1145               break _block2__branch9;
     1169              break _block2__branch10;
    11461170            }
    11471171            int _v_len__body6 = (_v_len49 - _v_len50);
    1148             if (_v_deref__item9.isSymbolAt ((0 + 1)))
    1149             {
    1150               break _block2__branch9;
    1151             }
    1152             Expr _v_deref__deref__item9 = (Expr) _v_deref__item9.at ((0 + 1));
    1153             int _v_len51 = _v_deref__deref__item9.length ();
     1172            if (_v_deref__item10.isSymbolAt ((0 + 1)))
     1173            {
     1174              break _block2__branch10;
     1175            }
     1176            Expr _v_deref__deref__item10 = (Expr) _v_deref__item10.at ((0 + 1));
     1177            int _v_len51 = _v_deref__deref__item10.length ();
    11541178            int _v_len52 = 0;
    11551179            if (_v_len51 < _v_len52)
    11561180            {
    1157               break _block2__branch9;
     1181              break _block2__branch10;
    11581182            }
    11591183            int _v_len__label = (_v_len51 - _v_len52);
    1160             if (!_c_46.termEquals (_v_deref__item9, 0))
    1161             {
    1162               break _block2__branch9;
     1184            if (!_c_47.termEquals (_v_deref__item10, 0))
     1185            {
     1186              break _block2__branch10;
    11631187            }
    11641188            Expr _ve_body = Expr.empty;
    1165             _ve_body = _v_deref__item9.subexpr ((0 + 1 + 1), _v_len__body6);
     1189            _ve_body = _v_deref__item10.subexpr ((0 + 1 + 1), _v_len__body6);
    11661190            Expr _ve_label = Expr.empty;
    1167             _ve_label = _v_deref__deref__item9.subexpr (0, _v_len__label);
     1191            _ve_label = _v_deref__deref__item10.subexpr (0, _v_len__label);
    11681192            Result _ge_auxcall29 = new Result (Expr.empty);
    11691193            ASAIL_To_CPP (_ve_body, _ge_auxcall29);
    11701194            Result _ge_auxcall30 = new Result (Expr.empty);
    1171             refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_46, _ve_label)), _ge_auxcall30);
    1172             _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall29.getExpr ()).toRight (_c_8).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_46).toRight (_ge_auxcall30.getExpr ()).toRight (_c_47).yield ());
     1195            refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_47, _ve_label)), _ge_auxcall30);
     1196            _ve_cpp__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall29.getExpr ()).toRight (_c_8).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_47).toRight (_ge_auxcall30.getExpr ()).toRight (_c_48).yield ());
    11731197            break _block2;
    11741198          }
    1175           _block2__branch10: {
     1199          _block2__branch11: {
    11761200            if (_vt_item.isSymbolAt (0))
    11771201            {
    1178               break _block2__branch10;
    1179             }
    1180             Expr _v_deref__item10 = (Expr) _vt_item.at (0);
    1181             int _v_len53 = _v_deref__item10.length ();
     1202              break _block2__branch11;
     1203            }
     1204            Expr _v_deref__item11 = (Expr) _vt_item.at (0);
     1205            int _v_len53 = _v_deref__item11.length ();
    11821206            int _v_len54 = 1;
    11831207            if (_v_len53 < _v_len54)
    11841208            {
    1185               break _block2__branch10;
     1209              break _block2__branch11;
    11861210            }
    11871211            int _v_len__body7 = (_v_len53 - _v_len54);
    1188             if (!_c_49.termEquals (_v_deref__item10, 0))
    1189             {
    1190               break _block2__branch10;
     1212            if (!_c_50.termEquals (_v_deref__item11, 0))
     1213            {
     1214              break _block2__branch11;
    11911215            }
    11921216            Expr _ve_body = Expr.empty;
    1193             _ve_body = _v_deref__item10.subexpr ((0 + 1), _v_len__body7);
     1217            _ve_body = _v_deref__item11.subexpr ((0 + 1), _v_len__body7);
    11941218            Result _ge_auxcall31 = new Result (Expr.empty);
    11951219            ASAIL_To_CPP (_ve_body, _ge_auxcall31);
    1196             _ve_cpp__item = Expr.concat (_c_50, (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall31.getExpr ()).toRight (_c_8).yield ());
     1220            _ve_cpp__item = Expr.concat (_c_51, (Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) _ge_auxcall31.getExpr ()).toRight (_c_8).yield ());
    11971221            break _block2;
    11981222          }
    1199           _block2__branch11: {
     1223          _block2__branch12: {
    12001224            if (_vt_item.isSymbolAt (0))
    12011225            {
    1202               break _block2__branch11;
    1203             }
    1204             Expr _v_deref__item11 = (Expr) _vt_item.at (0);
    1205             int _v_len55 = _v_deref__item11.length ();
     1226              break _block2__branch12;
     1227            }
     1228            Expr _v_deref__item12 = (Expr) _vt_item.at (0);
     1229            int _v_len55 = _v_deref__item12.length ();
    12061230            int _v_len56 = 1;
    12071231            if (_v_len55 < _v_len56)
    12081232            {
    1209               break _block2__branch11;
     1233              break _block2__branch12;
    12101234            }
    12111235            int _v_len__body8 = (_v_len55 - _v_len56);
    1212             if (!_c_51.termEquals (_v_deref__item11, 0))
    1213             {
    1214               break _block2__branch11;
     1236            if (!_c_52.termEquals (_v_deref__item12, 0))
     1237            {
     1238              break _block2__branch12;
    12151239            }
    12161240            Expr _ve_body = Expr.empty;
    1217             _ve_body = _v_deref__item11.subexpr ((0 + 1), _v_len__body8);
     1241            _ve_body = _v_deref__item12.subexpr ((0 + 1), _v_len__body8);
    12181242            Result _ge_auxcall32 = new Result (Expr.empty);
    12191243            ASAIL_To_CPP (_ve_body, _ge_auxcall32);
    1220             _ve_cpp__item = Expr.concat (_c_53, (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.concat (_c_52, _ge_auxcall32.getExpr ())).toRight (_c_8).yield ());
     1244            _ve_cpp__item = Expr.concat (_c_54, (Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) Expr.concat (_c_53, _ge_auxcall32.getExpr ())).toRight (_c_8).yield ());
    12211245            break _block2;
    12221246          }
    1223           _block2__branch12: {
    1224             if (!_vt_item.termEquals (_c_54, 0))
    1225             {
    1226               break _block2__branch12;
     1247          _block2__branch13: {
     1248            if (!_vt_item.termEquals (_c_55, 0))
     1249            {
     1250              break _block2__branch13;
    12271251            }
    12281252            Expr _ve_trace__exit = Expr.empty;
     
    12611285              _ve_trace__exit = Expr.empty;
    12621286            }
    1263             _ve_cpp__item = Expr.concat (_ve_trace__exit, _c_55);
     1287            _ve_cpp__item = Expr.concat (_ve_trace__exit, _c_56);
    12641288            break _block2;
    12651289          }
    1266           _block2__branch13: {
    1267             if (!_vt_item.termEquals (_c_56, 0))
    1268             {
    1269               break _block2__branch13;
    1270             }
    1271             _ve_cpp__item = _c_57;
     1290          _block2__branch14: {
     1291            if (!_vt_item.termEquals (_c_57, 0))
     1292            {
     1293              break _block2__branch14;
     1294            }
     1295            _ve_cpp__item = _c_58;
    12721296            break _block2;
    12731297          }
    1274           _block2__branch14: {
     1298          _block2__branch15: {
    12751299            if (_vt_item.isSymbolAt (0))
    12761300            {
    1277               break _block2__branch14;
    1278             }
    1279             Expr _v_deref__item12 = (Expr) _vt_item.at (0);
    1280             int _v_len61 = _v_deref__item12.length ();
     1301              break _block2__branch15;
     1302            }
     1303            Expr _v_deref__item13 = (Expr) _vt_item.at (0);
     1304            int _v_len61 = _v_deref__item13.length ();
    12811305            int _v_len62 = 4;
    12821306            if (_v_len61 < _v_len62)
    12831307            {
    1284               break _block2__branch14;
     1308              break _block2__branch15;
    12851309            }
    12861310            int _v_len__expr = (_v_len61 - _v_len62);
    1287             if (_v_deref__item12.isSymbolAt ((0 + 1 + _v_len__expr)))
    1288             {
    1289               break _block2__branch14;
    1290             }
    1291             Expr _v_deref__deref__item12 = (Expr) _v_deref__item12.at ((0 + 1 + _v_len__expr));
    1292             int _v_len63 = _v_deref__deref__item12.length ();
     1311            if (_v_deref__item13.isSymbolAt ((0 + 1 + _v_len__expr)))
     1312            {
     1313              break _block2__branch15;
     1314            }
     1315            Expr _v_deref__deref__item13 = (Expr) _v_deref__item13.at ((0 + 1 + _v_len__expr));
     1316            int _v_len63 = _v_deref__deref__item13.length ();
    12931317            int _v_len64 = 0;
    12941318            if (_v_len63 < _v_len64)
    12951319            {
    1296               break _block2__branch14;
     1320              break _block2__branch15;
    12971321            }
    12981322            int _v_len__min = (_v_len63 - _v_len64);
    1299             if (!_c_58.termEquals (_v_deref__item12, 0))
    1300             {
    1301               break _block2__branch14;
     1323            if (!_c_59.termEquals (_v_deref__item13, 0))
     1324            {
     1325              break _block2__branch15;
    13021326            }
    13031327            Expr _ve_expr = Expr.empty;
    1304             _ve_expr = _v_deref__item12.subexpr ((0 + 1), _v_len__expr);
     1328            _ve_expr = _v_deref__item13.subexpr ((0 + 1), _v_len__expr);
    13051329            Expr _vt_var1 = Expr.empty;
    1306             _vt_var1 = _v_deref__item12.subexpr ((0 + 1 + _v_len__expr + 1), 1);
     1330            _vt_var1 = _v_deref__item13.subexpr ((0 + 1 + _v_len__expr + 1), 1);
    13071331            Expr _vt_var2 = Expr.empty;
    1308             _vt_var2 = _v_deref__item12.subexpr ((0 + 1 + _v_len__expr + 1 + 1), 1);
     1332            _vt_var2 = _v_deref__item13.subexpr ((0 + 1 + _v_len__expr + 1 + 1), 1);
    13091333            Expr _ve_min = Expr.empty;
    1310             _ve_min = _v_deref__deref__item12.subexpr (0, _v_len__min);
     1334            _ve_min = _v_deref__deref__item13.subexpr (0, _v_len__min);
    13111335            Result _ge_auxcall33 = new Result (Expr.empty);
    13121336            Expr_Ref_To_CPP (_ve_expr, _ge_auxcall33);
     
    13171341            Result _ge_auxcall36 = new Result (Expr.empty);
    13181342            refal.plus.CppMangle.Rfp2Cpp (_vt_var2, _ge_auxcall36);
    1319             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_59).toRight (_ge_auxcall33.getExpr ()).toRight (_c_37).toRight (_ge_auxcall34.getExpr ()).toRight (_c_37).toRight (_ge_auxcall35.getExpr ()).toRight (_c_37).toRight (_ge_auxcall36.getExpr ()).toRight (_c_6).yield ());
     1343            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_60).toRight (_ge_auxcall33.getExpr ()).toRight (_c_38).toRight (_ge_auxcall34.getExpr ()).toRight (_c_38).toRight (_ge_auxcall35.getExpr ()).toRight (_c_38).toRight (_ge_auxcall36.getExpr ()).toRight (_c_6).yield ());
    13201344            break _block2;
    13211345          }
    1322           _block2__branch15: {
     1346          _block2__branch16: {
    13231347            if (_vt_item.isSymbolAt (0))
    13241348            {
    1325               break _block2__branch15;
    1326             }
    1327             Expr _v_deref__item13 = (Expr) _vt_item.at (0);
    1328             int _v_len65 = _v_deref__item13.length ();
     1349              break _block2__branch16;
     1350            }
     1351            Expr _v_deref__item14 = (Expr) _vt_item.at (0);
     1352            int _v_len65 = _v_deref__item14.length ();
    13291353            int _v_len66 = 4;
    13301354            if (_v_len65 < _v_len66)
    13311355            {
    1332               break _block2__branch15;
     1356              break _block2__branch16;
    13331357            }
    13341358            int _v_len__expr2 = (_v_len65 - _v_len66);
    1335             if (_v_deref__item13.isSymbolAt ((0 + 1 + _v_len__expr2)))
    1336             {
    1337               break _block2__branch15;
    1338             }
    1339             Expr _v_deref__deref__item13 = (Expr) _v_deref__item13.at ((0 + 1 + _v_len__expr2));
    1340             int _v_len67 = _v_deref__deref__item13.length ();
     1359            if (_v_deref__item14.isSymbolAt ((0 + 1 + _v_len__expr2)))
     1360            {
     1361              break _block2__branch16;
     1362            }
     1363            Expr _v_deref__deref__item14 = (Expr) _v_deref__item14.at ((0 + 1 + _v_len__expr2));
     1364            int _v_len67 = _v_deref__deref__item14.length ();
    13411365            int _v_len68 = 0;
    13421366            if (_v_len67 < _v_len68)
    13431367            {
    1344               break _block2__branch15;
     1368              break _block2__branch16;
    13451369            }
    13461370            int _v_len__min2 = (_v_len67 - _v_len68);
    1347             if (!_c_60.termEquals (_v_deref__item13, 0))
    1348             {
    1349               break _block2__branch15;
     1371            if (!_c_61.termEquals (_v_deref__item14, 0))
     1372            {
     1373              break _block2__branch16;
    13501374            }
    13511375            Expr _ve_expr = Expr.empty;
    1352             _ve_expr = _v_deref__item13.subexpr ((0 + 1), _v_len__expr2);
     1376            _ve_expr = _v_deref__item14.subexpr ((0 + 1), _v_len__expr2);
    13531377            Expr _vt_var1 = Expr.empty;
    1354             _vt_var1 = _v_deref__item13.subexpr ((0 + 1 + _v_len__expr2 + 1), 1);
     1378            _vt_var1 = _v_deref__item14.subexpr ((0 + 1 + _v_len__expr2 + 1), 1);
    13551379            Expr _vt_var2 = Expr.empty;
    1356             _vt_var2 = _v_deref__item13.subexpr ((0 + 1 + _v_len__expr2 + 1 + 1), 1);
     1380            _vt_var2 = _v_deref__item14.subexpr ((0 + 1 + _v_len__expr2 + 1 + 1), 1);
    13571381            Expr _ve_min = Expr.empty;
    1358             _ve_min = _v_deref__deref__item13.subexpr (0, _v_len__min2);
     1382            _ve_min = _v_deref__deref__item14.subexpr (0, _v_len__min2);
    13591383            Result _ge_auxcall37 = new Result (Expr.empty);
    13601384            Expr_Ref_To_CPP (_ve_expr, _ge_auxcall37);
     
    13651389            Result _ge_auxcall40 = new Result (Expr.empty);
    13661390            refal.plus.CppMangle.Rfp2Cpp (_vt_var2, _ge_auxcall40);
    1367             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_61).toRight (_ge_auxcall37.getExpr ()).toRight (_c_37).toRight (_ge_auxcall38.getExpr ()).toRight (_c_37).toRight (_ge_auxcall39.getExpr ()).toRight (_c_37).toRight (_ge_auxcall40.getExpr ()).toRight (_c_6).yield ());
     1391            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_62).toRight (_ge_auxcall37.getExpr ()).toRight (_c_38).toRight (_ge_auxcall38.getExpr ()).toRight (_c_38).toRight (_ge_auxcall39.getExpr ()).toRight (_c_38).toRight (_ge_auxcall40.getExpr ()).toRight (_c_6).yield ());
    13681392            break _block2;
    13691393          }
    1370           _block2__branch16: {
     1394          _block2__branch17: {
    13711395            if (_vt_item.isSymbolAt (0))
    13721396            {
    1373               break _block2__branch16;
    1374             }
    1375             Expr _v_deref__item14 = (Expr) _vt_item.at (0);
    1376             int _v_len69 = _v_deref__item14.length ();
     1397              break _block2__branch17;
     1398            }
     1399            Expr _v_deref__item15 = (Expr) _vt_item.at (0);
     1400            int _v_len69 = _v_deref__item15.length ();
    13771401            int _v_len70 = 2;
    13781402            if (_v_len69 < _v_len70)
    13791403            {
    1380               break _block2__branch16;
     1404              break _block2__branch17;
    13811405            }
    13821406            int _v_len__expr3 = (_v_len69 - _v_len70);
    1383             if (!_c_62.termEquals (_v_deref__item14, 0))
    1384             {
    1385               break _block2__branch16;
     1407            if (!_c_63.termEquals (_v_deref__item15, 0))
     1408            {
     1409              break _block2__branch17;
    13861410            }
    13871411            Expr _vt_var = Expr.empty;
    1388             _vt_var = _v_deref__item14.subexpr ((0 + 1), 1);
     1412            _vt_var = _v_deref__item15.subexpr ((0 + 1), 1);
    13891413            Expr _ve_expr = Expr.empty;
    1390             _ve_expr = _v_deref__item14.subexpr ((0 + 1 + 1), _v_len__expr3);
     1414            _ve_expr = _v_deref__item15.subexpr ((0 + 1 + 1), _v_len__expr3);
    13911415            if (_vt_var.isSymbolAt (0))
    13921416            {
    1393               break _block2__branch16;
     1417              break _block2__branch17;
    13941418            }
    13951419            Expr _v_deref__var = (Expr) _vt_var.at (0);
     
    13981422            if (_v_len71 < _v_len72)
    13991423            {
    1400               break _block2__branch16;
    1401             }
    1402             int _v_len___dollar_tmp_m_200_m_42 = (_v_len71 - _v_len72);
     1424              break _block2__branch17;
     1425            }
     1426            int _v_len___dollar_tmp_m_201_m_42 = (_v_len71 - _v_len72);
    14031427            if (!_c_1.termEquals (_v_deref__var, 0))
    14041428            {
    1405               break _block2__branch16;
    1406             }
    1407             Expr _ve__dollar_tmp_m_200_m_42 = Expr.empty;
    1408             _ve__dollar_tmp_m_200_m_42 = _v_deref__var.subexpr ((0 + 1), _v_len___dollar_tmp_m_200_m_42);
     1429              break _block2__branch17;
     1430            }
     1431            Expr _ve__dollar_tmp_m_201_m_42 = Expr.empty;
     1432            _ve__dollar_tmp_m_201_m_42 = _v_deref__var.subexpr ((0 + 1), _v_len___dollar_tmp_m_201_m_42);
    14091433            Result _ge_auxcall41 = new Result (Expr.empty);
    14101434            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall41);
     
    14141438            break _block2;
    14151439          }
    1416           _block2__branch17: {
     1440          _block2__branch18: {
    14171441            if (_vt_item.isSymbolAt (0))
    14181442            {
    1419               break _block2__branch17;
    1420             }
    1421             Expr _v_deref__item15 = (Expr) _vt_item.at (0);
    1422             int _v_len73 = _v_deref__item15.length ();
     1443              break _block2__branch18;
     1444            }
     1445            Expr _v_deref__item16 = (Expr) _vt_item.at (0);
     1446            int _v_len73 = _v_deref__item16.length ();
    14231447            int _v_len74 = 2;
    14241448            if (_v_len73 < _v_len74)
    14251449            {
    1426               break _block2__branch17;
     1450              break _block2__branch18;
    14271451            }
    14281452            int _v_len__expr4 = (_v_len73 - _v_len74);
    1429             if (!_c_62.termEquals (_v_deref__item15, 0))
    1430             {
    1431               break _block2__branch17;
     1453            if (!_c_63.termEquals (_v_deref__item16, 0))
     1454            {
     1455              break _block2__branch18;
    14321456            }
    14331457            Expr _vt_var = Expr.empty;
    1434             _vt_var = _v_deref__item15.subexpr ((0 + 1), 1);
     1458            _vt_var = _v_deref__item16.subexpr ((0 + 1), 1);
    14351459            Expr _ve_expr = Expr.empty;
    1436             _ve_expr = _v_deref__item15.subexpr ((0 + 1 + 1), _v_len__expr4);
     1460            _ve_expr = _v_deref__item16.subexpr ((0 + 1 + 1), _v_len__expr4);
    14371461            Result _ge_auxcall43 = new Result (Expr.empty);
    14381462            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall43);
     
    14421466            break _block2;
    14431467          }
    1444           _block2__branch18: {
     1468          _block2__branch19: {
    14451469            if (_vt_item.isSymbolAt (0))
    14461470            {
    1447               break _block2__branch18;
    1448             }
    1449             Expr _v_deref__item16 = (Expr) _vt_item.at (0);
    1450             int _v_len75 = _v_deref__item16.length ();
     1471              break _block2__branch19;
     1472            }
     1473            Expr _v_deref__item17 = (Expr) _vt_item.at (0);
     1474            int _v_len75 = _v_deref__item17.length ();
    14511475            int _v_len76 = 2;
    14521476            if (_v_len75 < _v_len76)
    14531477            {
    1454               break _block2__branch18;
     1478              break _block2__branch19;
    14551479            }
    14561480            int _v_len__expr5 = (_v_len75 - _v_len76);
    1457             if (!_c_63.termEquals (_v_deref__item16, 0))
    1458             {
    1459               break _block2__branch18;
     1481            if (!_c_64.termEquals (_v_deref__item17, 0))
     1482            {
     1483              break _block2__branch19;
    14601484            }
    14611485            Expr _vt_var = Expr.empty;
    1462             _vt_var = _v_deref__item16.subexpr ((0 + 1), 1);
     1486            _vt_var = _v_deref__item17.subexpr ((0 + 1), 1);
    14631487            Expr _ve_expr = Expr.empty;
    1464             _ve_expr = _v_deref__item16.subexpr ((0 + 1 + 1), _v_len__expr5);
     1488            _ve_expr = _v_deref__item17.subexpr ((0 + 1 + 1), _v_len__expr5);
    14651489            if (_vt_var.isSymbolAt (0))
    14661490            {
    1467               break _block2__branch18;
     1491              break _block2__branch19;
    14681492            }
    14691493            Expr _v_deref__var2 = (Expr) _vt_var.at (0);
     
    14721496            if (_v_len77 < _v_len78)
    14731497            {
    1474               break _block2__branch18;
    1475             }
    1476             int _v_len___dollar_tmp_m_204_m_40 = (_v_len77 - _v_len78);
     1498              break _block2__branch19;
     1499            }
     1500            int _v_len___dollar_tmp_m_205_m_40 = (_v_len77 - _v_len78);
    14771501            if (!_c_1.termEquals (_v_deref__var2, 0))
    14781502            {
    1479               break _block2__branch18;
    1480             }
    1481             Expr _ve__dollar_tmp_m_204_m_40 = Expr.empty;
    1482             _ve__dollar_tmp_m_204_m_40 = _v_deref__var2.subexpr ((0 + 1), _v_len___dollar_tmp_m_204_m_40);
     1503              break _block2__branch19;
     1504            }
     1505            Expr _ve__dollar_tmp_m_205_m_40 = Expr.empty;
     1506            _ve__dollar_tmp_m_205_m_40 = _v_deref__var2.subexpr ((0 + 1), _v_len___dollar_tmp_m_205_m_40);
    14831507            Result _ge_auxcall45 = new Result (Expr.empty);
    14841508            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall45);
    14851509            Result _ge_auxcall46 = new Result (Expr.empty);
    14861510            Expr_Int_To_CPP (_ve_expr, _ge_auxcall46);
    1487             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_64).toRight (_ge_auxcall45.getExpr ()).toRight (_c_14).toRight (_ge_auxcall46.getExpr ()).toRight (_c_13).yield ());
    1488             break _block2;
    1489           }
    1490           _block2__branch19: {
    1491             if (_vt_item.isSymbolAt (0))
    1492             {
    1493               break _block2__branch19;
    1494             }
    1495             Expr _v_deref__item17 = (Expr) _vt_item.at (0);
    1496             if (_v_deref__item17.length () != 3)
    1497             {
    1498               break _block2__branch19;
    1499             }
    1500             if (!_c_63.termEquals (_v_deref__item17, 0))
    1501             {
    1502               break _block2__branch19;
    1503             }
    1504             if (!_v_deref__item17.isSymbolAt ((0 + 1)))
    1505             {
    1506               break _block2__branch19;
    1507             }
    1508             Expr _vs_type = Expr.empty;
    1509             _vs_type = _v_deref__item17.subexpr ((0 + 1), 1);
    1510             Expr _vt_var = Expr.empty;
    1511             _vt_var = _v_deref__item17.subexpr ((0 + 1 + 1), 1);
    1512             Result _ge_auxcall47 = new Result (Expr.empty);
    1513             refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall47);
    1514             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_65).toRight (_ge_auxcall47.getExpr ()).toRight (_c_13).yield ());
     1511            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_65).toRight (_ge_auxcall45.getExpr ()).toRight (_c_14).toRight (_ge_auxcall46.getExpr ()).toRight (_c_13).yield ());
    15151512            break _block2;
    15161513          }
     
    15211518            }
    15221519            Expr _v_deref__item18 = (Expr) _vt_item.at (0);
    1523             int _v_len79 = _v_deref__item18.length ();
    1524             int _v_len80 = 3;
    1525             if (_v_len79 < _v_len80)
     1520            if (_v_deref__item18.length () != 3)
    15261521            {
    15271522              break _block2__branch20;
    15281523            }
    1529             int _v_len__expr6 = (_v_len79 - _v_len80);
    1530             if (!_c_63.termEquals (_v_deref__item18, 0))
     1524            if (!_c_64.termEquals (_v_deref__item18, 0))
    15311525            {
    15321526              break _block2__branch20;
     
    15401534            Expr _vt_var = Expr.empty;
    15411535            _vt_var = _v_deref__item18.subexpr ((0 + 1 + 1), 1);
     1536            Result _ge_auxcall47 = new Result (Expr.empty);
     1537            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall47);
     1538            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_66).toRight (_ge_auxcall47.getExpr ()).toRight (_c_13).yield ());
     1539            break _block2;
     1540          }
     1541          _block2__branch21: {
     1542            if (_vt_item.isSymbolAt (0))
     1543            {
     1544              break _block2__branch21;
     1545            }
     1546            Expr _v_deref__item19 = (Expr) _vt_item.at (0);
     1547            int _v_len79 = _v_deref__item19.length ();
     1548            int _v_len80 = 3;
     1549            if (_v_len79 < _v_len80)
     1550            {
     1551              break _block2__branch21;
     1552            }
     1553            int _v_len__expr6 = (_v_len79 - _v_len80);
     1554            if (!_c_64.termEquals (_v_deref__item19, 0))
     1555            {
     1556              break _block2__branch21;
     1557            }
     1558            if (!_v_deref__item19.isSymbolAt ((0 + 1)))
     1559            {
     1560              break _block2__branch21;
     1561            }
     1562            Expr _vs_type = Expr.empty;
     1563            _vs_type = _v_deref__item19.subexpr ((0 + 1), 1);
     1564            Expr _vt_var = Expr.empty;
     1565            _vt_var = _v_deref__item19.subexpr ((0 + 1 + 1), 1);
    15421566            Expr _ve_expr = Expr.empty;
    1543             _ve_expr = _v_deref__item18.subexpr ((0 + 1 + 1 + 1), _v_len__expr6);
     1567            _ve_expr = _v_deref__item19.subexpr ((0 + 1 + 1 + 1), _v_len__expr6);
    15441568            Result _ge_auxcall48 = new Result (Expr.empty);
    15451569            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall48);
    15461570            Result _ge_auxcall49 = new Result (Expr.empty);
    15471571            Expr_Ref_To_CPP (_ve_expr, _ge_auxcall49);
    1548             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_65).toRight (_ge_auxcall48.getExpr ()).toRight (_c_66).toRight (_ge_auxcall49.getExpr ()).toRight (_c_6).yield ());
     1572            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_66).toRight (_ge_auxcall48.getExpr ()).toRight (_c_67).toRight (_ge_auxcall49.getExpr ()).toRight (_c_6).yield ());
    15491573            break _block2;
    15501574          }
    1551           _block2__branch21: {
     1575          _block2__branch22: {
    15521576            if (_vt_item.isSymbolAt (0))
    15531577            {
    1554               break _block2__branch21;
    1555             }
    1556             Expr _v_deref__item19 = (Expr) _vt_item.at (0);
    1557             if (_v_deref__item19.length () != 2)
    1558             {
    1559               break _block2__branch21;
    1560             }
    1561             if (!_c_67.termEquals (_v_deref__item19, 0))
    1562             {
    1563               break _block2__branch21;
     1578              break _block2__branch22;
     1579            }
     1580            Expr _v_deref__item20 = (Expr) _vt_item.at (0);
     1581            if (_v_deref__item20.length () != 2)
     1582            {
     1583              break _block2__branch22;
     1584            }
     1585            if (!_c_68.termEquals (_v_deref__item20, 0))
     1586            {
     1587              break _block2__branch22;
    15641588            }
    15651589            Expr _vt_var = Expr.empty;
    1566             _vt_var = _v_deref__item19.subexpr ((0 + 1), 1);
     1590            _vt_var = _v_deref__item20.subexpr ((0 + 1), 1);
    15671591            Result _ge_auxcall50 = new Result (Expr.empty);
    15681592            refal.plus.CppMangle.Rfp2Cpp (_vt_var, _ge_auxcall50);
    1569             _ve_cpp__item = new Expr ((Comparable<?>) Expr.concat (_ge_auxcall50.getExpr (), _c_68));
    1570             break _block2;
    1571           }
    1572           _block2__branch22: {
    1573             if (_vt_item.isSymbolAt (0))
    1574             {
    1575               break _block2__branch22;
    1576             }
    1577             Expr _v_deref__item20 = (Expr) _vt_item.at (0);
    1578             if (_v_deref__item20.length () != 2)
    1579             {
    1580               break _block2__branch22;
    1581             }
    1582             if (!_c_69.termEquals (_v_deref__item20, 0))
    1583             {
    1584               break _block2__branch22;
    1585             }
    1586             Expr _vt_label = Expr.empty;
    1587             _vt_label = _v_deref__item20.subexpr ((0 + 1), 1);
    1588             Result _ge_auxcall51 = new Result (Expr.empty);
    1589             refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_46, _vt_label)), _ge_auxcall51);
    1590             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_70).toRight (_ge_auxcall51.getExpr ()).toRight (_c_13).yield ());
     1593            _ve_cpp__item = new Expr ((Comparable<?>) Expr.concat (_ge_auxcall50.getExpr (), _c_69));
    15911594            break _block2;
    15921595          }
     
    16011604              break _block2__branch23;
    16021605            }
    1603             if (!_c_71.termEquals (_v_deref__item21, 0))
     1606            if (!_c_70.termEquals (_v_deref__item21, 0))
    16041607            {
    16051608              break _block2__branch23;
     
    16071610            Expr _vt_label = Expr.empty;
    16081611            _vt_label = _v_deref__item21.subexpr ((0 + 1), 1);
    1609             Result _ge_auxcall52 = new Result (Expr.empty);
    1610             refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_46, _vt_label)), _ge_auxcall52);
    1611             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_70).toRight (_ge_auxcall52.getExpr ()).toRight (_c_13).yield ());
     1612            Result _ge_auxcall51 = new Result (Expr.empty);
     1613            refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_47, _vt_label)), _ge_auxcall51);
     1614            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_71).toRight (_ge_auxcall51.getExpr ()).toRight (_c_13).yield ());
    16121615            break _block2;
    16131616          }
     
    16181621            }
    16191622            Expr _v_deref__item22 = (Expr) _vt_item.at (0);
    1620             int _v_len81 = _v_deref__item22.length ();
     1623            if (_v_deref__item22.length () != 2)
     1624            {
     1625              break _block2__branch24;
     1626            }
     1627            if (!_c_72.termEquals (_v_deref__item22, 0))
     1628            {
     1629              break _block2__branch24;
     1630            }
     1631            Expr _vt_label = Expr.empty;
     1632            _vt_label = _v_deref__item22.subexpr ((0 + 1), 1);
     1633            Result _ge_auxcall52 = new Result (Expr.empty);
     1634            refal.plus.CppMangle.Rfp2Cpp (new Expr ((Comparable<?>) Expr.concat (_c_47, _vt_label)), _ge_auxcall52);
     1635            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_71).toRight (_ge_auxcall52.getExpr ()).toRight (_c_13).yield ());
     1636            break _block2;
     1637          }
     1638          _block2__branch25: {
     1639            if (_vt_item.isSymbolAt (0))
     1640            {
     1641              break _block2__branch25;
     1642            }
     1643            Expr _v_deref__item23 = (Expr) _vt_item.at (0);
     1644            int _v_len81 = _v_deref__item23.length ();
    16211645            int _v_len82 = 1;
    16221646            if (_v_len81 < _v_len82)
    16231647            {
    1624               break _block2__branch24;
     1648              break _block2__branch25;
    16251649            }
    16261650            int _v_len__expr7 = (_v_len81 - _v_len82);
    1627             if (!_c_22.termEquals (_v_deref__item22, 0))
    1628             {
    1629               break _block2__branch24;
     1651            if (!_c_23.termEquals (_v_deref__item23, 0))
     1652            {
     1653              break _block2__branch25;
    16301654            }
    16311655            Expr _ve_expr = Expr.empty;
    1632             _ve_expr = _v_deref__item22.subexpr ((0 + 1), _v_len__expr7);
     1656            _ve_expr = _v_deref__item23.subexpr ((0 + 1), _v_len__expr7);
    16331657            Result _ge_auxcall53 = new Result (Expr.empty);
    16341658            Expr_Ref_To_CPP (_ve_expr, _ge_auxcall53);
    1635             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_72).toRight (_ge_auxcall53.getExpr ()).toRight (_c_6).yield ());
     1659            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_73).toRight (_ge_auxcall53.getExpr ()).toRight (_c_6).yield ());
    16361660            break _block2;
    16371661          }
    1638           _block2__branch25: {
     1662          _block2__branch26: {
    16391663            if (_vt_item.isSymbolAt (0))
    16401664            {
    1641               break _block2__branch25;
    1642             }
    1643             Expr _v_deref__item23 = (Expr) _vt_item.at (0);
    1644             int _v_len83 = _v_deref__item23.length ();
     1665              break _block2__branch26;
     1666            }
     1667            Expr _v_deref__item24 = (Expr) _vt_item.at (0);
     1668            int _v_len83 = _v_deref__item24.length ();
    16451669            int _v_len84 = 4;
    16461670            if (_v_len83 < _v_len84)
    16471671            {
    1648               break _block2__branch25;
     1672              break _block2__branch26;
    16491673            }
    16501674            int _v_len__expr8 = (_v_len83 - _v_len84);
    1651             if (_v_deref__item23.isSymbolAt ((0 + 1 + 1)))
    1652             {
    1653               break _block2__branch25;
    1654             }
    1655             if (_v_deref__item23.isSymbolAt ((0 + 1 + 1 + 1)))
    1656             {
    1657               break _block2__branch25;
    1658             }
    1659             Expr _v_deref__deref__item232 = (Expr) _v_deref__item23.at ((0 + 1 + 1));
    1660             Expr _v_deref__deref__item233 = (Expr) _v_deref__item23.at ((0 + 1 + 1 + 1));
    1661             int _v_len85 = _v_deref__deref__item232.length ();
     1675            if (_v_deref__item24.isSymbolAt ((0 + 1 + 1)))
     1676            {
     1677              break _block2__branch26;
     1678            }
     1679            if (_v_deref__item24.isSymbolAt ((0 + 1 + 1 + 1)))
     1680            {
     1681              break _block2__branch26;
     1682            }
     1683            Expr _v_deref__deref__item24 = (Expr) _v_deref__item24.at ((0 + 1 + 1));
     1684            Expr _v_deref__deref__item242 = (Expr) _v_deref__item24.at ((0 + 1 + 1 + 1));
     1685            int _v_len85 = _v_deref__deref__item24.length ();
    16621686            int _v_len86 = 0;
    16631687            if (_v_len85 < _v_len86)
    16641688            {
    1665               break _block2__branch25;
     1689              break _block2__branch26;
    16661690            }
    16671691            int _v_len__name4 = (_v_len85 - _v_len86);
    1668             int _v_len87 = _v_deref__deref__item233.length ();
     1692            int _v_len87 = _v_deref__deref__item242.length ();
    16691693            int _v_len88 = 0;
    16701694            if (_v_len87 < _v_len88)
    16711695            {
    1672               break _block2__branch25;
     1696              break _block2__branch26;
    16731697            }
    16741698            int _v_len__comment = (_v_len87 - _v_len88);
    1675             if (!_c_73.equals (_v_deref__item23, 0))
    1676             {
    1677               break _block2__branch25;
     1699            if (!_c_74.equals (_v_deref__item24, 0))
     1700            {
     1701              break _block2__branch26;
    16781702            }
    16791703            Expr _ve_expr = Expr.empty;
    1680             _ve_expr = _v_deref__item23.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__expr8);
     1704            _ve_expr = _v_deref__item24.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__expr8);
    16811705            Expr _ve_name = Expr.empty;
    1682             _ve_name = _v_deref__deref__item232.subexpr (0, _v_len__name4);
     1706            _ve_name = _v_deref__deref__item24.subexpr (0, _v_len__name4);
    16831707            Expr _ve_comment = Expr.empty;
    1684             _ve_comment = _v_deref__deref__item233.subexpr (0, _v_len__comment);
     1708            _ve_comment = _v_deref__deref__item242.subexpr (0, _v_len__comment);
    16851709            int _v_len89 = _v_len__name4;
    16861710            int _v_len90 = 4;
     
    16901714            }
    16911715            int _v_len__n2 = (_v_len89 - _v_len90);
    1692             if (!_c_27.equals (_ve_name, 0))
     1716            if (!_c_28.equals (_ve_name, 0))
    16931717            {
    16941718              break _block1__branch1;
     
    16971721            _ve_n = _ve_name.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__n2);
    16981722            Result _ge_auxcall54 = new Result (Expr.empty);
    1699             refal.plus.List.Intersperse (_c_28, _ve_n, _ge_auxcall54);
     1723            refal.plus.List.Intersperse (_c_29, _ve_n, _ge_auxcall54);
    17001724            Result _gs_auxcall55 = new Result (Expr.empty);
    17011725            refal.plus.Convert.ToWord (_ge_auxcall54.getExpr (), _gs_auxcall55);
    1702             refal.plus.Table.Bind (Unavailable_Imports, _ve_name, Expr.getConcatenator ().toRight (_c_75).toRight ((Comparable<?>) _gs_auxcall55.getExpr ()).toRight (_c_74).toRight (_ve_expr).yield ());
     1726            refal.plus.Table.Bind (Unavailable_Imports, _ve_name, Expr.getConcatenator ().toRight (_c_76).toRight ((Comparable<?>) _gs_auxcall55.getExpr ()).toRight (_c_75).toRight (_ve_expr).yield ());
    17031727            _ve_cpp__item = Expr.empty;
    17041728            break _block2;
    17051729          }
    1706           _block2__branch26: {
     1730          _block2__branch27: {
    17071731            if (_vt_item.isSymbolAt (0))
    17081732            {
    1709               break _block2__branch26;
    1710             }
    1711             Expr _v_deref__item24 = (Expr) _vt_item.at (0);
    1712             int _v_len91 = _v_deref__item24.length ();
     1733              break _block2__branch27;
     1734            }
     1735            Expr _v_deref__item25 = (Expr) _vt_item.at (0);
     1736            int _v_len91 = _v_deref__item25.length ();
    17131737            int _v_len92 = 4;
    17141738            if (_v_len91 < _v_len92)
    17151739            {
    1716               break _block2__branch26;
     1740              break _block2__branch27;
    17171741            }
    17181742            int _v_len__expr9 = (_v_len91 - _v_len92);
    1719             if (_v_deref__item24.isSymbolAt ((0 + 1 + 1 + 1)))
    1720             {
    1721               break _block2__branch26;
    1722             }
    1723             Expr _v_deref__deref__item24 = (Expr) _v_deref__item24.at ((0 + 1 + 1 + 1));
    1724             int _v_len93 = _v_deref__deref__item24.length ();
     1743            if (_v_deref__item25.isSymbolAt ((0 + 1 + 1 + 1)))
     1744            {
     1745              break _block2__branch27;
     1746            }
     1747            Expr _v_deref__deref__item25 = (Expr) _v_deref__item25.at ((0 + 1 + 1 + 1));
     1748            int _v_len93 = _v_deref__deref__item25.length ();
    17251749            int _v_len94 = 0;
    17261750            if (_v_len93 < _v_len94)
    17271751            {
    1728               break _block2__branch26;
     1752              break _block2__branch27;
    17291753            }
    17301754            int _v_len__comment2 = (_v_len93 - _v_len94);
    1731             if (!_c_76.termEquals (_v_deref__item24, 0))
    1732             {
    1733               break _block2__branch26;
    1734             }
    1735             if (!_v_deref__item24.isSymbolAt ((0 + 1)))
    1736             {
    1737               break _block2__branch26;
     1755            if (!_c_77.termEquals (_v_deref__item25, 0))
     1756            {
     1757              break _block2__branch27;
     1758            }
     1759            if (!_v_deref__item25.isSymbolAt ((0 + 1)))
     1760            {
     1761              break _block2__branch27;
    17381762            }
    17391763            Expr _vs_linkage = Expr.empty;
    1740             _vs_linkage = _v_deref__item24.subexpr ((0 + 1), 1);
     1764            _vs_linkage = _v_deref__item25.subexpr ((0 + 1), 1);
    17411765            Expr _vt_name = Expr.empty;
    1742             _vt_name = _v_deref__item24.subexpr ((0 + 1 + 1), 1);
     1766            _vt_name = _v_deref__item25.subexpr ((0 + 1 + 1), 1);
    17431767            Expr _ve_expr = Expr.empty;
    1744             _ve_expr = _v_deref__item24.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__expr9);
     1768            _ve_expr = _v_deref__item25.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__expr9);
    17451769            Expr _ve_comment = Expr.empty;
    1746             _ve_comment = _v_deref__deref__item24.subexpr (0, _v_len__comment2);
     1770            _ve_comment = _v_deref__deref__item25.subexpr (0, _v_len__comment2);
    17471771            Expr _ge_linkage__5 = Expr.empty;
    17481772            _block11: {
    17491773              _block11__branch1: {
    1750                 if (!_vs_linkage.termEquals (_c_23, 0))
     1774                if (!_vs_linkage.termEquals (_c_24, 0))
    17511775                {
    17521776                  break _block11__branch1;
    17531777                }
    1754                 _ge_linkage__5 = _c_77;
     1778                _ge_linkage__5 = _c_78;
    17551779                break _block11;
    17561780              }
     
    17581782            }
    17591783            Expr _ve_qualifiers = Expr.empty;
    1760             Expr _ve__dollar_tmp_m_227_m_28 = Expr.empty;
     1784            Expr _ve__dollar_tmp_m_228_m_28 = Expr.empty;
    17611785            Expr _vs_name__producer = Expr.empty;
    17621786            Expr _ve_name__arg = Expr.empty;
     
    17741798                  break _block12__branch1;
    17751799                }
    1776                 int _v_len___dollar_tmp_m_225_m_27 = (_v_len95 - _v_len96);
     1800                int _v_len___dollar_tmp_m_226_m_27 = (_v_len95 - _v_len96);
    17771801                if (!_c_11.termEquals (_v_deref__name, 0))
    17781802                {
    17791803                  break _block12__branch1;
    17801804                }
    1781                 Expr _ve__dollar_tmp_m_225_m_27 = Expr.empty;
    1782                 _ve__dollar_tmp_m_225_m_27 = _v_deref__name.subexpr ((0 + 1), _v_len___dollar_tmp_m_225_m_27);
     1805                Expr _ve__dollar_tmp_m_226_m_27 = Expr.empty;
     1806                _ve__dollar_tmp_m_226_m_27 = _v_deref__name.subexpr ((0 + 1), _v_len___dollar_tmp_m_226_m_27);
    17831807                Result _ge_auxcall56 = new Result (Expr.empty);
    17841808                refal.plus.Box.Get (Module_Name, _ge_auxcall56);
    17851809                _ve_qualifiers = _ge_auxcall56.getExpr ();
    1786                 _ve__dollar_tmp_m_227_m_28 = Expr.empty;
    1787                 _vs_name__producer = _c_78;
     1810                _ve__dollar_tmp_m_228_m_28 = Expr.empty;
     1811                _vs_name__producer = _c_79;
    17881812                _ve_name__arg = _vt_name;
    17891813                break _block12;
     
    17931817              Extract_Qualifiers (_vt_name, _ge_auxcall57, _ge_auxcall58);
    17941818              _ve_qualifiers = _ge_auxcall57.getExpr ();
    1795               _ve__dollar_tmp_m_227_m_28 = _ge_auxcall58.getExpr ();
    1796               _vs_name__producer = _c_79;
     1819              _ve__dollar_tmp_m_228_m_28 = _ge_auxcall58.getExpr ();
     1820              _vs_name__producer = _c_80;
    17971821              _ve_name__arg = Expr.concat (_c_12, _vt_name);
    17981822            }
     
    18081832              break _block1__branch1;
    18091833            }
    1810             _ve_cpp__item = Expr.concat (_ge_auxcall60.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_ge_linkage__5).toRight (_c_65).toRight (_ge_auxcall61.getExpr ()).toRight (_c_13).yield ());
     1834            _ve_cpp__item = Expr.concat (_ge_auxcall60.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_ge_linkage__5).toRight (_c_66).toRight (_ge_auxcall61.getExpr ()).toRight (_c_13).yield ());
    18111835            break _block2;
    18121836          }
    1813           _block2__branch27: {
     1837          _block2__branch28: {
    18141838            if (_vt_item.isSymbolAt (0))
    18151839            {
    1816               break _block2__branch27;
    1817             }
    1818             Expr _v_deref__item25 = (Expr) _vt_item.at (0);
    1819             if (_v_deref__item25.length () != 4)
    1820             {
    1821               break _block2__branch27;
    1822             }
    1823             if (!_c_80.termEquals (_v_deref__item25, 0))
    1824             {
    1825               break _block2__branch27;
    1826             }
    1827             if (!_v_deref__item25.isSymbolAt ((0 + 1)))
    1828             {
    1829               break _block2__branch27;
    1830             }
    1831             if (!_v_deref__item25.isSymbolAt ((0 + 1 + 1)))
    1832             {
    1833               break _block2__branch27;
     1840              break _block2__branch28;
     1841            }
     1842            Expr _v_deref__item26 = (Expr) _vt_item.at (0);
     1843            if (_v_deref__item26.length () != 4)
     1844            {
     1845              break _block2__branch28;
     1846            }
     1847            if (!_c_81.termEquals (_v_deref__item26, 0))
     1848            {
     1849              break _block2__branch28;
     1850            }
     1851            if (!_v_deref__item26.isSymbolAt ((0 + 1)))
     1852            {
     1853              break _block2__branch28;
     1854            }
     1855            if (!_v_deref__item26.isSymbolAt ((0 + 1 + 1)))
     1856            {
     1857              break _block2__branch28;
    18341858            }
    18351859            Expr _vs_linkage = Expr.empty;
    1836             _vs_linkage = _v_deref__item25.subexpr ((0 + 1), 1);
     1860            _vs_linkage = _v_deref__item26.subexpr ((0 + 1), 1);
    18371861            Expr _vs_tag = Expr.empty;
    1838             _vs_tag = _v_deref__item25.subexpr ((0 + 1 + 1), 1);
     1862            _vs_tag = _v_deref__item26.subexpr ((0 + 1 + 1), 1);
    18391863            Expr _vt_name = Expr.empty;
    1840             _vt_name = _v_deref__item25.subexpr ((0 + 1 + 1 + 1), 1);
     1864            _vt_name = _v_deref__item26.subexpr ((0 + 1 + 1 + 1), 1);
    18411865            refal.plus.Table.Bind (Locals, Expr.concat (_c_12, _vt_name), Expr.empty);
    18421866            Expr _ge_linkage__5 = Expr.empty;
    18431867            _block13: {
    18441868              _block13__branch1: {
    1845                 if (!_vs_linkage.termEquals (_c_23, 0))
     1869                if (!_vs_linkage.termEquals (_c_24, 0))
    18461870                {
    18471871                  break _block13__branch1;
    18481872                }
    1849                 _ge_linkage__5 = _c_77;
     1873                _ge_linkage__5 = _c_78;
    18501874                break _block13;
    18511875              }
     
    18741898            _block14: {
    18751899              _block14__branch1: {
    1876                 if (!_vs_tag.termEquals (_c_81, 0))
     1900                if (!_vs_tag.termEquals (_c_82, 0))
    18771901                {
    18781902                  break _block14__branch1;
    18791903                }
    1880                 refal.plus.Box.Put (Const_Exprs, new Expr ((Comparable<?>) Expr.concat (_vt_name, (Comparable<?>) Expr.getConcatenator ().toRight (_c_83).toRight (_ve_n.getExpr ()).toRight (_c_82).yield ())));
     1904                refal.plus.Box.Put (Const_Exprs, new Expr ((Comparable<?>) Expr.concat (_vt_name, (Comparable<?>) Expr.getConcatenator ().toRight (_c_84).toRight (_ve_n.getExpr ()).toRight (_c_83).yield ())));
    18811905                break _block14;
    18821906              }
    18831907              Result _ge_auxcall62 = new Result (Expr.empty);
    18841908              refal.plus.Convert.ToLower (_ve_2, _ge_auxcall62);
    1885               refal.plus.Box.Put (Const_Exprs, new Expr ((Comparable<?>) Expr.concat (_vt_name, (Comparable<?>) Expr.getConcatenator ().toRight (_c_85).toRight (_vs_1).toRight (_ge_auxcall62.getExpr ()).toRight (_c_84).toRight (_ve_n.getExpr ()).toRight (_c_82).yield ())));
     1909              refal.plus.Box.Put (Const_Exprs, new Expr ((Comparable<?>) Expr.concat (_vt_name, (Comparable<?>) Expr.getConcatenator ().toRight (_c_86).toRight (_vs_1).toRight (_ge_auxcall62.getExpr ()).toRight (_c_85).toRight (_ve_n.getExpr ()).toRight (_c_83).yield ())));
    18861910            }
    18871911            Result _ge_auxcall63 = new Result (Expr.empty);
     
    18891913            Result _ge_auxcall64 = new Result (Expr.empty);
    18901914            Name_To_CPP (_c_12, _vt_name, _ge_auxcall64);
    1891             _ve_cpp__item = Expr.concat (_ge_auxcall63.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_ge_linkage__5).toRight (_c_65).toRight (_ge_auxcall64.getExpr ()).toRight (_c_13).yield ());
     1915            _ve_cpp__item = Expr.concat (_ge_auxcall63.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_ge_linkage__5).toRight (_c_66).toRight (_ge_auxcall64.getExpr ()).toRight (_c_13).yield ());
    18921916            break _block2;
    18931917          }
    1894           _block2__branch28: {
     1918          _block2__branch29: {
    18951919            if (_vt_item.isSymbolAt (0))
    18961920            {
    1897               break _block2__branch28;
    1898             }
    1899             Expr _v_deref__item26 = (Expr) _vt_item.at (0);
    1900             if (_v_deref__item26.length () != 2)
    1901             {
    1902               break _block2__branch28;
    1903             }
    1904             if (!_c_12.termEquals (_v_deref__item26, 0))
    1905             {
    1906               break _block2__branch28;
     1921              break _block2__branch29;
     1922            }
     1923            Expr _v_deref__item27 = (Expr) _vt_item.at (0);
     1924            if (_v_deref__item27.length () != 2)
     1925            {
     1926              break _block2__branch29;
     1927            }
     1928            if (!_c_12.termEquals (_v_deref__item27, 0))
     1929            {
     1930              break _block2__branch29;
    19071931            }
    19081932            Expr _vt_name = Expr.empty;
    1909             _vt_name = _v_deref__item26.subexpr ((0 + 1), 1);
     1933            _vt_name = _v_deref__item27.subexpr ((0 + 1), 1);
    19101934            Result _ve_qualifiers = new Result (Expr.empty);
    1911             Result _ve__dollar_tmp_m_252_m_54 = new Result (Expr.empty);
    1912             Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_252_m_54);
     1935            Result _ve__dollar_tmp_m_253_m_54 = new Result (Expr.empty);
     1936            Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_253_m_54);
    19131937            Result _ge_auxcall65 = new Result (Expr.empty);
    19141938            Namespace_Control (_ve_qualifiers.getExpr (), _ge_auxcall65);
    19151939            Result _ge_auxcall66 = new Result (Expr.empty);
    19161940            Name_To_CPP (_c_12, _vt_name, _ge_auxcall66);
    1917             _ve_cpp__item = Expr.concat (_ge_auxcall65.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_86).toRight (_ge_auxcall66.getExpr ()).toRight (_c_13).yield ());
     1941            _ve_cpp__item = Expr.concat (_ge_auxcall65.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_87).toRight (_ge_auxcall66.getExpr ()).toRight (_c_13).yield ());
    19181942            break _block2;
    19191943          }
    1920           _block2__branch29: {
     1944          _block2__branch30: {
    19211945            if (_vt_item.isSymbolAt (0))
    19221946            {
    1923               break _block2__branch29;
    1924             }
    1925             Expr _v_deref__item27 = (Expr) _vt_item.at (0);
    1926             if (_v_deref__item27.length () != 2)
    1927             {
    1928               break _block2__branch29;
    1929             }
    1930             if (!_c_31.termEquals (_v_deref__item27, 0))
    1931             {
    1932               break _block2__branch29;
     1947              break _block2__branch30;
     1948            }
     1949            Expr _v_deref__item28 = (Expr) _vt_item.at (0);
     1950            if (_v_deref__item28.length () != 2)
     1951            {
     1952              break _block2__branch30;
     1953            }
     1954            if (!_c_32.termEquals (_v_deref__item28, 0))
     1955            {
     1956              break _block2__branch30;
    19331957            }
    19341958            Expr _vt_name = Expr.empty;
    1935             _vt_name = _v_deref__item27.subexpr ((0 + 1), 1);
     1959            _vt_name = _v_deref__item28.subexpr ((0 + 1), 1);
    19361960            Result _ve_qualifiers = new Result (Expr.empty);
    1937             Result _ve__dollar_tmp_m_256_m_54 = new Result (Expr.empty);
    1938             Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_256_m_54);
     1961            Result _ve__dollar_tmp_m_257_m_54 = new Result (Expr.empty);
     1962            Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_257_m_54);
    19391963            Result _ge_auxcall67 = new Result (Expr.empty);
    19401964            Namespace_Control (_ve_qualifiers.getExpr (), _ge_auxcall67);
    19411965            Result _ge_auxcall68 = new Result (Expr.empty);
    1942             Name_To_CPP (_c_31, _vt_name, _ge_auxcall68);
    1943             _ve_cpp__item = Expr.concat (_ge_auxcall67.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_87).toRight (_ge_auxcall68.getExpr ()).toRight (_c_6).yield ());
     1966            Name_To_CPP (_c_32, _vt_name, _ge_auxcall68);
     1967            _ve_cpp__item = Expr.concat (_ge_auxcall67.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_88).toRight (_ge_auxcall68.getExpr ()).toRight (_c_6).yield ());
    19441968            break _block2;
    19451969          }
    1946           _block2__branch30: {
     1970          _block2__branch31: {
    19471971            if (_vt_item.isSymbolAt (0))
    19481972            {
    1949               break _block2__branch30;
    1950             }
    1951             Expr _v_deref__item28 = (Expr) _vt_item.at (0);
    1952             if (_v_deref__item28.length () != 2)
    1953             {
    1954               break _block2__branch30;
    1955             }
    1956             if (!_c_88.termEquals (_v_deref__item28, 0))
    1957             {
    1958               break _block2__branch30;
     1973              break _block2__branch31;
     1974            }
     1975            Expr _v_deref__item29 = (Expr) _vt_item.at (0);
     1976            if (_v_deref__item29.length () != 2)
     1977            {
     1978              break _block2__branch31;
     1979            }
     1980            if (!_c_89.termEquals (_v_deref__item29, 0))
     1981            {
     1982              break _block2__branch31;
    19591983            }
    19601984            Expr _vt_name = Expr.empty;
    1961             _vt_name = _v_deref__item28.subexpr ((0 + 1), 1);
     1985            _vt_name = _v_deref__item29.subexpr ((0 + 1), 1);
    19621986            refal.plus.Table.Bind (Externs, _vt_name, Expr.empty);
    19631987            Result _ve_qualifiers = new Result (Expr.empty);
    1964             Result _ve__dollar_tmp_m_261_m_54 = new Result (Expr.empty);
    1965             Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_261_m_54);
     1988            Result _ve__dollar_tmp_m_262_m_54 = new Result (Expr.empty);
     1989            Extract_Qualifiers (_vt_name, _ve_qualifiers, _ve__dollar_tmp_m_262_m_54);
    19661990            Result _ge_auxcall69 = new Result (Expr.empty);
    19671991            Namespace_Control (_ve_qualifiers.getExpr (), _ge_auxcall69);
    19681992            Result _ge_auxcall70 = new Result (Expr.empty);
    1969             Name_To_CPP (_c_31, _vt_name, _ge_auxcall70);
    1970             _ve_cpp__item = Expr.concat (_ge_auxcall69.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_87).toRight (_ge_auxcall70.getExpr ()).toRight (_c_6).yield ());
     1993            Name_To_CPP (_c_32, _vt_name, _ge_auxcall70);
     1994            _ve_cpp__item = Expr.concat (_ge_auxcall69.getExpr (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_88).toRight (_ge_auxcall70.getExpr ()).toRight (_c_6).yield ());
    19711995            break _block2;
    19721996          }
     
    19751999            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "ASAIL_To_CPP", "Unexpected fail");
    19762000          }
    1977           Expr _v_deref__item29 = (Expr) _vt_item.at (0);
    1978           if (_v_deref__item29.length () != 4)
     2001          Expr _v_deref__item30 = (Expr) _vt_item.at (0);
     2002          if (_v_deref__item30.length () != 4)
    19792003          {
    19802004            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "ASAIL_To_CPP", "Unexpected fail");
    19812005          }
    1982           if (_v_deref__item29.isSymbolAt ((0 + 1 + 1)))
     2006          if (_v_deref__item30.isSymbolAt ((0 + 1 + 1)))
    19832007          {
    19842008            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "ASAIL_To_CPP", "Unexpected fail");
    19852009          }
    1986           if (_v_deref__item29.isSymbolAt ((0 + 1 + 1 + 1)))
     2010          if (_v_deref__item30.isSymbolAt ((0 + 1 + 1 + 1)))
    19872011          {
    19882012            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "ASAIL_To_CPP", "Unexpected fail");
    19892013          }
    1990           Expr _v_deref__deref__item29 = (Expr) _v_deref__item29.at ((0 + 1 + 1));
    1991           Expr _v_deref__deref__item292 = (Expr) _v_deref__item29.at ((0 + 1 + 1 + 1));
    1992           int _v_len99 = _v_deref__deref__item29.length ();
     2014          Expr _v_deref__deref__item30 = (Expr) _v_deref__item30.at ((0 + 1 + 1));
     2015          Expr _v_deref__deref__item302 = (Expr) _v_deref__item30.at ((0 + 1 + 1 + 1));
     2016          int _v_len99 = _v_deref__deref__item30.length ();
    19932017          int _v_len100 = 0;
    19942018          if (_v_len99 < _v_len100)
     
    19972021          }
    19982022          int _v_len__exprs = (_v_len99 - _v_len100);
    1999           int _v_len101 = _v_deref__deref__item292.length ();
     2023          int _v_len101 = _v_deref__deref__item302.length ();
    20002024          int _v_len102 = 0;
    20012025          if (_v_len101 < _v_len102)
     
    20042028          }
    20052029          int _v_len__ress3 = (_v_len101 - _v_len102);
    2006           if (!_v_deref__item29.isSymbolAt (0))
     2030          if (!_v_deref__item30.isSymbolAt (0))
    20072031          {
    20082032            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "ASAIL_To_CPP", "Unexpected fail");
    20092033          }
    20102034          Expr _vs_call = Expr.empty;
    2011           _vs_call = _v_deref__item29.subexpr (0, 1);
     2035          _vs_call = _v_deref__item30.subexpr (0, 1);
    20122036          Expr _vt_name = Expr.empty;
    2013           _vt_name = _v_deref__item29.subexpr ((0 + 1), 1);
     2037          _vt_name = _v_deref__item30.subexpr ((0 + 1), 1);
    20142038          Expr _ve_exprs = Expr.empty;
    2015           _ve_exprs = _v_deref__deref__item29.subexpr (0, _v_len__exprs);
     2039          _ve_exprs = _v_deref__deref__item30.subexpr (0, _v_len__exprs);
    20162040          Expr _ve_ress = Expr.empty;
    2017           _ve_ress = _v_deref__deref__item292.subexpr (0, _v_len__ress3);
     2041          _ve_ress = _v_deref__deref__item302.subexpr (0, _v_len__ress3);
    20182042          _block15: {
    20192043            _block15__branch1: {
    20202044              _negation1: {
    2021                 if (!_vs_call.termEquals (_c_89, 0))
     2045                if (!_vs_call.termEquals (_c_90, 0))
    20222046                {
    20232047                  break _negation1;
     
    20502074              _ve_full__name = _v_Get3.getExpr ().subexpr (0, _v_len__full__name);
    20512075              Result _ge_auxcall71 = new Result (Expr.empty);
    2052               Name_To_CPP (_c_31, _vt_name, _ge_auxcall71);
     2076              Name_To_CPP (_c_32, _vt_name, _ge_auxcall71);
    20532077              Result _ge_auxcall72 = new Result (Expr.empty);
    2054               Args_To_CPP (Expr.empty, _c_90, _ve_exprs, _ge_auxcall72);
     2078              Args_To_CPP (Expr.empty, _c_91, _ve_exprs, _ge_auxcall72);
    20552079              Result _ge_auxcall73 = new Result (Expr.empty);
    2056               Args_To_CPP (Expr.empty, _c_33, _ve_ress, _ge_auxcall73);
     2080              Args_To_CPP (Expr.empty, _c_34, _ve_ress, _ge_auxcall73);
    20572081              Result _ge_auxcall74 = new Result (Expr.empty);
    20582082              Trace_Exit (_ve_full__name, _ve_ress, _ge_auxcall74);
    2059               _ve_cpp__item = Expr.getConcatenator ().toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_92).toRight (_ge_auxcall71.getExpr ()).toRight (_c_37).toRight (_ge_auxcall72.getExpr ()).toRight (_c_37).toRight (_ge_auxcall73.getExpr ()).toRight (_c_91).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.concat (_ge_auxcall74.getExpr (), _c_93)).toRight (_c_8).yield ()).toRight (_c_94).yield ();
     2083              _ve_cpp__item = Expr.getConcatenator ().toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_93).toRight (_ge_auxcall71.getExpr ()).toRight (_c_38).toRight (_ge_auxcall72.getExpr ()).toRight (_c_38).toRight (_ge_auxcall73.getExpr ()).toRight (_c_92).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_44).toRight ((Comparable<?>) Expr.concat (_ge_auxcall74.getExpr (), _c_94)).toRight (_c_8).yield ()).toRight (_c_95).yield ();
    20602084              break _block15;
    20612085            }
     
    20632087            _block17: {
    20642088              _block17__branch1: {
    2065                 if (!_vs_call.termEquals (_c_95, 0))
     2089                if (!_vs_call.termEquals (_c_96, 0))
    20662090                {
    20672091                  break _block17__branch1;
    20682092                }
    2069                 _gs_call__7 = _c_96;
     2093                _gs_call__7 = _c_97;
    20702094                break _block17;
    20712095              }
     
    20732097            }
    20742098            Result _ge_auxcall75 = new Result (Expr.empty);
    2075             Name_To_CPP (_c_31, _vt_name, _ge_auxcall75);
     2099            Name_To_CPP (_c_32, _vt_name, _ge_auxcall75);
    20762100            Result _ge_auxcall76 = new Result (Expr.empty);
    2077             Args_To_CPP (Expr.empty, _c_90, _ve_exprs, _ge_auxcall76);
     2101            Args_To_CPP (Expr.empty, _c_91, _ve_exprs, _ge_auxcall76);
    20782102            Result _ge_auxcall77 = new Result (Expr.empty);
    2079             Args_To_CPP (Expr.empty, _c_33, _ve_ress, _ge_auxcall77);
    2080             _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_97).toRight (_gs_call__7).toRight (_c_66).toRight (_ge_auxcall75.getExpr ()).toRight (_c_37).toRight (_ge_auxcall76.getExpr ()).toRight (_c_37).toRight (_ge_auxcall77.getExpr ()).toRight (_c_6).yield ());
     2103            Args_To_CPP (Expr.empty, _c_34, _ve_ress, _ge_auxcall77);
     2104            _ve_cpp__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_98).toRight (_gs_call__7).toRight (_c_67).toRight (_ge_auxcall75.getExpr ()).toRight (_c_38).toRight (_ge_auxcall76.getExpr ()).toRight (_c_38).toRight (_ge_auxcall77.getExpr ()).toRight (_c_6).yield ());
    20812105          }
    20822106        }
     
    20992123          break _block1__branch1;
    21002124        }
    2101         _v_res1.assign (_c_98);
     2125        _v_res1.assign (_c_99);
    21022126        break _block1;
    21032127      }
     
    21152139      refal.plus.List.Paren (_ge_arg1, _ge_auxcall1);
    21162140      Result _ge_auxcall2 = new Result (Expr.empty);
    2117       Infix_To_CPP (_c_99, _c_100, _ge_auxcall1.getExpr (), _ge_auxcall2);
    2118       _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ge_auxcall2.getExpr ()).toRight (_c_36).yield ());
     2141      Infix_To_CPP (_c_100, _c_101, _ge_auxcall1.getExpr (), _ge_auxcall2);
     2142      _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ge_auxcall2.getExpr ()).toRight (_c_37).yield ());
    21192143    }
    21202144  }
     
    21412165        }
    21422166        int _v_len__expr = (_v_len1 - _v_len2);
    2143         if (!_c_102.termEquals (_v_deref__arg1, 0))
     2167        if (!_c_103.termEquals (_v_deref__arg1, 0))
    21442168        {
    21452169          break _block1__branch1;
     
    21492173        Result _ge_auxcall1 = new Result (Expr.empty);
    21502174        Expr_Ref_To_CPP (_ve_expr, _ge_auxcall1);
    2151         _v_res1.assign (Expr.concat (_ge_auxcall1.getExpr (), _c_103));
     2175        _v_res1.assign (Expr.concat (_ge_auxcall1.getExpr (), _c_104));
    21522176        break _block1;
    21532177      }
     
    21812205        }
    21822206        int _v_len__pos = (_v_len5 - _v_len6);
    2183         if (!_c_104.termEquals (_v_deref__arg12, 0))
     2207        if (!_c_105.termEquals (_v_deref__arg12, 0))
    21842208        {
    21852209          break _block1__branch2;
     
    21932217        Result _ge_auxcall3 = new Result (Expr.empty);
    21942218        Expr_Int_To_CPP (_ve_pos, _ge_auxcall3);
    2195         _v_res1.assign (Expr.getConcatenator ().toRight (_c_105).toRight (_ge_auxcall2.getExpr ()).toRight (_c_37).toRight (_ge_auxcall3.getExpr ()).toRight (_c_36).yield ());
     2219        _v_res1.assign (Expr.getConcatenator ().toRight (_c_106).toRight (_ge_auxcall2.getExpr ()).toRight (_c_38).toRight (_ge_auxcall3.getExpr ()).toRight (_c_37).yield ());
    21962220        break _block1;
    21972221      }
     
    22372261        }
    22382262        int _v_len__len = (_v_len11 - _v_len12);
    2239         if (!_c_106.termEquals (_v_deref__arg13, 0))
     2263        if (!_c_107.termEquals (_v_deref__arg13, 0))
    22402264        {
    22412265          break _block1__branch3;
     
    22532277        Result _ge_auxcall6 = new Result (Expr.empty);
    22542278        Expr_Int_To_CPP (_ve_len, _ge_auxcall6);
    2255         _v_res1.assign (Expr.getConcatenator ().toRight (_c_105).toRight (_ge_auxcall4.getExpr ()).toRight (_c_37).toRight (_ge_auxcall5.getExpr ()).toRight (_c_37).toRight (_ge_auxcall6.getExpr ()).toRight (_c_36).yield ());
     2279        _v_res1.assign (Expr.getConcatenator ().toRight (_c_106).toRight (_ge_auxcall4.getExpr ()).toRight (_c_38).toRight (_ge_auxcall5.getExpr ()).toRight (_c_38).toRight (_ge_auxcall6.getExpr ()).toRight (_c_37).yield ());
    22562280        break _block1;
    22572281      }
     
    22702294          break _block1__branch4;
    22712295        }
    2272         if (!_c_107.termEquals (_v_deref__arg14, 0))
     2296        if (!_c_108.termEquals (_v_deref__arg14, 0))
    22732297        {
    22742298          break _block1__branch4;
     
    22842308          break _block1__branch5;
    22852309        }
    2286         if (!_c_108.termEquals (_ge_arg1, 0))
     2310        if (!_c_109.termEquals (_ge_arg1, 0))
    22872311        {
    22882312          break _block1__branch5;
    22892313        }
    2290         _v_res1.assign (_c_109);
     2314        _v_res1.assign (_c_110);
    22912315        break _block1;
    22922316      }
     
    23312355          Result _ge_auxcall7 = new Result (Expr.empty);
    23322356          refal.plus.Box.Get (Module_Name, _ge_auxcall7);
    2333           _ve_prefix = Expr.concat (_ge_auxcall7.getExpr (), _c_110);
     2357          _ve_prefix = Expr.concat (_ge_auxcall7.getExpr (), _c_111);
    23342358        }
    23352359        Result _v_Rfp2Cpp1 = new Result (Expr.empty);
     
    23862410          Result _ge_auxcall8 = new Result (Expr.empty);
    23872411          refal.plus.Box.Get (Int, _ge_auxcall8);
    2388           _v_res1.assign (Expr.getConcatenator ().toRight (_c_112).toRight (_ge_auxcall8.getExpr ()).toRight (_c_111).toRight (_vs_sym).toRight (_c_82).yield ());
     2412          _v_res1.assign (Expr.getConcatenator ().toRight (_c_113).toRight (_ge_auxcall8.getExpr ()).toRight (_c_112).toRight (_vs_sym).toRight (_c_83).yield ());
    23892413          break _block3;
    23902414        }
     
    23952419        Result _ge_auxcall9 = new Result (Expr.empty);
    23962420        Symbol_To_CPP (_vs_sym, _ge_auxcall9);
    2397         _v_res1.assign (Expr.getConcatenator ().toRight (_c_113).toRight (_ge_auxcall9.getExpr ()).toRight (_c_82).yield ());
     2421        _v_res1.assign (Expr.getConcatenator ().toRight (_c_114).toRight (_ge_auxcall9.getExpr ()).toRight (_c_83).yield ());
    23982422      }
    23992423    }
     
    24322456            break _block2;
    24332457          }
    2434           throw new RefalException (new Expr ((Comparable<?>) Expr.concat (_c_114, _vs_ObjectSymbol)));
     2458          throw new RefalException (new Expr ((Comparable<?>) Expr.concat (_c_115, _vs_ObjectSymbol)));
    24352459        }
    24362460        break _block1;
     
    24532477        }
    24542478        int _v_len__expr = (_v_len1 - _v_len2);
    2455         if (!_c_115.termEquals (_v_deref__arg1, 0))
     2479        if (!_c_116.termEquals (_v_deref__arg1, 0))
    24562480        {
    24572481          break _block1__branch3;
     
    24612485        Result _ge_auxcall1 = new Result (Expr.empty);
    24622486        Expr_Ref_To_CPP (_ve_expr, _ge_auxcall1);
    2463         _v_res1.assign (Expr.concat (_ge_auxcall1.getExpr (), _c_116));
     2487        _v_res1.assign (Expr.concat (_ge_auxcall1.getExpr (), _c_117));
    24642488        break _block1;
    24652489      }
     
    24812505        }
    24822506        int _v_len__args = (_v_len3 - _v_len4);
    2483         if (!_c_117.termEquals (_v_deref__arg12, 0))
     2507        if (!_c_118.termEquals (_v_deref__arg12, 0))
    24842508        {
    24852509          break _block1__branch4;
     
    24882512        _ve_args = _v_deref__arg12.subexpr ((0 + 1), _v_len__args);
    24892513        Result _ge_auxcall2 = new Result (Expr.empty);
    2490         Args_To_CPP (Expr.empty, _c_118, _ve_args, _ge_auxcall2);
    2491         _v_res1.assign (Expr.getConcatenator ().toRight (_c_119).toRight (_ge_auxcall2.getExpr ()).toRight (_c_36).yield ());
     2514        Args_To_CPP (Expr.empty, _c_119, _ve_args, _ge_auxcall2);
     2515        _v_res1.assign (Expr.getConcatenator ().toRight (_c_120).toRight (_ge_auxcall2.getExpr ()).toRight (_c_37).yield ());
    24922516        break _block1;
    24932517      }
     
    25092533        }
    25102534        int _v_len__args2 = (_v_len5 - _v_len6);
    2511         if (!_c_120.termEquals (_v_deref__arg13, 0))
     2535        if (!_c_121.termEquals (_v_deref__arg13, 0))
    25122536        {
    25132537          break _block1__branch5;
     
    25162540        _ve_args = _v_deref__arg13.subexpr ((0 + 1), _v_len__args2);
    25172541        Result _ge_auxcall3 = new Result (Expr.empty);
    2518         Args_To_CPP (Expr.empty, _c_118, _ve_args, _ge_auxcall3);
    2519         _v_res1.assign (Expr.getConcatenator ().toRight (_c_121).toRight (_ge_auxcall3.getExpr ()).toRight (_c_36).yield ());
     2542        Args_To_CPP (Expr.empty, _c_119, _ve_args, _ge_auxcall3);
     2543        _v_res1.assign (Expr.getConcatenator ().toRight (_c_122).toRight (_ge_auxcall3.getExpr ()).toRight (_c_37).yield ());
    25202544        break _block1;
    25212545      }
     
    25372561        }
    25382562        int _v_len__args3 = (_v_len7 - _v_len8);
    2539         if (!_c_122.termEquals (_v_deref__arg14, 0))
     2563        if (!_c_123.termEquals (_v_deref__arg14, 0))
    25402564        {
    25412565          break _block1__branch6;
     
    25502574        _ve_args = _v_deref__arg14.subexpr ((0 + 1 + 1), _v_len__args3);
    25512575        Result _ge_auxcall4 = new Result (Expr.empty);
    2552         Infix_To_CPP (_c_123, _vs_op, _ve_args, _ge_auxcall4);
    2553         _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ge_auxcall4.getExpr ()).toRight (_c_36).yield ());
     2576        Infix_To_CPP (_c_124, _vs_op, _ve_args, _ge_auxcall4);
     2577        _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ge_auxcall4.getExpr ()).toRight (_c_37).yield ());
    25542578        break _block1;
    25552579      }
     
    25682592          break _block1__branch7;
    25692593        }
    2570         if (!_c_107.termEquals (_v_deref__arg15, 0))
     2594        if (!_c_108.termEquals (_v_deref__arg15, 0))
    25712595        {
    25722596          break _block1__branch7;
     
    26052629      refal.plus.List.Paren (_ge_arg1, _ge_auxcall5);
    26062630      Result _ge_auxcall6 = new Result (Expr.empty);
    2607       Infix_To_CPP (_c_123, _c_100, _ge_auxcall5.getExpr (), _ge_auxcall6);
    2608       _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ge_auxcall6.getExpr ()).toRight (_c_36).yield ());
     2631      Infix_To_CPP (_c_124, _c_101, _ge_auxcall5.getExpr (), _ge_auxcall6);
     2632      _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ge_auxcall6.getExpr ()).toRight (_c_37).yield ());
    26092633    }
    26102634  }
     
    26572681        }
    26582682        int _v_len__ress = (_v_len3 - _v_len4);
    2659         if (!_c_124.termEquals (_v_deref__arg1, 0))
     2683        if (!_c_125.termEquals (_v_deref__arg1, 0))
    26602684        {
    26612685          break _block1__branch1;
    26622686        }
    2663         if (!_c_89.termEquals (_v_deref__deref__arg1, 0))
     2687        if (!_c_90.termEquals (_v_deref__deref__arg1, 0))
    26642688        {
    26652689          break _block1__branch1;
     
    26722696        _ve_ress = _v_deref__deref__deref__arg12.subexpr (0, _v_len__ress);
    26732697        Result _ge_auxcall1 = new Result (Expr.empty);
    2674         Name_To_CPP (_c_31, _vt_name, _ge_auxcall1);
     2698        Name_To_CPP (_c_32, _vt_name, _ge_auxcall1);
    26752699        Result _ge_auxcall2 = new Result (Expr.empty);
    2676         Args_To_CPP (Expr.empty, _c_90, _ve_exprs, _ge_auxcall2);
     2700        Args_To_CPP (Expr.empty, _c_91, _ve_exprs, _ge_auxcall2);
    26772701        Result _ge_auxcall3 = new Result (Expr.empty);
    2678         Args_To_CPP (Expr.empty, _c_33, _ve_ress, _ge_auxcall3);
    2679         _v_res1.assign (Expr.getConcatenator ().toRight (_c_125).toRight (_ge_auxcall1.getExpr ()).toRight (_c_37).toRight (_ge_auxcall2.getExpr ()).toRight (_c_37).toRight (_ge_auxcall3.getExpr ()).toRight (_c_36).yield ());
     2702        Args_To_CPP (Expr.empty, _c_34, _ve_ress, _ge_auxcall3);
     2703        _v_res1.assign (Expr.getConcatenator ().toRight (_c_126).toRight (_ge_auxcall1.getExpr ()).toRight (_c_38).toRight (_ge_auxcall2.getExpr ()).toRight (_c_38).toRight (_ge_auxcall3.getExpr ()).toRight (_c_37).yield ());
    26802704        break _block1;
    26812705      }
     
    27052729        }
    27062730        int _v_len__pos = (_v_len7 - _v_len8);
    2707         if (!_c_126.termEquals (_v_deref__arg12, 0))
     2731        if (!_c_127.termEquals (_v_deref__arg12, 0))
    27082732        {
    27092733          break _block1__branch2;
     
    27172741        Result _ge_auxcall5 = new Result (Expr.empty);
    27182742        Expr_Int_To_CPP (_ve_pos, _ge_auxcall5);
    2719         _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall4.getExpr ()).toRight (_c_127).toRight (_ge_auxcall5.getExpr ()).toRight (_c_36).yield ());
     2743        _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall4.getExpr ()).toRight (_c_128).toRight (_ge_auxcall5.getExpr ()).toRight (_c_37).yield ());
    27202744        break _block1;
    27212745      }
     
    27572781        }
    27582782        int _v_len__len = (_v_len13 - _v_len14);
    2759         if (!_c_128.termEquals (_v_deref__arg13, 0))
     2783        if (!_c_129.termEquals (_v_deref__arg13, 0))
    27602784        {
    27612785          break _block1__branch3;
     
    27732797        Result _ge_auxcall8 = new Result (Expr.empty);
    27742798        Expr_Int_To_CPP (_ve_len, _ge_auxcall8);
    2775         _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall6.getExpr ()).toRight (_c_129).toRight (_ge_auxcall7.getExpr ()).toRight (_c_37).toRight (_ge_auxcall8.getExpr ()).toRight (_c_36).yield ());
     2799        _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall6.getExpr ()).toRight (_c_130).toRight (_ge_auxcall7.getExpr ()).toRight (_c_38).toRight (_ge_auxcall8.getExpr ()).toRight (_c_37).yield ());
    27762800        break _block1;
    27772801      }
     
    27892813        }
    27902814        int _v_len__expr3 = (_v_len15 - _v_len16);
    2791         if (!_c_130.termEquals (_v_deref__arg14, 0))
     2815        if (!_c_131.termEquals (_v_deref__arg14, 0))
    27922816        {
    27932817          break _block1__branch4;
     
    27972821        Result _ge_auxcall9 = new Result (Expr.empty);
    27982822        Expr_Ref_To_CPP (_ve_expr, _ge_auxcall9);
    2799         _v_res1.assign (Expr.getConcatenator ().toRight (_c_131).toRight (_ge_auxcall9.getExpr ()).toRight (_c_36).yield ());
     2823        _v_res1.assign (Expr.getConcatenator ().toRight (_c_132).toRight (_ge_auxcall9.getExpr ()).toRight (_c_37).yield ());
    28002824        break _block1;
    28012825      }
     
    28372861        }
    28382862        int _v_len__pos3 = (_v_len21 - _v_len22);
    2839         if (!_c_132.termEquals (_v_deref__arg15, 0))
     2863        if (!_c_133.termEquals (_v_deref__arg15, 0))
    28402864        {
    28412865          break _block1__branch5;
     
    28532877        Result _ge_auxcall12 = new Result (Expr.empty);
    28542878        Expr_Int_To_CPP (_ve_pos, _ge_auxcall12);
    2855         _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall10.getExpr ()).toRight (_c_133).toRight (_ge_auxcall11.getExpr ()).toRight (_c_37).toRight (_ge_auxcall12.getExpr ()).toRight (_c_36).yield ());
     2879        _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall10.getExpr ()).toRight (_c_134).toRight (_ge_auxcall11.getExpr ()).toRight (_c_38).toRight (_ge_auxcall12.getExpr ()).toRight (_c_37).yield ());
    28562880        break _block1;
    28572881      }
     
    28932917        }
    28942918        int _v_len__pos4 = (_v_len27 - _v_len28);
    2895         if (!_c_134.termEquals (_v_deref__arg16, 0))
     2919        if (!_c_135.termEquals (_v_deref__arg16, 0))
    28962920        {
    28972921          break _block1__branch6;
     
    29092933        Result _ge_auxcall15 = new Result (Expr.empty);
    29102934        Expr_Int_To_CPP (_ve_pos, _ge_auxcall15);
    2911         _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall13.getExpr ()).toRight (_c_135).toRight (_ge_auxcall14.getExpr ()).toRight (_c_37).toRight (_ge_auxcall15.getExpr ()).toRight (_c_36).yield ());
     2935        _v_res1.assign (Expr.getConcatenator ().toRight (_ge_auxcall13.getExpr ()).toRight (_c_136).toRight (_ge_auxcall14.getExpr ()).toRight (_c_38).toRight (_ge_auxcall15.getExpr ()).toRight (_c_37).yield ());
    29122936        break _block1;
    29132937      }
     
    29212945        throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Cond_To_CPP", "Unexpected fail");
    29222946      }
    2923       if (!_c_136.termEquals (_v_deref__arg17, 0))
     2947      if (!_c_137.termEquals (_v_deref__arg17, 0))
    29242948      {
    29252949        throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Cond_To_CPP", "Unexpected fail");
     
    29292953      Result _v_Cond__To__CPP1 = new Result (Expr.empty);
    29302954      Cond_To_CPP (_vt_cond, _v_Cond__To__CPP1);
    2931       _v_res1.assign (Expr.concat (_c_137, _v_Cond__To__CPP1.getExpr ()));
     2955      _v_res1.assign (Expr.concat (_c_138, _v_Cond__To__CPP1.getExpr ()));
    29322956    }
    29332957  }
     
    29783002              break _block2__branch1;
    29793003            }
    2980             int _v_len___dollar_tmp_m_368_m_16 = (_v_len5 - _v_len6);
     3004            int _v_len___dollar_tmp_m_369_m_16 = (_v_len5 - _v_len6);
    29813005            int _v_len7 = _ve_rest.length ();
    29823006            int _v_len8 = 0;
     
    29853009              break _block2__branch1;
    29863010            }
    2987             int _v_len___dollar_tmp_m_368_m_28 = (_v_len7 - _v_len8);
    2988             Expr _vv__dollar_tmp_m_368_m_16 = Expr.empty;
    2989             _vv__dollar_tmp_m_368_m_16 = _ve_arg.subexpr (0, _v_len___dollar_tmp_m_368_m_16);
    2990             Expr _vv__dollar_tmp_m_368_m_28 = Expr.empty;
    2991             _vv__dollar_tmp_m_368_m_28 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_368_m_28);
    2992             _v_res1.assign (Expr.getConcatenator ().toRight (_ve_arg).toRight (_c_41).toRight (_vs_op).toRight (_c_41).toRight (_ve_rest).yield ());
     3011            int _v_len___dollar_tmp_m_369_m_28 = (_v_len7 - _v_len8);
     3012            Expr _vv__dollar_tmp_m_369_m_16 = Expr.empty;
     3013            _vv__dollar_tmp_m_369_m_16 = _ve_arg.subexpr (0, _v_len___dollar_tmp_m_369_m_16);
     3014            Expr _vv__dollar_tmp_m_369_m_28 = Expr.empty;
     3015            _vv__dollar_tmp_m_369_m_28 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_369_m_28);
     3016            _v_res1.assign (Expr.getConcatenator ().toRight (_ve_arg).toRight (_c_42).toRight (_vs_op).toRight (_c_42).toRight (_ve_rest).yield ());
    29933017            break _block2;
    29943018          }
     
    30303054        }
    30313055        int _v_len__expr = (_v_len1 - _v_len2);
    3032         if (!_c_138.termEquals (_v_deref__arg1, 0))
     3056        if (!_c_139.termEquals (_v_deref__arg1, 0))
    30333057        {
    30343058          break _block1__branch2;
     
    30383062        Result _ge_auxcall1 = new Result (Expr.empty);
    30393063        Expr_Ref_To_CPP (_ve_expr, _ge_auxcall1);
    3040         _v_res1.assign (Expr.getConcatenator ().toRight (_c_140).toRight (_ge_auxcall1.getExpr ()).toRight (_c_139).yield ());
     3064        _v_res1.assign (Expr.getConcatenator ().toRight (_c_141).toRight (_ge_auxcall1.getExpr ()).toRight (_c_140).yield ());
    30413065        break _block1;
    30423066      }
     
    30573081      }
    30583082      int _v_len__expr2 = (_v_len3 - _v_len4);
    3059       if (!_c_141.termEquals (_v_deref__arg12, 0))
     3083      if (!_c_142.termEquals (_v_deref__arg12, 0))
    30603084      {
    30613085        throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Step_To_CPP", "Unexpected fail");
     
    30653089      Result _ge_auxcall2 = new Result (Expr.empty);
    30663090      Expr_Ref_To_CPP (_ve_expr, _ge_auxcall2);
    3067       _v_res1.assign (Expr.getConcatenator ().toRight (_c_140).toRight (_ge_auxcall2.getExpr ()).toRight (_c_142).yield ());
     3091      _v_res1.assign (Expr.getConcatenator ().toRight (_c_141).toRight (_ge_auxcall2.getExpr ()).toRight (_c_143).yield ());
    30683092    }
    30693093  }
     
    30783102          break _block1__branch1;
    30793103        }
    3080         _v_res1.assign (_c_98);
     3104        _v_res1.assign (_c_99);
    30813105        break _block1;
    30823106      }
     
    30953119          break _block1__branch2;
    30963120        }
    3097         if (!_c_106.termEquals (_v_deref__arg1, 0))
     3121        if (!_c_107.termEquals (_v_deref__arg1, 0))
    30983122        {
    30993123          break _block1__branch2;
     
    31153139        Result _ge_auxcall1 = new Result (Expr.empty);
    31163140        refal.plus.CppMangle.Rfp2Cpp (_vt_name, _ge_auxcall1);
    3117         _v_res1.assign (Expr.getConcatenator ().toRight (_c_105).toRight (_ge_auxcall1.getExpr ()).toRight (_c_37).toRight (_vs_pos).toRight (_c_37).toRight (_vs_len).toRight (_c_36).yield ());
     3141        _v_res1.assign (Expr.getConcatenator ().toRight (_c_106).toRight (_ge_auxcall1.getExpr ()).toRight (_c_38).toRight (_vs_pos).toRight (_c_38).toRight (_vs_len).toRight (_c_37).yield ());
    31183142        break _block1;
    31193143      }
    31203144      Result _v_Const__Expr__Aux1 = new Result (Expr.empty);
    3121       Const_Expr_Aux (Expr.concat (_c_74, _ge_arg1), _v_Const__Expr__Aux1);
     3145      Const_Expr_Aux (Expr.concat (_c_75, _ge_arg1), _v_Const__Expr__Aux1);
    31223146      _block2: {
    31233147        _block2__branch1: {
     
    31293153          }
    31303154          int _v_len__cpp__expr = (_v_len1 - _v_len2);
    3131           if (!_c_143.equals (_v_Const__Expr__Aux1.getExpr (), 0))
     3155          if (!_c_144.equals (_v_Const__Expr__Aux1.getExpr (), 0))
    31323156          {
    31333157            break _block2__branch1;
     
    32113235          break _block1__branch2;
    32123236        }
    3213         int _v_len___dollar_tmp_m_399_m_14 = (_v_len7 - _v_len8);
    3214         Expr _vv__dollar_tmp_m_399_m_14 = Expr.empty;
    3215         _vv__dollar_tmp_m_399_m_14 = _ve_accum.subexpr (0, _v_len___dollar_tmp_m_399_m_14);
     3237        int _v_len___dollar_tmp_m_400_m_14 = (_v_len7 - _v_len8);
     3238        Expr _vv__dollar_tmp_m_400_m_14 = Expr.empty;
     3239        _vv__dollar_tmp_m_400_m_14 = _ve_accum.subexpr (0, _v_len___dollar_tmp_m_400_m_14);
    32163240        _block2: {
    32173241          _block2__branch1: {
     
    32253249            _exit1: _continue1: for ( ; ; _va_8.next ())
    32263250            {
    3227               Expr _ve__dollar_tmp_m_401_m_33 = _va_8.getLeft();
     3251              Expr _ve__dollar_tmp_m_402_m_33 = _va_8.getLeft();
    32283252              Expr _v_lsplit__CharsToBytes1 = _va_8.getRight();
    32293253              if (!_va_8.isValid ())
     
    32373261                break _block2__branch1;
    32383262              }
    3239               int _v_len___dollar_tmp_m_401_m_39 = (_v_len9 - _v_len10);
     3263              int _v_len___dollar_tmp_m_402_m_39 = (_v_len9 - _v_len10);
    32403264              if (!_v_lsplit__CharsToBytes1.isSymbolAt (0))
    32413265              {
     
    32443268              Expr _vs_c = Expr.empty;
    32453269              _vs_c = _v_lsplit__CharsToBytes1.subexpr (0, 1);
    3246               Expr _ve__dollar_tmp_m_401_m_39 = Expr.empty;
    3247               _ve__dollar_tmp_m_401_m_39 = _v_lsplit__CharsToBytes1.subexpr ((0 + 1), _v_len___dollar_tmp_m_401_m_39);
    3248               if (!refal.plus.Compare.Gt (_vs_c, _c_144))
     3270              Expr _ve__dollar_tmp_m_402_m_39 = Expr.empty;
     3271              _ve__dollar_tmp_m_402_m_39 = _v_lsplit__CharsToBytes1.subexpr ((0 + 1), _v_len___dollar_tmp_m_402_m_39);
     3272              if (!refal.plus.Compare.Gt (_vs_c, _c_145))
    32493273              {
    32503274                continue _continue1;
    32513275              }
    32523276              Result _v_Const__Expr__Aux1 = new Result (Expr.empty);
    3253               Const_Expr_Aux (Expr.concat (_c_74, _ve_expr), _v_Const__Expr__Aux1);
    3254               _v_res1.assign (Expr.getConcatenator ().toRight (_c_145).toRight (_ve_accum).toRight (_c_82).toRight (_v_Const__Expr__Aux1.getExpr ()).yield ());
     3277              Const_Expr_Aux (Expr.concat (_c_75, _ve_expr), _v_Const__Expr__Aux1);
     3278              _v_res1.assign (Expr.getConcatenator ().toRight (_c_146).toRight (_ve_accum).toRight (_c_83).toRight (_v_Const__Expr__Aux1.getExpr ()).yield ());
    32553279              break _exit1;
    32563280            }
     
    32583282          }
    32593283          Result _v_Const__Expr__Aux2 = new Result (Expr.empty);
    3260           Const_Expr_Aux (Expr.concat (_c_74, _ve_expr), _v_Const__Expr__Aux2);
    3261           _v_res1.assign (Expr.getConcatenator ().toRight (_c_146).toRight (_ve_accum).toRight (_c_82).toRight (_v_Const__Expr__Aux2.getExpr ()).yield ());
     3284          Const_Expr_Aux (Expr.concat (_c_75, _ve_expr), _v_Const__Expr__Aux2);
     3285          _v_res1.assign (Expr.getConcatenator ().toRight (_c_147).toRight (_ve_accum).toRight (_c_83).toRight (_v_Const__Expr__Aux2.getExpr ()).yield ());
    32623286        }
    32633287        break _block1;
     
    32903314            }
    32913315            int _v_len__paren__expr = (_v_len13 - _v_len14);
    3292             if (!_c_102.termEquals (_v_deref__item, 0))
     3316            if (!_c_103.termEquals (_v_deref__item, 0))
    32933317            {
    32943318              break _block3__branch1;
     
    32983322            Result _ge_auxcall2 = new Result (Expr.empty);
    32993323            Const_Expr_To_CPP (_ve_paren__expr, _ge_auxcall2);
    3300             _ve_cpp__item = Expr.getConcatenator ().toRight (_c_148).toRight (_ge_auxcall2.getExpr ()).toRight (_c_147).yield ();
     3324            _ve_cpp__item = Expr.getConcatenator ().toRight (_c_149).toRight (_ge_auxcall2.getExpr ()).toRight (_c_148).yield ();
    33013325            break _block3;
    33023326          }
     
    33113335              break _block3__branch2;
    33123336            }
    3313             if (!_c_107.termEquals (_v_deref__item2, 0))
     3337            if (!_c_108.termEquals (_v_deref__item2, 0))
    33143338            {
    33153339              break _block3__branch2;
     
    33193343            Result _v_Name__To__CPP1 = new Result (Expr.empty);
    33203344            Name_To_CPP (_c_12, _vt_name, _v_Name__To__CPP1);
    3321             _ve_cpp__item = Expr.concat (_c_143, _v_Name__To__CPP1.getExpr ());
     3345            _ve_cpp__item = Expr.concat (_c_144, _v_Name__To__CPP1.getExpr ());
    33223346            break _block3;
    33233347          }
     
    33343358              break _block3__branch3;
    33353359            }
    3336             int _v_len___dollar_tmp_m_413_m_14 = (_v_len15 - _v_len16);
     3360            int _v_len___dollar_tmp_m_414_m_14 = (_v_len15 - _v_len16);
    33373361            if (!_c_11.termEquals (_v_deref__item3, 0))
    33383362            {
    33393363              break _block3__branch3;
    33403364            }
    3341             Expr _ve__dollar_tmp_m_413_m_14 = Expr.empty;
    3342             _ve__dollar_tmp_m_413_m_14 = _v_deref__item3.subexpr ((0 + 1), _v_len___dollar_tmp_m_413_m_14);
     3365            Expr _ve__dollar_tmp_m_414_m_14 = Expr.empty;
     3366            _ve__dollar_tmp_m_414_m_14 = _v_deref__item3.subexpr ((0 + 1), _v_len___dollar_tmp_m_414_m_14);
    33433367            Result _v_Rfp2Cpp1 = new Result (Expr.empty);
    33443368            refal.plus.CppMangle.Rfp2Cpp (_vt_item, _v_Rfp2Cpp1);
    3345             _ve_cpp__item = Expr.concat (_c_143, _v_Rfp2Cpp1.getExpr ());
     3369            _ve_cpp__item = Expr.concat (_c_144, _v_Rfp2Cpp1.getExpr ());
    33463370            break _block3;
    33473371          }
     
    33663390            _block4: {
    33673391              _block4__branch1: {
    3368                 if (!_vs_FUNC.termEquals (_c_25, 0))
     3392                if (!_vs_FUNC.termEquals (_c_26, 0))
    33693393                {
    33703394                  break _block4__branch1;
     
    33723396                break _block4;
    33733397              }
    3374               if (!_vs_FUNC.termEquals (_c_26, 0))
     3398              if (!_vs_FUNC.termEquals (_c_27, 0))
    33753399              {
    33763400                break _block3__branch4;
     
    33783402            }
    33793403            Result _ge_auxcall3 = new Result (Expr.empty);
    3380             Name_To_CPP (_c_31, _vt_name, _ge_auxcall3);
    3381             _ve_cpp__item = Expr.getConcatenator ().toRight (_c_149).toRight (_ge_auxcall3.getExpr ()).toRight (_c_36).yield ();
     3404            Name_To_CPP (_c_32, _vt_name, _ge_auxcall3);
     3405            _ve_cpp__item = Expr.getConcatenator ().toRight (_c_150).toRight (_ge_auxcall3.getExpr ()).toRight (_c_37).yield ();
    33823406            break _block3;
    33833407          }
     
    33963420              Result _ge_auxcall4 = new Result (Expr.empty);
    33973421              refal.plus.Box.Get (Int, _ge_auxcall4);
    3398               _ve_cpp__item = Expr.getConcatenator ().toRight (_c_150).toRight (_ge_auxcall4.getExpr ()).toRight (_c_111).toRight (_vs_sym).toRight (_c_82).yield ();
     3422              _ve_cpp__item = Expr.getConcatenator ().toRight (_c_151).toRight (_ge_auxcall4.getExpr ()).toRight (_c_112).toRight (_vs_sym).toRight (_c_83).yield ();
    33993423              break _block5;
    34003424            }
     
    34053429            Result _ge_auxcall5 = new Result (Expr.empty);
    34063430            Symbol_To_CPP (_vs_sym, _ge_auxcall5);
    3407             _ve_cpp__item = Expr.getConcatenator ().toRight (_c_151).toRight (_ge_auxcall5.getExpr ()).toRight (_c_82).yield ();
     3431            _ve_cpp__item = Expr.getConcatenator ().toRight (_c_152).toRight (_ge_auxcall5.getExpr ()).toRight (_c_83).yield ();
    34083432          }
    34093433        }
    34103434        Result _v_Const__Expr__Aux3 = new Result (Expr.empty);
    3411         Const_Expr_Aux (Expr.concat (_c_74, _ve_rest), _v_Const__Expr__Aux3);
     3435        Const_Expr_Aux (Expr.concat (_c_75, _ve_rest), _v_Const__Expr__Aux3);
    34123436        _v_res1.assign (Expr.concat (_ve_cpp__item, _v_Const__Expr__Aux3.getExpr ()));
    34133437        break _block1;
     
    34523476      _block3: {
    34533477        _block3__branch1: {
    3454           if (!_vs_char.termEquals (_c_152, 0))
     3478          if (!_vs_char.termEquals (_c_153, 0))
    34553479          {
    34563480            break _block3__branch1;
    34573481          }
    3458           _ve_cpp__char = _c_153;
     3482          _ve_cpp__char = _c_154;
    34593483          break _block3;
    34603484        }
    34613485        _block3__branch2: {
    3462           if (!_vs_char.termEquals (_c_154, 0))
     3486          if (!_vs_char.termEquals (_c_155, 0))
    34633487          {
    34643488            break _block3__branch2;
    34653489          }
    3466           _ve_cpp__char = _c_155;
     3490          _ve_cpp__char = _c_156;
    34673491          break _block3;
    34683492        }
    34693493        _block3__branch3: {
    3470           if (!_vs_char.termEquals (_c_156, 0))
     3494          if (!_vs_char.termEquals (_c_157, 0))
    34713495          {
    34723496            break _block3__branch3;
    34733497          }
    3474           _ve_cpp__char = _c_157;
     3498          _ve_cpp__char = _c_158;
    34753499          break _block3;
    34763500        }
    34773501        _block3__branch4: {
    3478           if (!_vs_char.termEquals (_c_158, 0))
     3502          if (!_vs_char.termEquals (_c_159, 0))
    34793503          {
    34803504            break _block3__branch4;
    34813505          }
    3482           _ve_cpp__char = _c_159;
     3506          _ve_cpp__char = _c_160;
    34833507          break _block3;
    34843508        }
    34853509        _block3__branch5: {
    3486           if (!_vs_char.termEquals (_c_160, 0))
     3510          if (!_vs_char.termEquals (_c_161, 0))
    34873511          {
    34883512            break _block3__branch5;
    34893513          }
    3490           _ve_cpp__char = _c_161;
     3514          _ve_cpp__char = _c_162;
    34913515          break _block3;
    34923516        }
     
    34953519          throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Symbol_To_CPP", "Unexpected fail");
    34963520        }
    3497         Expr _vs__dollar_tmp_m_440_m_8 = Expr.empty;
    3498         _vs__dollar_tmp_m_440_m_8 = _vs_char.subexpr (0, 1);
     3521        Expr _vs__dollar_tmp_m_441_m_8 = Expr.empty;
     3522        _vs__dollar_tmp_m_441_m_8 = _vs_char.subexpr (0, 1);
    34993523        _ve_cpp__char = _vs_char;
    35003524      }
     
    35263550        }
    35273551        int _v_len__prefix = (_v_len1 - _v_len2);
    3528         if (!_c_33.termEquals (_v_compose1, (0 + 1)))
     3552        if (!_c_34.termEquals (_v_compose1, (0 + 1)))
    35293553        {
    35303554          break _block1__branch1;
     
    35323556        Expr _vv_prefix = Expr.empty;
    35333557        _vv_prefix = _v_deref__compose1.subexpr (0, _v_len__prefix);
    3534         _v_res1.assign (_c_162);
     3558        _v_res1.assign (_c_163);
    35353559        break _block1;
    35363560      }
     
    35413565        }
    35423566        Expr _v_compose2 = Expr.getConcatenator ().toRight ((Comparable<?>) _ge_arg1).toRight (_gs_arg2).toRight (_ge_arg3).yield ();
    3543         if (!_c_163.equals (_v_compose2, 0))
     3567        if (!_c_164.equals (_v_compose2, 0))
    35443568        {
    35453569          break _block1__branch2;
    35463570        }
    3547         _v_res1.assign (_c_164);
     3571        _v_res1.assign (_c_165);
    35483572        break _block1;
    35493573      }
     
    35663590        }
    35673591        int _v_len__arg = (_v_len3 - _v_len4);
    3568         if (!_c_163.equals (_v_compose3, 0))
     3592        if (!_c_164.equals (_v_compose3, 0))
    35693593        {
    35703594          break _block1__branch3;
     
    35933617        }
    35943618        int _v_len__prefix2 = (_v_len5 - _v_len6);
    3595         if (!_c_90.termEquals (_v_compose4, (0 + 1)))
     3619        if (!_c_91.termEquals (_v_compose4, (0 + 1)))
    35963620        {
    35973621          break _block1__branch4;
     
    35993623        Expr _ve_prefix = Expr.empty;
    36003624        _ve_prefix = _v_deref__compose4.subexpr (0, _v_len__prefix2);
    3601         _v_res1.assign (_c_164);
     3625        _v_res1.assign (_c_165);
    36023626        break _block1;
    36033627      }
     
    36323656        }
    36333657        int _v_len__arg2 = (_v_len9 - _v_len10);
    3634         if (!_c_90.termEquals (_v_compose5, (0 + 1)))
     3658        if (!_c_91.termEquals (_v_compose5, (0 + 1)))
    36353659        {
    36363660          break _block1__branch5;
     
    36553679            _block2__branch1: {
    36563680              Expr _v_compose6 = Expr.concat ((Comparable<?>) _ge_arg1, _gs_arg2);
    3657               if (!_c_90.termEquals (_v_compose6, (0 + 1)))
     3681              if (!_c_91.termEquals (_v_compose6, (0 + 1)))
    36583682              {
    36593683                break _block2__branch1;
    36603684              }
    3661               Expr _vt__dollar_tmp_m_471_m_8 = Expr.empty;
    3662               _vt__dollar_tmp_m_471_m_8 = _v_compose6.subexpr (0, 1);
    3663               _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ve_cpp__args).toRight (_c_36).yield ());
     3685              Expr _vt__dollar_tmp_m_472_m_8 = Expr.empty;
     3686              _vt__dollar_tmp_m_472_m_8 = _v_compose6.subexpr (0, 1);
     3687              _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ve_cpp__args).toRight (_c_37).yield ());
    36643688              break _block2;
    36653689            }
    36663690            _block2__branch2: {
    36673691              Expr _v_compose7 = Expr.concat ((Comparable<?>) _ge_arg1, _gs_arg2);
    3668               if (!_c_163.equals (_v_compose7, 0))
     3692              if (!_c_164.equals (_v_compose7, 0))
    36693693              {
    36703694                break _block2__branch2;
    36713695              }
    3672               _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ve_cpp__args).toRight (_c_36).yield ());
     3696              _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ve_cpp__args).toRight (_c_37).yield ());
    36733697              break _block2;
    36743698            }
     
    36863710                break _block2__branch3;
    36873711              }
    3688               int _v_len___dollar_tmp_m_473_m_9 = (_v_len11 - _v_len12);
    3689               if (!_c_33.termEquals (_v_compose8, (0 + 1)))
     3712              int _v_len___dollar_tmp_m_474_m_9 = (_v_len11 - _v_len12);
     3713              if (!_c_34.termEquals (_v_compose8, (0 + 1)))
    36903714              {
    36913715                break _block2__branch3;
    36923716              }
    3693               Expr _vv__dollar_tmp_m_473_m_9 = Expr.empty;
    3694               _vv__dollar_tmp_m_473_m_9 = _v_deref__compose8.subexpr (0, _v_len___dollar_tmp_m_473_m_9);
    3695               _v_res1.assign (Expr.getConcatenator ().toRight (_c_101).toRight (_ge_arg1).toRight (_ve_cpp__args).toRight (_c_165).yield ());
     3717              Expr _vv__dollar_tmp_m_474_m_9 = Expr.empty;
     3718              _vv__dollar_tmp_m_474_m_9 = _v_deref__compose8.subexpr (0, _v_len___dollar_tmp_m_474_m_9);
     3719              _v_res1.assign (Expr.getConcatenator ().toRight (_c_102).toRight (_ge_arg1).toRight (_ve_cpp__args).toRight (_c_166).yield ());
    36963720              break _block2;
    36973721            }
     
    37023726              throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Args_To_CPP", "Unexpected fail");
    37033727            }
    3704             int _v_len___dollar_tmp_m_474_m_8 = (_v_len13 - _v_len14);
     3728            int _v_len___dollar_tmp_m_475_m_8 = (_v_len13 - _v_len14);
    37053729            Expr _v_compose9 = Expr.concat ((Comparable<?>) _ge_arg1, _gs_arg2);
    3706             Expr _ve__dollar_tmp_m_474_m_8 = Expr.empty;
    3707             _ve__dollar_tmp_m_474_m_8 = _v_compose9.subexpr (0, _v_len___dollar_tmp_m_474_m_8);
     3730            Expr _ve__dollar_tmp_m_475_m_8 = Expr.empty;
     3731            _ve__dollar_tmp_m_475_m_8 = _v_compose9.subexpr (0, _v_len___dollar_tmp_m_475_m_8);
    37083732            _v_res1.assign (Expr.concat (_ge_arg1, _ve_cpp__args));
    37093733          }
     
    37423766              break _block4__branch1;
    37433767            }
    3744             int _v_len___dollar_tmp_m_460_m_21 = (_v_len19 - _v_len20);
    3745             Expr _vv__dollar_tmp_m_460_m_21 = Expr.empty;
    3746             _vv__dollar_tmp_m_460_m_21 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_460_m_21);
    3747             _ve_comma = _c_37;
     3768            int _v_len___dollar_tmp_m_461_m_21 = (_v_len19 - _v_len20);
     3769            Expr _vv__dollar_tmp_m_461_m_21 = Expr.empty;
     3770            _vv__dollar_tmp_m_461_m_21 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_461_m_21);
     3771            _ve_comma = _c_38;
    37483772            break _block4;
    37493773          }
     
    37523776        _block5: {
    37533777          _block5__branch1: {
    3754             if (!_gs_arg2.termEquals (_c_33, 0))
     3778            if (!_gs_arg2.termEquals (_c_34, 0))
    37553779            {
    37563780              break _block5__branch1;
     
    37633787          }
    37643788          _block5__branch2: {
    3765             if (!_gs_arg2.termEquals (_c_90, 0))
     3789            if (!_gs_arg2.termEquals (_c_91, 0))
    37663790            {
    37673791              break _block5__branch2;
     
    37733797            break _block5;
    37743798          }
    3775           if (!_gs_arg2.termEquals (_c_118, 0))
     3799          if (!_gs_arg2.termEquals (_c_119, 0))
    37763800          {
    37773801            throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Args_To_CPP", "Unexpected fail");
     
    38193843        }
    38203844        int _v_len__cont = (_v_len3 - _v_len4);
    3821         if (!_c_27.equals (_ve_name, 0))
     3845        if (!_c_28.equals (_ve_name, 0))
    38223846        {
    38233847          break _block1__branch1;
     
    38343858        refal.plus.Box.Get (Module_Name, _ge_auxcall2);
    38353859        Result _ge_auxcall3 = new Result (Expr.empty);
    3836         refal.plus.List.Intersperse (_c_28, _ve_cont, _ge_auxcall3);
     3860        refal.plus.List.Intersperse (_c_29, _ve_cont, _ge_auxcall3);
    38373861        Result _gs_auxcall4 = new Result (Expr.empty);
    38383862        refal.plus.Convert.ToWord (_ge_auxcall3.getExpr (), _gs_auxcall4);
     
    38483872        }
    38493873        int _v_len__cont2 = (_v_len5 - _v_len6);
    3850         if (!_c_166.equals (_ve_name, 0))
     3874        if (!_c_167.equals (_ve_name, 0))
    38513875        {
    38523876          break _block1__branch2;
     
    38543878        Expr _ve_cont = Expr.empty;
    38553879        _ve_cont = _ve_name.subexpr ((0 + 1 + 1), _v_len__cont2);
    3856         refal.plus.Table.Bind (Decls, Expr.concat (_vs_decl__type, (Comparable<?>) Expr.concat (_c_167, _ve_cont)), Expr.empty);
    3857         QName_To_Cpp (Expr.concat (_c_167, _ve_cont), _v_res1);
     3880        refal.plus.Table.Bind (Decls, Expr.concat (_vs_decl__type, (Comparable<?>) Expr.concat (_c_168, _ve_cont)), Expr.empty);
     3881        QName_To_Cpp (Expr.concat (_c_168, _ve_cont), _v_res1);
    38583882        break _block1;
    38593883      }
     
    38873911  static  void QName_To_Cpp (Expr _ve_name, Result _v_res1) throws RefalException
    38883912  {
    3889     refal.plus.List.Intersperse (_c_110, _ve_name, _v_res1);
     3913    refal.plus.List.Intersperse (_c_111, _ve_name, _v_res1);
    38903914  }
    38913915
     
    38933917  static  void Open_Namespace (Expr _ve_name, Result _v_res1) throws RefalException
    38943918  {
    3895     _v_res1.assign (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_169).toRight (_ve_name).toRight (_c_168).yield ()));
     3919    _v_res1.assign (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_170).toRight (_ve_name).toRight (_c_169).yield ()));
    38963920  }
    38973921
     
    38993923  static  void Close_Namespace (Expr _ve_name, Result _v_res1) throws RefalException
    39003924  {
    3901     _v_res1.assign (_c_170);
     3925    _v_res1.assign (_c_171);
    39023926  }
    39033927
     
    39223946          break _block1__branch2;
    39233947        }
    3924         if (!_c_74.termEquals (_ve_qualifiers, 0))
     3948        if (!_c_75.termEquals (_ve_qualifiers, 0))
    39253949        {
    39263950          break _block1__branch2;
     
    39553979      refal.plus.Box.Store (Current_Namespace, _ge_qualifiers__1);
    39563980      Result _v_Map1 = new Result (Expr.empty);
    3957       if (!refal.plus.List.Map (_c_171, Expr.empty, _ge_qualifiers__1, _v_Map1))
     3981      if (!refal.plus.List.Map (_c_172, Expr.empty, _ge_qualifiers__1, _v_Map1))
    39583982      {
    39593983        throw new RefalException ("org.refal.plus.compiler.rfp_asail_cpp", "Namespace_Control", "Unexpected fail");
     
    39673991  {
    39683992    Expr _ge_args__0 = _ve_args;
    3969     Expr _vs_n = _c_18;
     3993    Expr _vs_n = _c_19;
    39703994    Expr _ve_pr__args = Expr.empty;
    39713995    _exit__iter1: for ( ; ; )
     
    39764000          break _iter1;
    39774001        }
    3978         _v_res1.assign (Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_173).toRight (_ve_name).toRight (_c_172).yield (), _ve_pr__args));
     4002        _v_res1.assign (Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_174).toRight (_ve_name).toRight (_c_173).yield (), _ve_pr__args));
    39794003        break _exit__iter1;
    39804004      }
     
    40014025                break _block3__branch1;
    40024026              }
    4003               int _v_len___dollar_tmp_m_517_m_22 = (_v_len3 - _v_len4);
    4004               Expr _vv__dollar_tmp_m_517_m_22 = Expr.empty;
    4005               _vv__dollar_tmp_m_517_m_22 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_517_m_22);
     4027              int _v_len___dollar_tmp_m_518_m_22 = (_v_len3 - _v_len4);
     4028              Expr _vv__dollar_tmp_m_518_m_22 = Expr.empty;
     4029              _vv__dollar_tmp_m_518_m_22 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_518_m_22);
    40064030              break _block3;
    40074031            }
    4008             if (!refal.plus.Compare.Gt (_vs_n, _c_18))
     4032            if (!refal.plus.Compare.Gt (_vs_n, _c_19))
    40094033            {
    40104034              break _block2__branch1;
    40114035            }
    40124036          }
    4013           _ve_num = Expr.getConcatenator ().toRight (_c_174).toRight (_vs_n).toRight (_c_6).yield ();
     4037          _ve_num = Expr.getConcatenator ().toRight (_c_175).toRight (_vs_n).toRight (_c_6).yield ();
    40144038          break _block2;
    40154039        }
    4016         _ve_num = _c_175;
     4040        _ve_num = _c_176;
    40174041      }
    40184042      Result _gs_auxcall1 = new Result (Expr.empty);
    4019       refal.plus.Arithm.Add (_vs_n, _c_18, _gs_auxcall1);
     4043      refal.plus.Arithm.Add (_vs_n, _c_19, _gs_auxcall1);
    40204044      Result _ge_auxcall2 = new Result (Expr.empty);
    40214045      refal.plus.CppMangle.Rfp2Cpp (_vt_arg, _ge_auxcall2);
    40224046      _ge_args__0 = _ve_rest;
    40234047      _vs_n = _gs_auxcall1.getExpr ();
    4024       _ve_pr__args = Expr.concat (_ve_pr__args, (Comparable<?>) Expr.getConcatenator ().toRight (_c_177).toRight (_ve_num).toRight (_c_66).toRight (_ge_auxcall2.getExpr ()).toRight (_c_176).yield ());
     4048      _ve_pr__args = Expr.concat (_ve_pr__args, (Comparable<?>) Expr.getConcatenator ().toRight (_c_178).toRight (_ve_num).toRight (_c_67).toRight (_ge_auxcall2.getExpr ()).toRight (_c_177).yield ());
    40254049    }
    40264050  }
     
    40304054  {
    40314055    Expr _ge_args__0 = _ve_args;
    4032     Expr _vs_n = _c_18;
     4056    Expr _vs_n = _c_19;
    40334057    Expr _ve_pr__args = Expr.empty;
    40344058    _exit__iter1: for ( ; ; )
     
    40394063          break _iter1;
    40404064        }
    4041         _v_res1.assign (Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_178).toRight (_ve_name).toRight (_c_172).yield (), _ve_pr__args));
     4065        _v_res1.assign (Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_179).toRight (_ve_name).toRight (_c_173).yield (), _ve_pr__args));
    40424066        break _exit__iter1;
    40434067      }
     
    40644088                break _block3__branch1;
    40654089              }
    4066               int _v_len___dollar_tmp_m_530_m_22 = (_v_len3 - _v_len4);
    4067               Expr _vv__dollar_tmp_m_530_m_22 = Expr.empty;
    4068               _vv__dollar_tmp_m_530_m_22 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_530_m_22);
     4090              int _v_len___dollar_tmp_m_531_m_22 = (_v_len3 - _v_len4);
     4091              Expr _vv__dollar_tmp_m_531_m_22 = Expr.empty;
     4092              _vv__dollar_tmp_m_531_m_22 = _ve_rest.subexpr (0, _v_len___dollar_tmp_m_531_m_22);
    40694093              break _block3;
    40704094            }
    4071             if (!refal.plus.Compare.Gt (_vs_n, _c_18))
     4095            if (!refal.plus.Compare.Gt (_vs_n, _c_19))
    40724096            {
    40734097              break _block2__branch1;
    40744098            }
    40754099          }
    4076           _ve_num = Expr.getConcatenator ().toRight (_c_174).toRight (_vs_n).toRight (_c_6).yield ();
     4100          _ve_num = Expr.getConcatenator ().toRight (_c_175).toRight (_vs_n).toRight (_c_6).yield ();
    40774101          break _block2;
    40784102        }
    4079         _ve_num = _c_175;
     4103        _ve_num = _c_176;
    40804104      }
    40814105      Result _gs_auxcall1 = new Result (Expr.empty);
    4082       refal.plus.Arithm.Add (_vs_n, _c_18, _gs_auxcall1);
     4106      refal.plus.Arithm.Add (_vs_n, _c_19, _gs_auxcall1);
    40834107      Result _ge_auxcall2 = new Result (Expr.empty);
    40844108      refal.plus.CppMangle.Rfp2Cpp (_vt_arg, _ge_auxcall2);
    40854109      _ge_args__0 = _ve_rest;
    40864110      _vs_n = _gs_auxcall1.getExpr ();
    4087       _ve_pr__args = Expr.concat (_ve_pr__args, (Comparable<?>) Expr.getConcatenator ().toRight (_c_180).toRight (_ve_num).toRight (_c_66).toRight (_ge_auxcall2.getExpr ()).toRight (_c_179).yield ());
     4111      _ve_pr__args = Expr.concat (_ve_pr__args, (Comparable<?>) Expr.getConcatenator ().toRight (_c_181).toRight (_ve_num).toRight (_c_67).toRight (_ge_auxcall2.getExpr ()).toRight (_c_180).yield ());
    40884112    }
    40894113  }
     
    40924116  static  void Trace_Fail (Expr _ve_name, Result _v_res1) throws RefalException
    40934117  {
    4094     _v_res1.assign (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_181).toRight (_ve_name).toRight (_c_172).yield ()));
     4118    _v_res1.assign (new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_182).toRight (_ve_name).toRight (_c_173).yield ()));
    40954119  }
    40964120
     
    41184142        Expr _ve_n = Expr.empty;
    41194143        _ve_n = _v_deref__name.subexpr (0, _v_len__n);
    4120         _v_res1.assign (_c_74);
     4144        _v_res1.assign (_c_75);
    41214145        _v_res2.assign (_ve_n);
    41224146        break _block1;
     
    41304154    if (_ge_arg1.length () != 2)
    41314155    {
    4132       throw new RefalException (_c_182);
     4156      throw new RefalException (_c_183);
    41334157    }
    41344158    if (!_ge_arg1.isSymbolAt (0))
    41354159    {
    4136       throw new RefalException (_c_182);
     4160      throw new RefalException (_c_183);
    41374161    }
    41384162    Expr _v_stub1 = Expr.empty;
  • to-imperative/trunk/java/compiler/org/refal/plus/compiler/rfp_asail_java.java

    r3428 r3456  
    3939  static  final Expr _c_10 = Expr.fromSequence (" (new Result ());");
    4040  static  final Expr _c_11 = Expr.fromSequence ("try {");
    41   static  final Expr _c_210 = Expr.fromSequence ("java.lang.System.out.println (\"$error: \" + e);");
    42   static  final Expr _c_12 = Expr.getConcatenator (30).toRight (Expr.fromSequence ("} catch (RefalException e) {")).toRight ((Comparable<?>) Expr.concat ((Comparable<?>) _c_210, (Comparable<?>) Expr.fromSequence ("java.lang.System.exit (100);"))).toRight (Expr.fromSequence ("}")).yield ();
     41  static  final Expr _c_211 = Expr.fromSequence ("java.lang.System.out.println (\"$error: \" + e);");
     42  static  final Expr _c_12 = Expr.getConcatenator (30).toRight (Expr.fromSequence ("} catch (RefalException e) {")).toRight ((Comparable<?>) Expr.concat ((Comparable<?>) _c_211, (Comparable<?>) Expr.fromSequence ("java.lang.System.exit (100);"))).toRight (Expr.fromSequence ("}")).yield ();
    4343  static  final Expr _c_13 = Expr.fromSequence ("public void run () {");
    4444  static  final Expr _c_14 = _c_12.subexpr (0, 1);
     
    5656  static  final Expr _c_25 = _c_26.subexpr (1, 1);
    5757  static  final Expr _c_27 = new Expr (Symbol.newWord ("IMPORT"));
    58   static  final Expr _c_28 = new Expr (Symbol.newWord ("NATIVE"));
    59   static  final Expr _c_29 = new Expr (Symbol.newWord ("FUNC"));
    60   static  final Expr _c_30 = _c_18.subexpr (14, 4);
    61   static  final Expr _c_31 = new Expr (Symbol.newWord ("FUNC?"));
    62   static  final Expr _c_160 = Expr.fromSequence ("public boolean eval (Expr arg, Result res) throws RefalException {");
    63   static  final Expr _c_32 = _c_160.subexpr (7, 7);
    64   static  final Expr _c_33 = new Expr ((Comparable<?>) Expr.fromSequence ("return true;"));
    65   static  final Expr _c_61 = Expr.fromSequence ("\", \"This is for avoiding 'Unreachable code' errors\");");
    66   static  final Expr _c_34 = _c_61.subexpr (50, 2);
    67   static  final Expr _c_35 = Expr.fromSequence ("@RefalFormat(\"");
    68   static  final Expr _c_36 = new Expr (Symbol.newWord ("Result"));
    69   static  final Expr _c_37 = new Expr (Symbol.newWord ("Expr"));
    70   static  final Expr _c_38 = _c_160.subexpr (41, 23);
    71   static  final Expr _c_39 = _c_10.subexpr (0, 2);
    72   static  final Expr _c_40 = _c_39.subexpr (0, 1);
    73   static  final Expr _c_41 = _c_18.subexpr (7, 7);
    74   static  final Expr _c_42 = _c_20.subexpr (1, 1);
    75   static  final Expr _c_43 = new Expr (Symbol.newWord ("TRACE"));
    76   static  final Expr _c_44 = new Expr (Symbol.newWord ("IF-INT-CMP"));
    77   static  final Expr _c_45 = _c_10.subexpr (14, 1);
    78   static  final Expr _c_64 = Expr.fromSequence ("if (false)");
    79   static  final Expr _c_46 = _c_64.subexpr (0, 4);
    80   static  final Expr _c_47 = new Expr (Symbol.newWord ("IF"));
    81   static  final Expr _c_48 = new Expr (Symbol.newWord ("CALL-FAILS"));
    82   static  final Expr _c_49 = new Expr (Symbol.newWord ("FOR"));
    83   static  final Expr _c_50 = new Expr (Symbol.newWord ("LABEL"));
    84   static  final Expr _c_51 = _c_210.subexpr (37, 2);
    85   static  final Expr _c_52 = new Expr (Symbol.newWord ("INC-ITER"));
    86   static  final Expr _c_53 = new Expr (Symbol.newWord ("DEC-ITER"));
    87   static  final Expr _c_54 = Expr.fromSequence (".getLeft();");
    88   static  final Expr _c_211 = Expr.fromSequence ("Expr err = error.getExpr ();");
    89   static  final Expr _c_55 = _c_211.subexpr (8, 3);
    90   static  final Expr _c_56 = _c_211.subexpr (0, 5);
    91   static  final Expr _c_57 = Expr.fromSequence (".getRight();");
    92   static  final Expr _c_58 = Expr.fromSequence ("for ( ; ; ");
    93   static  final Expr _c_59 = Expr.fromSequence (": {");
    94   static  final Expr _c_60 = new Expr (Symbol.newWord ("TRY"));
    95   static  final Expr _c_62 = _c_61.subexpr (0, 4);
    96   static  final Expr _c_63 = Expr.fromSequence ("throw new RefalException (\"");
    97   static  final Expr _c_65 = new Expr ((Comparable<?>) _c_11.subexpr (0, 3));
    98   static  final Expr _c_66 = new Expr (Symbol.newWord ("CATCH-ERROR"));
    99   static  final Expr _c_67 = new Expr ((Comparable<?>) _c_211);
    100   static  final Expr _c_68 = Expr.fromSequence ("catch (RefalException error) {");
    101   static  final Expr _c_69 = new Expr (Symbol.newWord ("RETFAIL"));
    102   static  final Expr _c_212 = Expr.fromSequence ("return false;");
    103   static  final Expr _c_104 = Expr.getConcatenator (5).toRight (Expr.fromSequence (") {")).toRight ((Comparable<?>) _c_212).toRight (Expr.fromSequence ("}")).yield ();
    104   static  final Expr _c_70 = _c_104.subexpr (3, 1);
    105   static  final Expr _c_71 = new Expr (Symbol.newWord ("FATAL"));
    106   static  final Expr _c_72 = Expr.fromSequence ("\", \"Unexpected fail\");");
    107   static  final Expr _c_73 = new Expr (Symbol.newWord ("LSPLIT"));
    108   static  final Expr _c_74 = Expr.fromSequence ("_va_");
    109   static  final Expr _c_75 = _c_10.subexpr (15, 2);
    110   static  final Expr _c_76 = Expr.fromSequence (".leftSplit(");
    111   static  final Expr _c_77 = Expr.fromSequence ("Expr.SplitIterator ");
    112   static  final Expr _c_78 = new Expr (Symbol.newWord ("RSPLIT"));
    113   static  final Expr _c_79 = Expr.fromSequence (".rightSplit(");
    114   static  final Expr _c_80 = new Expr (Symbol.newWord ("DECL"));
    115   static  final Expr _c_81 = Expr.fromSequence ("int ");
    116   static  final Expr _c_82 = new Expr (Symbol.newWord ("ASSIGN"));
    117   static  final Expr _c_107 = Expr.fromSequence (" = new Result ();");
    118   static  final Expr _c_83 = _c_107.subexpr (0, 15);
    119   static  final Expr _c_84 = _c_10.subexpr (6, 7);
    120   static  final Expr _c_85 = Expr.fromSequence (".assign (");
    121   static  final Expr _c_86 = new Expr (Symbol.newWord ("DROP"));
    122   static  final Expr _c_87 = Expr.fromSequence (".drop ();");
    123   static  final Expr _c_88 = new Expr (Symbol.newWord ("CONTINUE"));
    124   static  final Expr _c_89 = Expr.fromSequence ("continue ");
    125   static  final Expr _c_90 = new Expr (Symbol.newWord ("BREAK"));
    126   static  final Expr _c_91 = Expr.fromSequence ("break ");
    127   static  final Expr _c_92 = new Expr (Symbol.newWord ("ERROR"));
    128   static  final Expr _c_93 = _c_63.subexpr (0, 26);
    129   static  final Expr _c_94 = new Expr (Symbol.newWord ("CONSTEXPR"));
    130   static  final Expr _c_95 = new Expr (Symbol.newWord ("STATIC"));
    131   static  final Expr _c_96 = Expr.fromSequence (" final Expr ");
    132   static  final Expr _c_97 = new Expr (Symbol.newWord ("OBJ"));
    133   static  final Expr _c_98 = Expr.fromSequence ("\"));");
    134   static  final Expr _c_99 = _c_9.subexpr (20, 3);
    135   static  final Expr _c_100 = Expr.fromSequence (" = new Expr (Symbol.new");
    136   static  final Expr _c_101 = new Expr (Symbol.newWord ("DECL-OBJ"));
    137   static  final Expr _c_102 = new Expr (Symbol.newWord ("DECL-FUNC"));
    138   static  final Expr _c_103 = new Expr (Symbol.newWord ("TAILCALL?"));
    139   static  final Expr _c_105 = Expr.fromSequence ("if (!");
    140   static  final Expr _c_106 = _c_211.subexpr (16, 12);
    141   static  final Expr _c_108 = Expr.fromSequence ("Expr.empty");
    142   static  final Expr _c_109 = new Expr (Symbol.newWord ("PAREN"));
    143   static  final Expr _c_110 = Expr.fromSequence ("new Expr ((Comparable<?>) ");
    144   static  final Expr _c_111 = _c_62.subexpr (1, 2);
    145   static  final Expr _c_112 = Expr.fromSequence ("Expr.concat (");
    146   static  final Expr _c_113 = new Expr (new Func () {
     58  static  final Expr _c_28 = new Expr (Symbol.newWord ("LINENUMBER"));
     59  static  final Expr _c_29 = new Expr (Symbol.newWord ("NATIVE"));
     60  static  final Expr _c_30 = new Expr (Symbol.newWord ("FUNC"));
     61  static  final Expr _c_31 = _c_18.subexpr (14, 4);
     62  static  final Expr _c_32 = new Expr (Symbol.newWord ("FUNC?"));
     63  static  final Expr _c_161 = Expr.fromSequence ("public boolean eval (Expr arg, Result res) throws RefalException {");
     64  static  final Expr _c_33 = _c_161.subexpr (7, 7);
     65  static  final Expr _c_34 = new Expr ((Comparable<?>) Expr.fromSequence ("return true;"));
     66  static  final Expr _c_62 = Expr.fromSequence ("\", \"This is for avoiding 'Unreachable code' errors\");");
     67  static  final Expr _c_35 = _c_62.subexpr (50, 2);
     68  static  final Expr _c_36 = Expr.fromSequence ("@RefalFormat(\"");
     69  static  final Expr _c_37 = new Expr (Symbol.newWord ("Result"));
     70  static  final Expr _c_38 = new Expr (Symbol.newWord ("Expr"));
     71  static  final Expr _c_39 = _c_161.subexpr (41, 23);
     72  static  final Expr _c_40 = _c_10.subexpr (0, 2);
     73  static  final Expr _c_41 = _c_40.subexpr (0, 1);
     74  static  final Expr _c_42 = _c_18.subexpr (7, 7);
     75  static  final Expr _c_43 = _c_20.subexpr (1, 1);
     76  static  final Expr _c_44 = new Expr (Symbol.newWord ("TRACE"));
     77  static  final Expr _c_45 = new Expr (Symbol.newWord ("IF-INT-CMP"));
     78  static  final Expr _c_46 = _c_10.subexpr (14, 1);
     79  static  final Expr _c_65 = Expr.fromSequence ("if (false)");
     80  static  final Expr _c_47 = _c_65.subexpr (0, 4);
     81  static  final Expr _c_48 = new Expr (Symbol.newWord ("IF"));
     82  static  final Expr _c_49 = new Expr (Symbol.newWord ("CALL-FAILS"));
     83  static  final Expr _c_50 = new Expr (Symbol.newWord ("FOR"));
     84  static  final Expr _c_51 = new Expr (Symbol.newWord ("LABEL"));
     85  static  final Expr _c_52 = _c_211.subexpr (37, 2);
     86  static  final Expr _c_53 = new Expr (Symbol.newWord ("INC-ITER"));
     87  static  final Expr _c_54 = new Expr (Symbol.newWord ("DEC-ITER"));
     88  static  final Expr _c_55 = Expr.fromSequence (".getLeft();");
     89  static  final Expr _c_212 = Expr.fromSequence ("Expr err = error.getExpr ();");
     90  static  final Expr _c_56 = _c_212.subexpr (8, 3);
     91  static  final Expr _c_57 = _c_212.subexpr (0, 5);
     92  static  final Expr _c_58 = Expr.fromSequence (".getRight();");
     93  static  final Expr _c_59 = Expr.fromSequence ("for ( ; ; ");
     94  static  final Expr _c_60 = Expr.fromSequence (": {");
     95  static  final Expr _c_61 = new Expr (Symbol.newWord ("TRY"));
     96  static  final Expr _c_63 = _c_62.subexpr (0, 4);
     97  static  final Expr _c_64 = Expr.fromSequence ("throw new RefalException (\"");
     98  static  final Expr _c_66 = new Expr ((Comparable<?>) _c_11.subexpr (0, 3));
     99  static  final Expr _c_67 = new Expr (Symbol.newWord ("CATCH-ERROR"));
     100  static  final Expr _c_68 = new Expr ((Comparable<?>) _c_212);
     101  static  final Expr _c_69 = Expr.fromSequence ("catch (RefalException error) {");
     102  static  final Expr _c_70 = new Expr (Symbol.newWord ("RETFAIL"));
     103  static  final Expr _c_213 = Expr.fromSequence ("return false;");
     104  static  final Expr _c_105 = Expr.getConcatenator (5).toRight (Expr.fromSequence (") {")).toRight ((Comparable<?>) _c_213).toRight (Expr.fromSequence ("}")).yield ();
     105  static  final Expr _c_71 = _c_105.subexpr (3, 1);
     106  static  final Expr _c_72 = new Expr (Symbol.newWord ("FATAL"));
     107  static  final Expr _c_73 = Expr.fromSequence ("\", \"Unexpected fail\");");
     108  static  final Expr _c_74 = new Expr (Symbol.newWord ("LSPLIT"));
     109  static  final Expr _c_75 = Expr.fromSequence ("_va_");
     110  static  final Expr _c_76 = _c_10.subexpr (15, 2);
     111  static  final Expr _c_77 = Expr.fromSequence (".leftSplit(");
     112  static  final Expr _c_78 = Expr.fromSequence ("Expr.SplitIterator ");
     113  static  final Expr _c_79 = new Expr (Symbol.newWord ("RSPLIT"));
     114  static  final Expr _c_80 = Expr.fromSequence (".rightSplit(");
     115  static  final Expr _c_81 = new Expr (Symbol.newWord ("DECL"));
     116  static  final Expr _c_82 = Expr.fromSequence ("int ");
     117  static  final Expr _c_83 = new Expr (Symbol.newWord ("ASSIGN"));
     118  static  final Expr _c_108 = Expr.fromSequence (" = new Result ();");
     119  static  final Expr _c_84 = _c_108.subexpr (0, 15);
     120  static  final Expr _c_85 = _c_10.subexpr (6, 7);
     121  static  final Expr _c_86 = Expr.fromSequence (".assign (");
     122  static  final Expr _c_87 = new Expr (Symbol.newWord ("DROP"));
     123  static  final Expr _c_88 = Expr.fromSequence (".drop ();");
     124  static  final Expr _c_89 = new Expr (Symbol.newWord ("CONTINUE"));
     125  static  final Expr _c_90 = Expr.fromSequence ("continue ");
     126  static  final Expr _c_91 = new Expr (Symbol.newWord ("BREAK"));
     127  static  final Expr _c_92 = Expr.fromSequence ("break ");
     128  static  final Expr _c_93 = new Expr (Symbol.newWord ("ERROR"));
     129  static  final Expr _c_94 = _c_64.subexpr (0, 26);
     130  static  final Expr _c_95 = new Expr (Symbol.newWord ("CONSTEXPR"));
     131  static  final Expr _c_96 = new Expr (Symbol.newWord ("STATIC"));
     132  static  final Expr _c_97 = Expr.fromSequence (" final Expr ");
     133  static  final Expr _c_98 = new Expr (Symbol.newWord ("OBJ"));
     134  static  final Expr _c_99 = Expr.fromSequence ("\"));");
     135  static  final Expr _c_100 = _c_9.subexpr (20, 3);
     136  static  final Expr _c_101 = Expr.fromSequence (" = new Expr (Symbol.new");
     137  static  final Expr _c_102 = new Expr (Symbol.newWord ("DECL-OBJ"));
     138  static  final Expr _c_103 = new Expr (Symbol.newWord ("DECL-FUNC"));
     139  static  final Expr _c_104 = new Expr (Symbol.newWord ("TAILCALL?"));
     140  static  final Expr _c_106 = Expr.fromSequence ("if (!");
     141  static  final Expr _c_107 = _c_212.subexpr (16, 12);
     142  static  final Expr _c_109 = Expr.fromSequence ("Expr.empty");
     143  static  final Expr _c_110 = new Expr (Symbol.newWord ("PAREN"));
     144  static  final Expr _c_111 = Expr.fromSequence ("new Expr ((Comparable<?>) ");
     145  static  final Expr _c_112 = _c_63.subexpr (1, 2);
     146  static  final Expr _c_113 = Expr.fromSequence ("Expr.concat (");
     147  static  final Expr _c_114 = new Expr (new Func () {
    147148    public boolean eval (Expr arg, Result res) throws RefalException {
    148149      return Term_Ref_To_Java_0 (arg, res);
    149150    }
    150151  });
    151   static  final Expr _c_114 = new Expr (new Func () {
     152  static  final Expr _c_115 = new Expr (new Func () {
    152153    public boolean eval (Expr arg, Result res) throws RefalException {
    153154      return ToRight_0 (arg, res);
    154155    }
    155156  });
    156   static  final Expr _c_115 = Expr.fromSequence (".yield ()");
    157   static  final Expr _c_116 = Expr.fromSequence ("Expr.getConcatenator ()");
    158   static  final Expr _c_117 = _c_110.subexpr (10, 16);
    159   static  final Expr _c_118 = new Expr (Symbol.newWord ("DEREF"));
    160   static  final Expr _c_119 = Expr.fromSequence (".at (");
    161   static  final Expr _c_120 = Expr.fromSequence ("(Expr) ");
    162   static  final Expr _c_121 = new Expr (Symbol.newWord ("SUBEXPR"));
    163   static  final Expr _c_122 = Expr.fromSequence (".subexpr (");
    164   static  final Expr _c_123 = new Expr (Symbol.newWord ("REF"));
    165   static  final Expr _c_124 = new Expr (Symbol.newWord ("ERROR-EXPR"));
    166   static  final Expr _c_125 = _c_61.subexpr (44, 3);
    167   static  final Expr _c_126 = new Expr (Symbol.newWord ("Illegal int-symbol: "));
    168   static  final Expr _c_127 = new Expr (Symbol.newWord ("LENGTH"));
    169   static  final Expr _c_128 = Expr.fromSequence (".length ()");
    170   static  final Expr _c_129 = new Expr (Symbol.newWord ("MAX"));
    171   static  final Expr _c_130 = Expr.fromSequence ("java.lang.Math.max (");
    172   static  final Expr _c_131 = new Expr (Symbol.newWord ("MIN"));
    173   static  final Expr _c_132 = Expr.fromSequence ("java.lang.Math.min (");
    174   static  final Expr _c_133 = new Expr (Symbol.newWord ("INFIX"));
    175   static  final Expr _c_134 = new Expr (new Func () {
     157  static  final Expr _c_116 = Expr.fromSequence (".yield ()");
     158  static  final Expr _c_117 = Expr.fromSequence ("Expr.getConcatenator ()");
     159  static  final Expr _c_118 = _c_111.subexpr (10, 16);
     160  static  final Expr _c_119 = new Expr (Symbol.newWord ("DEREF"));
     161  static  final Expr _c_120 = Expr.fromSequence (".at (");
     162  static  final Expr _c_121 = Expr.fromSequence ("(Expr) ");
     163  static  final Expr _c_122 = new Expr (Symbol.newWord ("SUBEXPR"));
     164  static  final Expr _c_123 = Expr.fromSequence (".subexpr (");
     165  static  final Expr _c_124 = new Expr (Symbol.newWord ("REF"));
     166  static  final Expr _c_125 = new Expr (Symbol.newWord ("ERROR-EXPR"));
     167  static  final Expr _c_126 = _c_62.subexpr (44, 3);
     168  static  final Expr _c_127 = new Expr (Symbol.newWord ("Illegal int-symbol: "));
     169  static  final Expr _c_128 = new Expr (Symbol.newWord ("LENGTH"));
     170  static  final Expr _c_129 = Expr.fromSequence (".length ()");
     171  static  final Expr _c_130 = new Expr (Symbol.newWord ("MAX"));
     172  static  final Expr _c_131 = Expr.fromSequence ("java.lang.Math.max (");
     173  static  final Expr _c_132 = new Expr (Symbol.newWord ("MIN"));
     174  static  final Expr _c_133 = Expr.fromSequence ("java.lang.Math.min (");
     175  static  final Expr _c_134 = new Expr (Symbol.newWord ("INFIX"));
     176  static  final Expr _c_135 = new Expr (new Func () {
    176177    public boolean eval (Expr arg, Result res) throws RefalException {
    177178      Expr_Int_To_Java (arg, res);
     
    179180    }
    180181  });
    181   static  final Expr _c_135 = _c_39.subexpr (1, 1);
    182   static  final Expr _c_136 = new Expr (Symbol.newWord ("+"));
    183   static  final Expr _c_137 = new Expr (Symbol.newWord ("CALL"));
    184   static  final Expr _c_138 = _c_105.subexpr (4, 1);
    185   static  final Expr _c_139 = new Expr (Symbol.newWord ("ITER-FAILS"));
    186   static  final Expr _c_140 = new Expr (Symbol.newInt ("0"));
    187   static  final Expr _c_141 = new Expr (Symbol.newInt ("2"));
    188   static  final Expr _c_142 = Expr.fromSequence (".isValid ()");
    189   static  final Expr _c_143 = new Expr (Symbol.newWord ("SYMBOL?"));
    190   static  final Expr _c_144 = Expr.fromSequence (".isSymbolAt (");
    191   static  final Expr _c_145 = new Expr (Symbol.newWord ("EQ"));
    192   static  final Expr _c_146 = Expr.fromSequence (".equals (");
    193   static  final Expr _c_147 = new Expr (Symbol.newWord ("TERM-EQ"));
    194   static  final Expr _c_148 = Expr.fromSequence (".termEquals (");
    195   static  final Expr _c_149 = new Expr (Symbol.newWord ("NOT"));
    196   static  final Expr _c_150 = Expr.fromSequence (".next ()");
    197   static  final Expr _c_151 = Expr.fromSequence (".prev ()");
    198   static  final Expr _c_152 = _c_117.subexpr (0, 15);
    199   static  final Expr _c_161 = Expr.fromSequence ("new Func () {");
    200   static  final Expr _c_153 = _c_161.subexpr (0, 8);
    201   static  final Expr _c_154 = _c_100.subexpr (13, 10);
    202   static  final Expr _c_155 = _c_100.subexpr (3, 10);
    203   static  final Expr _c_156 = _c_116.subexpr (0, 22);
    204   static  final Expr _c_157 = Expr.fromSequence ("Expr.fromSequence (\"");
    205   static  final Expr _c_158 = Expr.fromSequence (" (arg, res);");
    206   static  final Expr _c_159 = _c_212.subexpr (0, 7);
    207   static  final Expr _c_162 = Expr.fromSequence ("Symbol.newInt (\"");
    208   static  final Expr _c_163 = Expr.fromSequence ("Symbol.newWord (\"");
    209   static  final Expr _c_164 = _c_24.subexpr (0, 1);
    210   static  final Expr _c_165 = Expr.fromSequence ("\\\\");
    211   static  final Expr _c_166 = Expr.fromSequence ("\n");
    212   static  final Expr _c_167 = Expr.fromSequence ("\\n");
    213   static  final Expr _c_168 = Expr.fromSequence ("\t");
    214   static  final Expr _c_169 = Expr.fromSequence ("\\t");
    215   static  final Expr _c_170 = Expr.fromSequence ("\r");
    216   static  final Expr _c_171 = Expr.fromSequence ("\\r");
    217   static  final Expr _c_172 = _c_106.subexpr (0, 11);
    218   static  final Expr _c_173 = new Expr (Symbol.newWord ("EXPORT"));
    219   static  final Expr _c_174 = _c_160.subexpr (0, 6);
    220   static  final Expr _c_175 = new Expr (Symbol.newInt ("1"));
    221   static  final Expr _c_176 = new Expr (Symbol.newWord ("SVAR"));
    222   static  final Expr _c_177 = new Expr (Symbol.newWord ("boolean"));
    223   static  final Expr _c_178 = new Expr (Symbol.newWord ("char"));
    224   static  final Expr _c_179 = new Expr (Symbol.newWord ("byte"));
    225   static  final Expr _c_180 = new Expr (Symbol.newWord ("short"));
    226   static  final Expr _c_181 = new Expr (Symbol.newWord ("int"));
    227   static  final Expr _c_182 = new Expr (Symbol.newWord ("long"));
    228   static  final Expr _c_186 = Expr.fromSequence (".at(0)))");
    229   static  final Expr _c_183 = _c_186.subexpr (0, 7);
    230   static  final Expr _c_187 = Expr.fromSequence (") Native.objectValue(");
    231   static  final Expr _c_184 = _c_187.subexpr (15, 6);
    232   static  final Expr _c_185 = _c_187.subexpr (2, 7);
    233   static  final Expr _c_188 = _c_110.subexpr (9, 2);
    234   static  final Expr _c_189 = new Expr (Symbol.newWord ("EVAR"));
    235   static  final Expr _c_190 = _c_18.subexpr (47, 2);
    236   static  final Expr _c_195 = Expr.fromSequence (") Native.objectArrayValue(");
    237   static  final Expr _c_191 = _c_195.subexpr (15, 11);
    238   static  final Expr _c_192 = Expr.fromSequence (".length()]))");
    239   static  final Expr _c_193 = _c_190.subexpr (0, 1);
    240   static  final Expr _c_194 = Expr.fromSequence (", new ");
    241   static  final Expr _c_196 = Expr.fromSequence ("Native.sValueOf(");
    242   static  final Expr _c_197 = Expr.fromSequence ("Native.eValueOf(");
    243   static  final Expr _c_198 = _c_158.subexpr (2, 3);
    244   static  final Expr _c_199 = _c_158.subexpr (7, 3);
    245   static  final Expr _c_200 = new Expr (Symbol.newWord (""));
    246   static  final Expr _c_201 = _c_10.subexpr (2, 4);
    247   static  final Expr _c_202 = Expr.fromSequence (".assign(");
    248   static  final Expr _c_203 = Expr.fromSequence ("\", e.toString());");
    249   static  final Expr _c_204 = Expr.fromSequence ("throw new org.refal.plus.RefalException(\"");
    250   static  final Expr _c_205 = Expr.fromSequence ("} catch (java.lang.Exception e) {");
    251   static  final Expr _c_206 = _c_160.subexpr (41, 25);
    252   static  final Expr _c_207 = _c_18.subexpr (13, 6);
    253   static  final Expr _c_208 = Expr.getConcatenator (3).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Unexpected fail")).yield ();
    254   static  final Expr _c_209 = Expr.fromSequence (".toRight (");
     182  static  final Expr _c_136 = _c_40.subexpr (1, 1);
     183  static  final Expr _c_137 = new Expr (Symbol.newWord ("+"));
     184  static  final Expr _c_138 = new Expr (Symbol.newWord ("CALL"));
     185  static  final Expr _c_139 = _c_106.subexpr (4, 1);
     186  static  final Expr _c_140 = new Expr (Symbol.newWord ("ITER-FAILS"));
     187  static  final Expr _c_141 = new Expr (Symbol.newInt ("0"));
     188  static  final Expr _c_142 = new Expr (Symbol.newInt ("2"));
     189  static  final Expr _c_143 = Expr.fromSequence (".isValid ()");
     190  static  final Expr _c_144 = new Expr (Symbol.newWord ("SYMBOL?"));
     191  static  final Expr _c_145 = Expr.fromSequence (".isSymbolAt (");
     192  static  final Expr _c_146 = new Expr (Symbol.newWord ("EQ"));
     193  static  final Expr _c_147 = Expr.fromSequence (".equals (");
     194  static  final Expr _c_148 = new Expr (Symbol.newWord ("TERM-EQ"));
     195  static  final Expr _c_149 = Expr.fromSequence (".termEquals (");
     196  static  final Expr _c_150 = new Expr (Symbol.newWord ("NOT"));
     197  static  final Expr _c_151 = Expr.fromSequence (".next ()");
     198  static  final Expr _c_152 = Expr.fromSequence (".prev ()");
     199  static  final Expr _c_153 = _c_118.subexpr (0, 15);
     200  static  final Expr _c_162 = Expr.fromSequence ("new Func () {");
     201  static  final Expr _c_154 = _c_162.subexpr (0, 8);
     202  static  final Expr _c_155 = _c_101.subexpr (13, 10);
     203  static  final Expr _c_156 = _c_101.subexpr (3, 10);
     204  static  final Expr _c_157 = _c_117.subexpr (0, 22);
     205  static  final Expr _c_158 = Expr.fromSequence ("Expr.fromSequence (\"");
     206  static  final Expr _c_159 = Expr.fromSequence (" (arg, res);");
     207  static  final Expr _c_160 = _c_213.subexpr (0, 7);
     208  static  final Expr _c_163 = Expr.fromSequence ("Symbol.newInt (\"");
     209  static  final Expr _c_164 = Expr.fromSequence ("Symbol.newWord (\"");
     210  static  final Expr _c_165 = _c_24.subexpr (0, 1);
     211  static  final Expr _c_166 = Expr.fromSequence ("\\\\");
     212  static  final Expr _c_167 = Expr.fromSequence ("\n");
     213  static  final Expr _c_168 = Expr.fromSequence ("\\n");
     214  static  final Expr _c_169 = Expr.fromSequence ("\t");
     215  static  final Expr _c_170 = Expr.fromSequence ("\\t");
     216  static  final Expr _c_171 = Expr.fromSequence ("\r");
     217  static  final Expr _c_172 = Expr.fromSequence ("\\r");
     218  static  final Expr _c_173 = _c_107.subexpr (0, 11);
     219  static  final Expr _c_174 = new Expr (Symbol.newWord ("EXPORT"));
     220  static  final Expr _c_175 = _c_161.subexpr (0, 6);
     221  static  final Expr _c_176 = new Expr (Symbol.newInt ("1"));
     222  static  final Expr _c_177 = new Expr (Symbol.newWord ("SVAR"));
     223  static  final Expr _c_178 = new Expr (Symbol.newWord ("boolean"));
     224  static  final Expr _c_179 = new Expr (Symbol.newWord ("char"));
     225  static  final Expr _c_180 = new Expr (Symbol.newWord ("byte"));
     226  static  final Expr _c_181 = new Expr (Symbol.newWord ("short"));
     227  static  final Expr _c_182 = new Expr (Symbol.newWord ("int"));
     228  static  final Expr _c_183 = new Expr (Symbol.newWord ("long"));
     229  static  final Expr _c_187 = Expr.fromSequence (".at(0)))");
     230  static  final Expr _c_184 = _c_187.subexpr (0, 7);
     231  static  final Expr _c_188 = Expr.fromSequence (") Native.objectValue(");
     232  static  final Expr _c_185 = _c_188.subexpr (15, 6);
     233  static  final Expr _c_186 = _c_188.subexpr (2, 7);
     234  static  final Expr _c_189 = _c_111.subexpr (9, 2);
     235  static  final Expr _c_190 = new Expr (Symbol.newWord ("EVAR"));
     236  static  final Expr _c_191 = _c_18.subexpr (47, 2);
     237  static  final Expr _c_196 = Expr.fromSequence (") Native.objectArrayValue(");
     238  static  final Expr _c_192 = _c_196.subexpr (15, 11);
     239  static  final Expr _c_193 = Expr.fromSequence (".length()]))");
     240  static  final Expr _c_194 = _c_191.subexpr (0, 1);
     241  static  final Expr _c_195 = Expr.fromSequence (", new ");
     242  static  final Expr _c_197 = Expr.fromSequence ("Native.sValueOf(");
     243  static  final Expr _c_198 = Expr.fromSequence ("Native.eValueOf(");
     244  static  final Expr _c_199 = _c_159.subexpr (2, 3);
     245  static  final Expr _c_200 = _c_159.subexpr (7, 3);
     246  static  final Expr _c_201 = new Expr (Symbol.newWord (""));
     247  static  final Expr _c_202 = _c_10.subexpr (2, 4);
     248  static  final Expr _c_203 = Expr.fromSequence (".assign(");
     249  static  final Expr _c_204 = Expr.fromSequence ("\", e.toString());");
     250  static  final Expr _c_205 = Expr.fromSequence ("throw new org.refal.plus.RefalException(\"");
     251  static  final Expr _c_206 = Expr.fromSequence ("} catch (java.lang.Exception e) {");
     252  static  final Expr _c_207 = _c_161.subexpr (41, 25);
     253  static  final Expr _c_208 = _c_18.subexpr (13, 6);
     254  static  final Expr _c_209 = Expr.getConcatenator (3).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Apply")).toRight (Symbol.newWord ("Unexpected fail")).yield ();
     255  static  final Expr _c_210 = Expr.fromSequence (".toRight (");
    255256
    256257  @RefalFormat("$func RFP_ASAIL_To_Java t = (e) (e);")
     
    571572            }
    572573            Expr _v_deref__item2 = (Expr) _vt_item.at (0);
    573             int _v_len5 = _v_deref__item2.length ();
     574            if (_v_deref__item2.length () != 2)
     575            {
     576              break _block2__branch2;
     577            }
     578            if (!_c_28.termEquals (_v_deref__item2, 0))
     579            {
     580              break _block2__branch2;
     581            }
     582            if (!_v_deref__item2.isSymbolAt ((0 + 1)))
     583            {
     584              break _block2__branch2;
     585            }
     586            Expr _vs_N = Expr.empty;
     587            _vs_N = _v_deref__item2.subexpr ((0 + 1), 1);
     588            _ve_java__item = Expr.empty;
     589            break _block2;
     590          }
     591          _block2__branch3: {
     592            if (_vt_item.isSymbolAt (0))
     593            {
     594              break _block2__branch3;
     595            }
     596            Expr _v_deref__item3 = (Expr) _vt_item.at (0);
     597            int _v_len5 = _v_deref__item3.length ();
    574598            int _v_len6 = 6;
    575599            if (_v_len5 < _v_len6)
    576600            {
    577               break _block2__branch2;
     601              break _block2__branch3;
    578602            }
    579603            int _v_len__native = (_v_len5 - _v_len6);
    580             if (_v_deref__item2.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    581             {
    582               break _block2__branch2;
    583             }
    584             if (_v_deref__item2.isSymbolAt ((0 + 1 + 1 + 1 + 1 + 1)))
    585             {
    586               break _block2__branch2;
    587             }
    588             Expr _v_deref__deref__item2 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1));
    589             Expr _v_deref__deref__item22 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1 + 1));
    590             int _v_len7 = _v_deref__deref__item2.length ();
     604            if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     605            {
     606              break _block2__branch3;
     607            }
     608            if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1 + 1 + 1)))
     609            {
     610              break _block2__branch3;
     611            }
     612            Expr _v_deref__deref__item3 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1 + 1));
     613            Expr _v_deref__deref__item32 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1 + 1 + 1));
     614            int _v_len7 = _v_deref__deref__item3.length ();
    591615            int _v_len8 = 0;
    592616            if (_v_len7 < _v_len8)
    593617            {
    594               break _block2__branch2;
     618              break _block2__branch3;
    595619            }
    596620            int _v_len__in = (_v_len7 - _v_len8);
    597             int _v_len9 = _v_deref__deref__item22.length ();
     621            int _v_len9 = _v_deref__deref__item32.length ();
    598622            int _v_len10 = 0;
    599623            if (_v_len9 < _v_len10)
    600624            {
    601               break _block2__branch2;
     625              break _block2__branch3;
    602626            }
    603627            int _v_len__out = (_v_len9 - _v_len10);
    604             if (!_c_28.termEquals (_v_deref__item2, 0))
    605             {
    606               break _block2__branch2;
    607             }
    608             if (!_v_deref__item2.isSymbolAt ((0 + 1)))
    609             {
    610               break _block2__branch2;
    611             }
    612             if (!_v_deref__item2.isSymbolAt ((0 + 1 + 1)))
    613             {
    614               break _block2__branch2;
     628            if (!_c_29.termEquals (_v_deref__item3, 0))
     629            {
     630              break _block2__branch3;
     631            }
     632            if (!_v_deref__item3.isSymbolAt ((0 + 1)))
     633            {
     634              break _block2__branch3;
     635            }
     636            if (!_v_deref__item3.isSymbolAt ((0 + 1 + 1)))
     637            {
     638              break _block2__branch3;
    615639            }
    616640            Expr _vs_linkage = Expr.empty;
    617             _vs_linkage = _v_deref__item2.subexpr ((0 + 1), 1);
     641            _vs_linkage = _v_deref__item3.subexpr ((0 + 1), 1);
    618642            Expr _vs_tag = Expr.empty;
    619             _vs_tag = _v_deref__item2.subexpr ((0 + 1 + 1), 1);
     643            _vs_tag = _v_deref__item3.subexpr ((0 + 1 + 1), 1);
    620644            Expr _vt_qname = Expr.empty;
    621             _vt_qname = _v_deref__item2.subexpr ((0 + 1 + 1 + 1), 1);
     645            _vt_qname = _v_deref__item3.subexpr ((0 + 1 + 1 + 1), 1);
    622646            Expr _ve_native = Expr.empty;
    623             _ve_native = _v_deref__item2.subexpr ((0 + 1 + 1 + 1 + 1 + 1 + 1), _v_len__native);
     647            _ve_native = _v_deref__item3.subexpr ((0 + 1 + 1 + 1 + 1 + 1 + 1), _v_len__native);
    624648            Expr _ve_in = Expr.empty;
    625             _ve_in = _v_deref__deref__item2.subexpr (0, _v_len__in);
     649            _ve_in = _v_deref__deref__item3.subexpr (0, _v_len__in);
    626650            Expr _ve_out = Expr.empty;
    627             _ve_out = _v_deref__deref__item22.subexpr (0, _v_len__out);
     651            _ve_out = _v_deref__deref__item32.subexpr (0, _v_len__out);
    628652            Result _va_3 = new Result ();
    629653            WrapGen (_vs_linkage, _vs_tag, _vt_qname, _ve_in, _ve_out, _ve_native, _va_3);
     
    631655            break _block2;
    632656          }
    633           _block2__branch3: {
     657          _block2__branch4: {
    634658            if (_vt_item.isSymbolAt (0))
    635659            {
    636               break _block2__branch3;
    637             }
    638             Expr _v_deref__item3 = (Expr) _vt_item.at (0);
    639             int _v_len11 = _v_deref__item3.length ();
     660              break _block2__branch4;
     661            }
     662            Expr _v_deref__item4 = (Expr) _vt_item.at (0);
     663            int _v_len11 = _v_deref__item4.length ();
    640664            int _v_len12 = 5;
    641665            if (_v_len11 < _v_len12)
    642666            {
    643               break _block2__branch3;
     667              break _block2__branch4;
    644668            }
    645669            int _v_len__body = (_v_len11 - _v_len12);
    646             if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1)))
    647             {
    648               break _block2__branch3;
    649             }
    650             if (_v_deref__item3.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    651             {
    652               break _block2__branch3;
    653             }
    654             Expr _v_deref__deref__item3 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1));
    655             Expr _v_deref__deref__item32 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + 1 + 1));
    656             int _v_len13 = _v_deref__deref__item3.length ();
     670            if (_v_deref__item4.isSymbolAt ((0 + 1 + 1 + 1)))
     671            {
     672              break _block2__branch4;
     673            }
     674            if (_v_deref__item4.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     675            {
     676              break _block2__branch4;
     677            }
     678            Expr _v_deref__deref__item4 = (Expr) _v_deref__item4.at ((0 + 1 + 1 + 1));
     679            Expr _v_deref__deref__item42 = (Expr) _v_deref__item4.at ((0 + 1 + 1 + 1 + 1));
     680            int _v_len13 = _v_deref__deref__item4.length ();
    657681            int _v_len14 = 0;
    658682            if (_v_len13 < _v_len14)
    659683            {
    660               break _block2__branch3;
     684              break _block2__branch4;
    661685            }
    662686            int _v_len__args = (_v_len13 - _v_len14);
    663             int _v_len15 = _v_deref__deref__item32.length ();
     687            int _v_len15 = _v_deref__deref__item42.length ();
    664688            int _v_len16 = 0;
    665689            if (_v_len15 < _v_len16)
    666690            {
    667               break _block2__branch3;
     691              break _block2__branch4;
    668692            }
    669693            int _v_len__ress = (_v_len15 - _v_len16);
    670             if (!_v_deref__item3.isSymbolAt (0))
    671             {
    672               break _block2__branch3;
    673             }
    674             if (!_v_deref__item3.isSymbolAt ((0 + 1)))
    675             {
    676               break _block2__branch3;
     694            if (!_v_deref__item4.isSymbolAt (0))
     695            {
     696              break _block2__branch4;
     697            }
     698            if (!_v_deref__item4.isSymbolAt ((0 + 1)))
     699            {
     700              break _block2__branch4;
    677701            }
    678702            Expr _vs_tag = Expr.empty;
    679             _vs_tag = _v_deref__item3.subexpr (0, 1);
     703            _vs_tag = _v_deref__item4.subexpr (0, 1);
    680704            Expr _vs_linkage = Expr.empty;
    681             _vs_linkage = _v_deref__item3.subexpr ((0 + 1), 1);
     705            _vs_linkage = _v_deref__item4.subexpr ((0 + 1), 1);
    682706            Expr _vt_name = Expr.empty;
    683             _vt_name = _v_deref__item3.subexpr ((0 + 1 + 1), 1);
     707            _vt_name = _v_deref__item4.subexpr ((0 + 1 + 1), 1);
    684708            Expr _ve_body = Expr.empty;
    685             _ve_body = _v_deref__item3.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body);
     709            _ve_body = _v_deref__item4.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body);
    686710            Expr _ve_args = Expr.empty;
    687             _ve_args = _v_deref__deref__item3.subexpr (0, _v_len__args);
     711            _ve_args = _v_deref__deref__item4.subexpr (0, _v_len__args);
    688712            Expr _ve_ress = Expr.empty;
    689             _ve_ress = _v_deref__deref__item32.subexpr (0, _v_len__ress);
     713            _ve_ress = _v_deref__deref__item42.subexpr (0, _v_len__ress);
    690714            Expr _ve_return__type = Expr.empty;
    691715            Expr _ve_return = Expr.empty;
    692716            _block3: {
    693717              _block3__branch1: {
    694                 if (!_vs_tag.termEquals (_c_29, 0))
     718                if (!_vs_tag.termEquals (_c_30, 0))
    695719                {
    696720                  break _block3__branch1;
    697721                }
    698                 _ve_return__type = _c_30;
     722                _ve_return__type = _c_31;
    699723                _ve_return = Expr.empty;
    700724                break _block3;
    701725              }
    702               if (!_vs_tag.termEquals (_c_31, 0))
     726              if (!_vs_tag.termEquals (_c_32, 0))
    703727              {
    704                 break _block2__branch3;
     728                break _block2__branch4;
    705729              }
    706               _ve_return__type = _c_32;
    707               _ve_return = _c_33;
     730              _ve_return__type = _c_33;
     731              _ve_return = _c_34;
    708732            }
    709733            refal.plus.Box.Store (Ress, _ve_ress);
     
    720744                _exit1: _continue1: for ( ; ; _va_4.next ())
    721745                {
    722                   Expr _ve__dollar_tmp_m_131_m_25 = _va_4.getLeft();
     746                  Expr _ve__dollar_tmp_m_132_m_25 = _va_4.getLeft();
    723747                  Expr _v_lsplit__Get1 = _va_4.getRight();
    724748                  if (!_va_4.isValid ())
     
    732756                    break _block4__branch1;
    733757                  }
    734                   int _v_len___dollar_tmp_m_131_m_34 = (_v_len17 - _v_len18);
     758                  int _v_len___dollar_tmp_m_132_m_34 = (_v_len17 - _v_len18);
    735759                  if (!_vt_name.termEquals (_v_lsplit__Get1, 0))
    736760                  {
    737761                    continue _continue1;
    738762                  }
    739                   Expr _ve__dollar_tmp_m_131_m_34 = Expr.empty;
    740                   _ve__dollar_tmp_m_131_m_34 = _v_lsplit__Get1.subexpr ((0 + 1), _v_len___dollar_tmp_m_131_m_34);
     763                  Expr _ve__dollar_tmp_m_132_m_34 = Expr.empty;
     764                  _ve__dollar_tmp_m_132_m_34 = _v_lsplit__Get1.subexpr ((0 + 1), _v_len___dollar_tmp_m_132_m_34);
    741765                  refal.plus.Box.Store (Entry_Name, _vt_name);
    742766                  break _exit1;
     
    758782                Result _gs_auxcall3 = new Result (Expr.empty);
    759783                ReplaceQuotes (_gs_auxcall2.getExpr (), _gs_auxcall3);
    760                 _ve_refalFormat = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_35).toRight (_gs_auxcall3.getExpr ()).toRight (_c_34).yield ());
     784                _ve_refalFormat = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_36).toRight (_gs_auxcall3.getExpr ()).toRight (_c_35).yield ());
    761785                break _block5;
    762786              }
     
    768792            refal.plus.Box.Get (Func_Name, _ge_auxcall5);
    769793            Result _ge_auxcall6 = new Result (Expr.empty);
    770             Var_Args_To_Java (Expr.getConcatenator ().toRight (_c_37).toRight (_ve_args).toRight (_c_36).toRight (_ve_ress).yield (), _ge_auxcall6);
     794            Var_Args_To_Java (Expr.getConcatenator ().toRight (_c_38).toRight (_ve_args).toRight (_c_37).toRight (_ve_ress).yield (), _ge_auxcall6);
    771795            Result _ge_auxcall7 = new Result (Expr.empty);
    772796            ASAIL_To_Java (_ve_body, _ge_auxcall7);
    773             _ve_java__item = Expr.getConcatenator ().toRight (_c_19).toRight (_ve_refalFormat).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_41).toRight (_ge_auxcall4.getExpr ()).toRight (_c_40).toRight (_ve_return__type).toRight (_c_40).toRight (_ge_auxcall5.getExpr ()).toRight (_c_39).toRight (_ge_auxcall6.getExpr ()).toRight (_c_38).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight ((Comparable<?>) Expr.concat (_ge_auxcall7.getExpr (), _ve_return)).toRight (_c_14).yield ()).yield ();
     797            _ve_java__item = Expr.getConcatenator ().toRight (_c_19).toRight (_ve_refalFormat).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight (_ge_auxcall4.getExpr ()).toRight (_c_41).toRight (_ve_return__type).toRight (_c_41).toRight (_ge_auxcall5.getExpr ()).toRight (_c_40).toRight (_ge_auxcall6.getExpr ()).toRight (_c_39).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.concat (_ge_auxcall7.getExpr (), _ve_return)).toRight (_c_14).yield ()).yield ();
    774798            break _block2;
    775799          }
    776           _block2__branch4: {
     800          _block2__branch5: {
    777801            if (_vt_item.isSymbolAt (0))
    778802            {
    779               break _block2__branch4;
    780             }
    781             Expr _v_deref__item4 = (Expr) _vt_item.at (0);
    782             if (_v_deref__item4.length () != 2)
    783             {
    784               break _block2__branch4;
    785             }
    786             if (!_c_43.termEquals (_v_deref__item4, 0))
    787             {
    788               break _block2__branch4;
     803              break _block2__branch5;
     804            }
     805            Expr _v_deref__item5 = (Expr) _vt_item.at (0);
     806            if (_v_deref__item5.length () != 2)
     807            {
     808              break _block2__branch5;
     809            }
     810            if (!_c_44.termEquals (_v_deref__item5, 0))
     811            {
     812              break _block2__branch5;
    789813            }
    790814            Expr _vt_name = Expr.empty;
    791             _vt_name = _v_deref__item4.subexpr ((0 + 1), 1);
     815            _vt_name = _v_deref__item5.subexpr ((0 + 1), 1);
    792816            refal.plus.Table.Bind (rfpc.RFP_Trace, _vt_name, Expr.empty);
    793817            _ve_java__item = Expr.empty;
    794818            break _block2;
    795819          }
    796           _block2__branch5: {
     820          _block2__branch6: {
    797821            if (_vt_item.isSymbolAt (0))
    798822            {
    799               break _block2__branch5;
    800             }
    801             Expr _v_deref__item5 = (Expr) _vt_item.at (0);
    802             int _v_len19 = _v_deref__item5.length ();
     823              break _block2__branch6;
     824            }
     825            Expr _v_deref__item6 = (Expr) _vt_item.at (0);
     826            int _v_len19 = _v_deref__item6.length ();
    803827            int _v_len20 = 4;
    804828            if (_v_len19 < _v_len20)
    805829            {
    806               break _block2__branch5;
     830              break _block2__branch6;
    807831            }
    808832            int _v_len__body2 = (_v_len19 - _v_len20);
    809             if (_v_deref__item5.isSymbolAt ((0 + 1 + 1)))
    810             {
    811               break _block2__branch5;
    812             }
    813             if (_v_deref__item5.isSymbolAt ((0 + 1 + 1 + 1)))
    814             {
    815               break _block2__branch5;
    816             }
    817             Expr _v_deref__deref__item5 = (Expr) _v_deref__item5.at ((0 + 1 + 1));
    818             Expr _v_deref__deref__item52 = (Expr) _v_deref__item5.at ((0 + 1 + 1 + 1));
    819             int _v_len21 = _v_deref__deref__item5.length ();
     833            if (_v_deref__item6.isSymbolAt ((0 + 1 + 1)))
     834            {
     835              break _block2__branch6;
     836            }
     837            if (_v_deref__item6.isSymbolAt ((0 + 1 + 1 + 1)))
     838            {
     839              break _block2__branch6;
     840            }
     841            Expr _v_deref__deref__item6 = (Expr) _v_deref__item6.at ((0 + 1 + 1));
     842            Expr _v_deref__deref__item62 = (Expr) _v_deref__item6.at ((0 + 1 + 1 + 1));
     843            int _v_len21 = _v_deref__deref__item6.length ();
    820844            int _v_len22 = 0;
    821845            if (_v_len21 < _v_len22)
    822846            {
    823               break _block2__branch5;
     847              break _block2__branch6;
    824848            }
    825849            int _v_len__arg1 = (_v_len21 - _v_len22);
    826             int _v_len23 = _v_deref__deref__item52.length ();
     850            int _v_len23 = _v_deref__deref__item62.length ();
    827851            int _v_len24 = 0;
    828852            if (_v_len23 < _v_len24)
    829853            {
    830               break _block2__branch5;
     854              break _block2__branch6;
    831855            }
    832856            int _v_len__arg2 = (_v_len23 - _v_len24);
    833             if (!_c_44.termEquals (_v_deref__item5, 0))
    834             {
    835               break _block2__branch5;
    836             }
    837             if (!_v_deref__item5.isSymbolAt ((0 + 1)))
    838             {
    839               break _block2__branch5;
     857            if (!_c_45.termEquals (_v_deref__item6, 0))
     858            {
     859              break _block2__branch6;
     860            }
     861            if (!_v_deref__item6.isSymbolAt ((0 + 1)))
     862            {
     863              break _block2__branch6;
    840864            }
    841865            Expr _vs_op = Expr.empty;
    842             _vs_op = _v_deref__item5.subexpr ((0 + 1), 1);
     866            _vs_op = _v_deref__item6.subexpr ((0 + 1), 1);
    843867            Expr _ve_body = Expr.empty;
    844             _ve_body = _v_deref__item5.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__body2);
     868            _ve_body = _v_deref__item6.subexpr ((0 + 1 + 1 + 1 + 1), _v_len__body2);
    845869            Expr _ve_arg1 = Expr.empty;
    846             _ve_arg1 = _v_deref__deref__item5.subexpr (0, _v_len__arg1);
     870            _ve_arg1 = _v_deref__deref__item6.subexpr (0, _v_len__arg1);
    847871            Expr _ve_arg2 = Expr.empty;
    848             _ve_arg2 = _v_deref__deref__item52.subexpr (0, _v_len__arg2);
     872            _ve_arg2 = _v_deref__deref__item62.subexpr (0, _v_len__arg2);
    849873            Result _ge_auxcall8 = new Result (Expr.empty);
    850874            Expr_Int_To_Java (_ve_arg1, _ge_auxcall8);
    851875            Result _v_Expr__Int__To__Java1 = new Result (Expr.empty);
    852876            Expr_Int_To_Java (_ve_arg2, _v_Expr__Int__To__Java1);
    853             Expr _ve_cond = Expr.getConcatenator ().toRight (_ge_auxcall8.getExpr ()).toRight (_c_40).toRight (_vs_op).toRight (_c_40).toRight (_v_Expr__Int__To__Java1.getExpr ()).yield ();
     877            Expr _ve_cond = Expr.getConcatenator ().toRight (_ge_auxcall8.getExpr ()).toRight (_c_41).toRight (_vs_op).toRight (_c_41).toRight (_v_Expr__Int__To__Java1.getExpr ()).yield ();
    854878            Result _ge_auxcall9 = new Result (Expr.empty);
    855879            ASAIL_To_Java (_ve_body, _ge_auxcall9);
    856             _ve_java__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_46).toRight (_ve_cond).toRight (_c_45).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight ((Comparable<?>) _ge_auxcall9.getExpr ()).toRight (_c_14).yield ());
     880            _ve_java__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_47).toRight (_ve_cond).toRight (_c_46).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) _ge_auxcall9.getExpr ()).toRight (_c_14).yield ());
    857881            break _block2;
    858882          }
    859           _block2__branch6: {
     883          _block2__branch7: {
    860884            if (_vt_item.isSymbolAt (0))
    861885            {
    862               break _block2__branch6;
    863             }
    864             Expr _v_deref__item6 = (Expr) _vt_item.at (0);
    865             int _v_len25 = _v_deref__item6.length ();
     886              break _block2__branch7;
     887            }
     888            Expr _v_deref__item7 = (Expr) _vt_item.at (0);
     889            int _v_len25 = _v_deref__item7.length ();
    866890            int _v_len26 = 2;
    867891            if (_v_len25 < _v_len26)
    868892            {
    869               break _block2__branch6;
     893              break _block2__branch7;
    870894            }
    871895            int _v_len__body3 = (_v_len25 - _v_len26);
    872             if (!_c_47.termEquals (_v_deref__item6, 0))
    873             {
    874               break _block2__branch6;
     896            if (!_c_48.termEquals (_v_deref__item7, 0))
     897            {
     898              break _block2__branch7;
    875899            }
    876900            Expr _vt_cond = Expr.empty;
    877             _vt_cond = _v_deref__item6.subexpr ((0 + 1), 1);
     901            _vt_cond = _v_deref__item7.subexpr ((0 + 1), 1);
    878902            Expr _ve_body = Expr.empty;
    879             _ve_body = _v_deref__item6.subexpr ((0 + 1 + 1), _v_len__body3);
     903            _ve_body = _v_deref__item7.subexpr ((0 + 1 + 1), _v_len__body3);
    880904            Result _vs_acc = new Result (Expr.empty);
    881905            refal.plus.Box.Box (Expr.empty, _vs_acc);
     
    897921                  break _block6__branch1;
    898922                }
    899                 int _v_len___dollar_tmp_m_149_m_33 = (_v_len27 - _v_len28);
    900                 if (!_c_48.termEquals (_v_deref__cond, 0))
     923                int _v_len___dollar_tmp_m_150_m_33 = (_v_len27 - _v_len28);
     924                if (!_c_49.termEquals (_v_deref__cond, 0))
    901925                {
    902926                  break _block6__branch1;
    903927                }
    904                 Expr _ve__dollar_tmp_m_149_m_33 = Expr.empty;
    905                 _ve__dollar_tmp_m_149_m_33 = _v_deref__cond.subexpr ((0 + 1), _v_len___dollar_tmp_m_149_m_33);
     928                Expr _ve__dollar_tmp_m_150_m_33 = Expr.empty;
     929                _ve__dollar_tmp_m_150_m_33 = _v_deref__cond.subexpr ((0 + 1), _v_len___dollar_tmp_m_150_m_33);
    906930                Result _ge_auxcall10 = new Result (Expr.empty);
    907931                refal.plus.Box.Get (Res_Assigns, _ge_auxcall10);
     
    921945            Result _ge_auxcall13 = new Result (Expr.empty);
    922946            ASAIL_To_Java (_ve_body, _ge_auxcall13);
    923             _ve_java__item = Expr.getConcatenator ().toRight (_ge_auxcall12.getExpr ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_46).toRight (_ve_j__cond.getExpr ()).toRight (_c_45).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight ((Comparable<?>) Expr.concat (_ve_if__yes__assigns, _ge_auxcall13.getExpr ())).toRight (_c_14).yield ()).toRight (_ve_if__not__assigns).yield ();
     947            _ve_java__item = Expr.getConcatenator ().toRight (_ge_auxcall12.getExpr ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_47).toRight (_ve_j__cond.getExpr ()).toRight (_c_46).yield ()).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.concat (_ve_if__yes__assigns, _ge_auxcall13.getExpr ())).toRight (_c_14).yield ()).toRight (_ve_if__not__assigns).yield ();
    924948            break _block2;
    925949          }
    926           _block2__branch7: {
     950          _block2__branch8: {
    927951            if (_vt_item.isSymbolAt (0))
    928952            {
    929               break _block2__branch7;
    930             }
    931             Expr _v_deref__item7 = (Expr) _vt_item.at (0);
    932             int _v_len29 = _v_deref__item7.length ();
     953              break _block2__branch8;
     954            }
     955            Expr _v_deref__item8 = (Expr) _vt_item.at (0);
     956            int _v_len29 = _v_deref__item8.length ();
    933957            int _v_len30 = 5;
    934958            if (_v_len29 < _v_len30)
    935959            {
    936               break _block2__branch7;
     960              break _block2__branch8;
    937961            }
    938962            int _v_len__body4 = (_v_len29 - _v_len30);
    939             if (_v_deref__item7.isSymbolAt ((0 + 1)))
    940             {
    941               break _block2__branch7;
    942             }
    943             if (_v_deref__item7.isSymbolAt ((0 + 1 + 1)))
    944             {
    945               break _block2__branch7;
    946             }
    947             if (_v_deref__item7.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
    948             {
    949               break _block2__branch7;
    950             }
    951             Expr _v_deref__deref__item7 = (Expr) _v_deref__item7.at ((0 + 1));
    952             Expr _v_deref__deref__item72 = (Expr) _v_deref__item7.at ((0 + 1 + 1));
    953             Expr _v_deref__deref__item73 = (Expr) _v_deref__item7.at ((0 + 1 + 1 + 1 + 1));
    954             int _v_len31 = _v_deref__deref__item7.length ();
     963            if (_v_deref__item8.isSymbolAt ((0 + 1)))
     964            {
     965              break _block2__branch8;
     966            }
     967            if (_v_deref__item8.isSymbolAt ((0 + 1 + 1)))
     968            {
     969              break _block2__branch8;
     970            }
     971            if (_v_deref__item8.isSymbolAt ((0 + 1 + 1 + 1 + 1)))
     972            {
     973              break _block2__branch8;
     974            }
     975            Expr _v_deref__deref__item8 = (Expr) _v_deref__item8.at ((0 + 1));
     976            Expr _v_deref__deref__item82 = (Expr) _v_deref__item8.at ((0 + 1 + 1));
     977            Expr _v_deref__deref__item83 = (Expr) _v_deref__item8.at ((0 + 1 + 1 + 1 + 1));
     978            int _v_len31 = _v_deref__deref__item8.length ();
    955979            int _v_len32 = 0;
    956980            if (_v_len31 < _v_len32)
    957981            {
    958               break _block2__branch7;
     982              break _block2__branch8;
    959983            }
    960984            int _v_len__cont__label = (_v_len31 - _v_len32);
    961             int _v_len33 = _v_deref__deref__item72.length ();
     985            int _v_len33 = _v_deref__deref__item82.length ();
    962986            int _v_len34 = 0;
    963987            if (_v_len33 < _v_len34)
    964988            {
    965               break _block2__branch7;
     989              break _block2__branch8;
    966990            }
    967991            int _v_len__break__label = (_v_len33 - _v_len34);
    968             int _v_len35 = _v_deref__deref__item73.length ();
     992            int _v_len35 = _v_deref__deref__item83.length ();
    969993            int _v_len36 = 0;
    970994            if (_v_len35 < _v_len36)
    971995            {
    972               break _block2__branch7;
     996              break _block2__branch8;
    973997            }
    974998            int _v_len__step = (_v_len35 - _v_len36);
    975             if (!_c_49.termEquals (_v_deref__item7, 0))
    976             {
    977               break _block2__branch7;
    978             }
    979             if (!_c_19.termEquals (_v_deref__item7, (0 + 1 + 1 + 1)))
    980             {
    981               break _block2__branch7;
     999            if (!_c_50.termEquals (_v_deref__item8, 0))
     1000            {
     1001              break _block2__branch8;
     1002            }
     1003            if (!_c_19.termEquals (_v_deref__item8, (0 + 1 + 1 + 1)))
     1004            {
     1005              break _block2__branch8;
    9821006            }
    9831007            Expr _ve_body = Expr.empty;
    984             _ve_body = _v_deref__item7.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body4);
     1008            _ve_body = _v_deref__item8.subexpr ((0 + 1 + 1 + 1 + 1 + 1), _v_len__body4);
    9851009            Expr _ve_cont__label = Expr.empty;
    986             _ve_cont__label = _v_deref__deref__item7.subexpr (0, _v_len__cont__label);
     1010            _ve_cont__label = _v_deref__deref__item8.subexpr (0, _v_len__cont__label);
    9871011            Expr _ve_break__label = Expr.empty;
    988             _ve_break__label = _v_deref__deref__item72.subexpr (0, _v_len__break__label);
     1012            _ve_break__label = _v_deref__deref__item82.subexpr (0, _v_len__break__label);
    9891013            Expr _ve_step = Expr.empty;
    990             _ve_step = _v_deref__deref__item73.subexpr (0, _v_len__step);
     1014            _ve_step = _v_deref__deref__item83.subexpr (0, _v_len__step);
    9911015            Expr _ve_cont = Expr.empty;
    9921016            _block7: {
     
    9961020                  break _block7__branch1;
    9971021                }
    998                 Expr _vt__dollar_tmp_m_162_m_25 = Expr.empty;
    999                 _vt__dollar_tmp_m_162_m_25 = _ve_cont__label.subexpr (0, 1);
     1022                Expr _vt__dollar_tmp_m_163_m_25 = Expr.empty;
     1023                _vt__dollar_tmp_m_163_m_25 = _ve_cont__label.subexpr (0, 1);
    10001024                Result _ge_auxcall14 = new Result (Expr.empty);
    1001                 refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_50, _ve_cont__label)), _ge_auxcall14);
    1002                 _ve_cont = Expr.concat (_ge_auxcall14.getExpr (), _c_51);
     1025                refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_51, _ve_cont__label)), _ge_auxcall14);
     1026                _ve_cont = Expr.concat (_ge_auxcall14.getExpr (), _c_52);
    10031027                break _block7;
    10041028              }
     
    10121036                  break _block8__branch1;
    10131037                }
    1014                 Expr _vt__dollar_tmp_m_165_m_26 = Expr.empty;
    1015                 _vt__dollar_tmp_m_165_m_26 = _ve_break__label.subexpr (0, 1);
     1038                Expr _vt__dollar_tmp_m_166_m_26 = Expr.empty;
     1039                _vt__dollar_tmp_m_166_m_26 = _ve_break__label.subexpr (0, 1);
    10161040                Result _ge_auxcall15 = new Result (Expr.empty);
    1017                 refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_50, _ve_break__label)), _ge_auxcall15);
    1018                 _ve_break = Expr.concat (_ge_auxcall15.getExpr (), _c_51);
     1041                refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_51, _ve_break__label)), _ge_auxcall15);
     1042                _ve_break = Expr.concat (_ge_auxcall15.getExpr (), _c_52);
    10191043                break _block8;
    10201044              }
     
    10501074                _block10: {
    10511075                  _block10__branch1: {
    1052                     if (!_vs_d.termEquals (_c_52, 0))
     1076                    if (!_vs_d.termEquals (_c_53, 0))
    10531077                    {
    10541078                      break _block10__branch1;
     
    10561080                    break _block10;
    10571081                  }
    1058                   if (!_vs_d.termEquals (_c_53, 0))
     1082                  if (!_vs_d.termEquals (_c_54, 0))
    10591083                  {
    10601084                    break _block9__branch1;
     
    10831107                Result _ge_auxcall17 = new Result (Expr.empty);
    10841108                refal.plus.JavaMangle.Rfp2Java (_vt_var2, _ge_auxcall17);
    1085                 _ve_split__vars = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_56).toRight (_ge_auxcall16.getExpr ()).toRight (_c_55).toRight (_ve_new__var).toRight (_c_54).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_56).toRight (_ge_auxcall17.getExpr ()).toRight (_c_55).toRight (_ve_new__var).toRight (_c_57).yield ());
     1109                _ve_split__vars = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_c_57).toRight (_ge_auxcall16.getExpr ()).toRight (_c_56).toRight (_ve_new__var).toRight (_c_55).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_57).toRight (_ge_auxcall17.getExpr ()).toRight (_c_56).toRight (_ve_new__var).toRight (_c_58).yield ());
    10861110                break _block9;
    10871111              }
     
    10951119            Result _ge_auxcall20 = new Result (Expr.empty);
    10961120            ASAIL_To_Java (_ve_body, _ge_auxcall20);
    1097             _ve_java__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_break).toRight (_ve_cont).toRight (_c_58).toRight (_ge_auxcall18.getExpr ()).toRight (_c_45).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_split__vars).toRight (_ge_auxcall19.getExpr ()).toRight (_ge_auxcall20.getExpr ()).yield ()).toRight (_c_14).yield ());
     1121            _ve_java__item = Expr.concat ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_break).toRight (_ve_cont).toRight (_c_59).toRight (_ge_auxcall18.getExpr ()).toRight (_c_46).yield (), (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.getConcatenator ().toRight (_ve_split__vars).toRight (_ge_auxcall19.getExpr ()).toRight (_ge_auxcall20.getExpr ()).yield ()).toRight (_c_14).yield ());
    10981122            break _block2;
    10991123          }
    1100           _block2__branch8: {
     1124          _block2__branch9: {
    11011125            if (_vt_item.isSymbolAt (0))
    11021126            {
    1103               break _block2__branch8;
    1104             }
    1105             Expr _v_deref__item8 = (Expr) _vt_item.at (0);
    1106             int _v_len41 = _v_deref__item8.length ();
     1127              break _block2__branch9;
     1128            }
     1129            Expr _v_deref__item9 = (Expr) _vt_item.at (0);
     1130            int _v_len41 = _v_deref__item9.length ();
    11071131            int _v_len42 = 2;
    11081132            if (_v_len41 < _v_len42)
    11091133            {
    1110               break _block2__branch8;
     1134              break _block2__branch9;
    11111135            }
    11121136            int _v_len__body5 = (_v_len41 - _v_len42);
    1113             if (_v_deref__item8.isSymbolAt ((0 + 1)))
    1114             {
    1115               break _block2__branch8;
    1116             }
    1117             Expr _v_deref__deref__item8 = (Expr) _v_deref__item8.at ((0 + 1));
    1118             int _v_len43 = _v_deref__deref__item8.length ();
     1137            if (_v_deref__item9.isSymbolAt ((0 + 1)))
     1138            {
     1139              break _block2__branch9;
     1140            }
     1141            Expr _v_deref__deref__item9 = (Expr) _v_deref__item9.at ((0 + 1));
     1142            int _v_len43 = _v_deref__deref__item9.length ();
    11191143            int _v_len44 = 0;
    11201144            if (_v_len43 < _v_len44)
    11211145            {
    1122               break _block2__branch8;
     1146              break _block2__branch9;
    11231147            }
    11241148            int _v_len__label = (_v_len43 - _v_len44);
    1125             if (!_c_50.termEquals (_v_deref__item8, 0))
    1126             {
    1127               break _block2__branch8;
     1149            if (!_c_51.termEquals (_v_deref__item9, 0))
     1150            {
     1151              break _block2__branch9;
    11281152            }
    11291153            Expr _ve_body = Expr.empty;
    1130             _ve_body = _v_deref__item8.subexpr ((0 + 1 + 1), _v_len__body5);
     1154            _ve_body = _v_deref__item9.subexpr ((0 + 1 + 1), _v_len__body5);
    11311155            Expr _ve_label = Expr.empty;
    1132             _ve_label = _v_deref__deref__item8.subexpr (0, _v_len__label);
     1156            _ve_label = _v_deref__deref__item9.subexpr (0, _v_len__label);
    11331157            Result _ge_auxcall21 = new Result (Expr.empty);
    1134             refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_50, _ve_label)), _ge_auxcall21);
     1158            refal.plus.JavaMangle.Rfp2Java (new Expr ((Comparable<?>) Expr.concat (_c_51, _ve_label)), _ge_auxcall21);
    11351159            Result _ge_auxcall22 = new Result (Expr.empty);
    11361160            ASAIL_To_Java (_ve_body, _ge_auxcall22);
    1137             _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_ge_auxcall21.getExpr ()).toRight (_c_59).toRight ((Comparable<?>) _ge_auxcall22.getExpr ()).toRight (_c_14).yield ());
     1161            _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_ge_auxcall21.getExpr ()).toRight (_c_60).toRight ((Comparable<?>) _ge_auxcall22.getExpr ()).toRight (_c_14).yield ());
    11381162            break _block2;
    11391163          }
    1140           _block2__branch9: {
     1164          _block2__branch10: {
    11411165            if (_vt_item.isSymbolAt (0))
    11421166            {
    1143               break _block2__branch9;
    1144             }
    1145             Expr _v_deref__item9 = (Expr) _vt_item.at (0);
    1146             int _v_len45 = _v_deref__item9.length ();
     1167              break _block2__branch10;
     1168            }
     1169            Expr _v_deref__item10 = (Expr) _vt_item.at (0);
     1170            int _v_len45 = _v_deref__item10.length ();
    11471171            int _v_len46 = 1;
    11481172            if (_v_len45 < _v_len46)
    11491173            {
    1150               break _block2__branch9;
     1174              break _block2__branch10;
    11511175            }
    11521176            int _v_len__body6 = (_v_len45 - _v_len46);
    1153             if (!_c_60.termEquals (_v_deref__item9, 0))
    1154             {
    1155               break _block2__branch9;
     1177            if (!_c_61.termEquals (_v_deref__item10, 0))
     1178            {
     1179              break _block2__branch10;
    11561180            }
    11571181            Expr _ve_body = Expr.empty;
    1158             _ve_body = _v_deref__item9.subexpr ((0 + 1), _v_len__body6);
     1182            _ve_body = _v_deref__item10.subexpr ((0 + 1), _v_len__body6);
    11591183            Result _ge_auxcall23 = new Result (Expr.empty);
    11601184            refal.plus.Box.Get (Module_Name, _ge_auxcall23);
     
    11631187            Result _ge_auxcall25 = new Result (Expr.empty);
    11641188            ASAIL_To_Java (_ve_body, _ge_auxcall25);
    1165             _ve_java__item = Expr.concat (_c_65, (Comparable<?>) Expr.getConcatenator ().toRight (_c_42).toRight ((Comparable<?>) Expr.concat ((Comparable<?>) Expr.concat (_c_64, (Comparable<?>) Expr.getConcatenator ().toRight (_c_63).toRight (_ge_auxcall23.getExpr ()).toRight (_c_62).toRight (_ge_auxcall24.getExpr ()).toRight (_c_61).yield ()), _ge_auxcall25.getExpr ())).toRight (_c_14).yield ());
     1189            _ve_java__item = Expr.concat (_c_66, (Comparable<?>) Expr.getConcatenator ().toRight (_c_43).toRight ((Comparable<?>) Expr.concat ((Comparable<?>) Expr.concat (_c_65, (Comparable<?>) Expr.getConcatenator ().toRight (_c_64).toRight (_ge_auxcall23.getExpr ()).toRight (_c_63).toRight (_ge_auxcall24.getExpr ()).toRight (_c_62).yield ()), _ge_auxcall25.getExpr ())).toRight (_c_14).yield ());
    11661190            break _block2;
    11671191          }
    1168           _block2__branch10: {
     1192          _block2__branch11: {
    11691193            if (_vt_item.isSymbolAt (0))
    11701194            {
    1171               break _block2__branch10;
    1172             }
    1173             Expr _v_deref__item10 = (Expr) _vt_item.at (0);
    1174             int _v_len47 = _v_deref__item10.length ();
     1195              break _block2__branch11;
     1196            }
     1197            Expr _v_deref__item11 = (Expr) _vt_item.at (0);
     1198            int _v_len47 = _v_deref__item11.length ();
    11751199            int _v_len48 = 1;
    11761200            if (_v_len47 < _v_len48)
    11771201            {
    1178               break _block2__branch10;
     1202              break _block2__branch11;
    11791203            }
    11801204            int _v_len__body7 = (_v_len47 - _v_len48);
    1181             if (!_c_66.termEquals (_v_deref__item10, 0))
    1182             {
    1183               break _block2__branch10;
     1205            if (!_c_67.termEquals (_v_deref__item11, 0))
     1206            {
     1207              break _block2__branch11;
    11841208            }
    11851209            Expr _ve_body = Expr.empty;
    1186             _ve_body = _v_deref__item10.subexpr ((0 + 1), _v_len__body7);
     1210            _ve_body = _v_deref__item11.subexpr ((0 + 1), _v_len__body7);
    11871211            Result _ge_auxcall26 = new Result (Expr.empty);
    11881212            ASAIL_To_Java (_ve_body, _ge_auxcall26);
    1189             _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_68).toRight ((Comparable<?>) Expr.concat (_c_67, (Comparable<?>) _ge_auxcall26.getExpr ())).toRight (_c_14).yield ());
     1213            _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_69).toRight ((Comparable<?>) Expr.concat (_c_68, (Comparable<?>) _ge_auxcall26.getExpr ())).toRight (_c_14).yield ());
    11901214            break _block2;
    11911215          }
    1192           _block2__branch11: {
    1193             if (!_vt_item.termEquals (_c_69, 0))
    1194             {
    1195               break _block2__branch11;
    1196             }
    1197             _ve_java__item = _c_70;
     1216          _block2__branch12: {
     1217            if (!_vt_item.termEquals (_c_70, 0))
     1218            {
     1219              break _block2__branch12;
     1220            }
     1221            _ve_java__item = _c_71;
    11981222            break _block2;
    11991223          }
    1200           _block2__branch12: {
    1201             if (!_vt_item.termEquals (_c_71, 0))
    1202             {
    1203               break _block2__branch12;
     1224          _block2__branch13: {
     1225            if (!_vt_item.termEquals (_c_72, 0))
     1226            {
     1227              break _block2__branch13;
    12041228            }
    12051229            Result _ge_auxcall27 = new Result (Expr.empty);
     
    12071231            Result _ge_auxcall28 = new Result (Expr.empty);
    12081232            refal.plus.Box.Get (Func_Name, _ge_auxcall28);
    1209             _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_63).toRight (_ge_auxcall27.getExpr ()).toRight (_c_62).toRight (_ge_auxcall28.getExpr ()).toRight (_c_72).yield ());
     1233            _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_64).toRight (_ge_auxcall27.getExpr ()).toRight (_c_63).toRight (_ge_auxcall28.getExpr ()).toRight (_c_73).yield ());
    12101234            break _block2;
    12111235          }
    1212           _block2__branch13: {
     1236          _block2__branch14: {
    12131237            if (_vt_item.isSymbolAt (0))
    12141238            {
    1215               break _block2__branch13;
    1216             }
    1217             Expr _v_deref__item11 = (Expr) _vt_item.at (0);
    1218             if (_v_deref__item11.length () != 5)
    1219             {
    1220               break _block2__branch13;
    1221             }
    1222             if (_v_deref__item11.isSymbolAt ((0 + 1 + 1)))
    1223             {
    1224               break _block2__branch13;
    1225             }
    1226             Expr _v_deref__deref__item11 = (Expr) _v_deref__item11.at ((0 + 1 + 1));
    1227             int _v_len49 = _v_deref__deref__item11.length ();
     1239              break _block2__branch14;
     1240            }
     1241            Expr _v_deref__item12 = (Expr) _vt_item.at (0);
     1242            if (_v_deref__item12.length () != 5)
     1243            {
     1244              break _block2__branch14;
     1245            }
     1246            if (_v_deref__item12.isSymbolAt ((0 + 1 + 1)))
     1247            {
     1248              break _block2__branch14;
     1249            }
     1250            Expr _v_deref__deref__item12 = (Expr) _v_deref__item12.at ((0 + 1 + 1));
     1251            int _v_len49 = _v_deref__deref__item12.length ();
    12281252            int _v_len50 = 0;
    12291253            if (_v_len49 < _v_len50)
    12301254            {
    1231               break _block2__branch13;
     1255              break _block2__branch14;
    12321256            }
    12331257            int _v_len__min = (_v_len49 - _v_len50);
    1234             if (!_c_73.termEquals (_v_deref__item11, 0))
    1235             {
    1236               break _block2__branch13;
    1237             }
    1238             Expr _vt_name = Expr.empty;
    1239             _vt_name = _v_deref__item11.subexpr ((0 + 1), 1);
    1240             Expr _vt_var1 = Expr.empty;
    1241             _vt_var1 = _v_deref__item11.subexpr ((0 + 1 + 1 + 1), 1);
    1242             Expr _vt_var2 = Expr.empty;
    1243             _vt_var2 = _v_deref__item11.subexpr ((0 + 1 + 1 + 1 + 1), 1);
    1244             Expr _ve_min = Expr.empty;
    1245             _ve_min = _v_deref__deref__item11.subexpr (0, _v_len__min);
    1246             Result _ve_n = new Result (Expr.empty);
    1247             Expr_Ref_To_Java (_vt_name, _ve_n);
    1248             Result _v_Free__Index1 = new Result (Expr.empty);
    1249             Free_Index (_v_Free__Index1);
    1250             Expr _ve_new__var = Expr.concat (_c_74, _v_Free__Index1.getExpr ());
    1251             refal.plus.Table.Bind (Iter_Vars, _vt_name, Expr.getConcatenator ().toRight (_ve_new__var).toRight (_vt_var1).toRight (_vt_var2).yield ());
    1252             Result _va_5 = new Result ();
    1253             Expr_Int_To_Java (_ve_min, _va_5);
    1254             _ve_min = _va_5.getExpr ();
    1255             _ve_java__item = new Expr ((Comparable<?>) Expr.getConcatenator ().toRight (_c_77).toRight (_ve_new__var).toRight (_c_55).toRight (_ve_n.getExpr ()).toRight (_c_76).toRight (_ve_min).toRight (_c_75).yield ());
    1256             break _block2;
    1257           }
    1258           _block2__branch14: {
    1259             if (_vt_item.isSymbolAt (0))
    1260             {
    1261               break _block2__branch14;
    1262             }
    1263             Expr _v_deref__item12 = (Expr) _vt_item.at (0);
    1264             if (_v_deref__item12.length () != 5)
    1265             {
    1266               break _block2__branch14;
    1267             }
    1268             if (_v_deref__item12.isSymbolAt ((0 + 1 + 1)))
    1269             {
    1270               break _block2__branch14;
    1271             }
    1272             Expr _v_deref__deref__item12 = (Expr) _v_deref__item12.at ((0 + 1 + 1));
    1273             int _v_len51 = _v_deref__deref__item12.length ();
    1274             int _v_len52 = 0;
    1275             if (_v_len51 < _v_len52)
    1276             {
    1277               break _block2__branch14;
    1278             }
    1279             int _v_len__min2 = (_v_len51 - _v_len52);
    1280             if (!_c_78.termEquals (_v_deref__item12, 0))
     1258            if (!_c_74.termEquals (_v_deref__item12, 0))
    12811259            {
    12821260              break _block2__branch14;
     
    12891267            _vt_var2 = _v_deref__item12.subexpr ((0 + 1 + 1 + 1 + 1), 1);
    12901268            Expr _ve_min = Expr.empty;
    1291             _ve_min = _v_deref__deref__item12.subexpr (0, _v_len__min2);
     1269            _ve_min = _v_deref__deref__item12.subexpr (0, _v_len__min);
     1270            Result _ve_n = new Result (Expr.empty);
     1271            Expr_Ref_To_Java (_vt_name, _ve_n);
     1272            Result _v_Free__Index1 = new Result (Expr.empty);
     1273            Free_In