Source/sources/kawa/lang/Lambda.java
public void rewriteBody(gnu.expr.LambdaExp r27, java.lang.Object r28, kawa.lang.Translator r29) {
        /*
            r26 = this;
            r11 = 0
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            if (r23 != 0) goto L_0x0023
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            if (r23 == 0) goto L_0x0023
            gnu.expr.ModuleExp r23 = r29.getModule()
            r24 = 131072(0x20000, float:1.83671E-40)
            boolean r23 = r23.getFlag(r24)
            if (r23 == 0) goto L_0x0023
            r0 = r27
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0023:
            gnu.expr.ScopeExp r6 = r29.currentScope()
            r0 = r29
            r1 = r27
            r0.pushScope(r1)
            r15 = 0
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            if (r23 != 0) goto L_0x00e1
            r8 = 0
        L_0x0038:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            if (r23 != 0) goto L_0x00ec
            r12 = 0
        L_0x0041:
            r4 = 0
            r13 = 0
            gnu.expr.Declaration r5 = r27.firstDecl()
        L_0x0047:
            if (r5 == 0) goto L_0x00fb
            boolean r23 = r5.isAlias()
            if (r23 == 0) goto L_0x0068
            gnu.expr.ReferenceExp r23 = kawa.lang.Translator.getOriginalRef(r5)
            gnu.expr.Declaration r14 = r23.getBinding()
            r0 = r27
            r0.replaceFollowing(r15, r14)
            r0 = r27
            r14.context = r0
            r0 = r29
            r0.pushRenamedAlias(r5)
            int r11 = r11 + 1
            r5 = r14
        L_0x0068:
            gnu.expr.Expression r19 = r5.getTypeExp()
            r0 = r19
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0089
            gnu.expr.LangExp r19 = (gnu.expr.LangExp) r19
            java.lang.Object r21 = r19.getLangValue()
            gnu.lists.Pair r21 = (gnu.lists.Pair) r21
            r0 = r29
            r1 = r21
            gnu.bytecode.Type r23 = r0.exp2Type(r1)
            r0 = r23
            r5.setType(r0)
        L_0x0089:
            r15 = r5
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            r0 = r23
            if (r4 < r0) goto L_0x00ce
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 < r0) goto L_0x00b4
            r0 = r27
            int r0 = r0.max_args
            r23 = r0
            if (r23 >= 0) goto L_0x00b4
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 == r0) goto L_0x00ce
        L_0x00b4:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r24 = r0
            r24 = r24[r13]
            r0 = r29
            r1 = r24
            gnu.expr.Expression r24 = r0.rewrite(r1)
            r23[r13] = r24
            int r13 = r13 + 1
        L_0x00ce:
            int r4 = r4 + 1
            r0 = r29
            gnu.expr.NameLookup r0 = r0.lexical
            r23 = r0
            r0 = r23
            r0.push(r5)
            gnu.expr.Declaration r5 = r5.nextDecl()
            goto L_0x0047
        L_0x00e1:
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            r0 = r23
            int r8 = r0.length
            goto L_0x0038
        L_0x00ec:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r23
            int r0 = r0.length
            r23 = r0
            int r12 = r23 - r8
            goto L_0x0041
        L_0x00fb:
            boolean r23 = r27.isClassMethod()
            if (r23 == 0) goto L_0x0121
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            r24 = 2048(0x800, double:1.0118E-320)
            boolean r23 = r23.getFlag(r24)
            if (r23 != 0) goto L_0x0121
            r23 = 0
            gnu.expr.Declaration r24 = new gnu.expr.Declaration
            java.lang.String r25 = gnu.expr.ThisExp.THIS_NAME
            r24.<init>(r25)
            r0 = r27
            r1 = r23
            r2 = r24
            r0.add(r1, r2)
        L_0x0121:
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curLambda
            r18 = r0
            r0 = r27
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.bytecode.Type r0 = r0.returnType
            r17 = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0175
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.LangExp r23 = (gnu.expr.LangExp) r23
            java.lang.Object r23 = r23.getLangValue()
            java.lang.Object[] r23 = (java.lang.Object[]) r23
            r20 = r23
            java.lang.Object[] r20 = (java.lang.Object[]) r20
            r23 = 0
            r23 = r20[r23]
            gnu.lists.Pair r23 = (gnu.lists.Pair) r23
            r24 = 1
            r24 = r20[r24]
            kawa.lang.SyntaxForm r24 = (kawa.lang.SyntaxForm) r24
            r0 = r29
            r1 = r23
            r2 = r24
            gnu.expr.Expression r19 = r0.rewrite_car(r1, r2)
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r23
            r1 = r19
            gnu.bytecode.Type r17 = r0.getTypeFor(r1)
        L_0x0175:
            r0 = r29
            r1 = r28
            gnu.expr.Expression r23 = r0.rewrite_body(r1)
            r0 = r23
            r1 = r27
            r1.body = r0
            r0 = r18
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.BeginExp
            r23 = r0
            if (r23 == 0) goto L_0x0230
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.BeginExp r23 = (gnu.expr.BeginExp) r23
            gnu.expr.Expression[] r7 = r23.getExpressions()
            int r9 = r7.length
            r23 = 1
            r0 = r23
            if (r9 <= r0) goto L_0x0230
            r23 = 0
            r23 = r7[r23]
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r23 = 0
            r23 = r7[r23]
            java.lang.Object r22 = r23.valueIfConstant()
            r0 = r22
            boolean r0 = r0 instanceof gnu.bytecode.Type
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r0 = r22
            boolean r0 = r0 instanceof java.lang.Class
            r23 = r0
            if (r23 == 0) goto L_0x0230
        L_0x01ce:
            r23 = 0
            r16 = r7[r23]
            int r9 = r9 + -1
            r23 = 1
            r0 = r23
            if (r9 != r0) goto L_0x0218
            r23 = 1
            r23 = r7[r23]
            r0 = r23
            r1 = r27
            r1.body = r0
        L_0x01e4:
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r27
            r1 = r16
            r2 = r23
            r0.setCoercedReturnValue(r1, r2)
        L_0x01f1:
            r0 = r29
            r1 = r27
            r0.pop(r1)
            r27.countDecls()
            r0 = r29
            r0.popRenamedAlias(r11)
            r27.countDecls()
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            r0 = r23
            r1 = r27
            if (r0 != r1) goto L_0x0217
            r23 = 0
            r0 = r23
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0217:
            return
        L_0x0218:
            gnu.expr.Expression[] r10 = new gnu.expr.Expression[r9]
            r23 = 1
            r24 = 0
            r0 = r23
            r1 = r24
            java.lang.System.arraycopy(r7, r0, r10, r1, r9)
            gnu.expr.Expression r23 = gnu.expr.BeginExp.canonicalize(r10)
            r0 = r23
            r1 = r27
            r1.body = r0
            goto L_0x01e4
        L_0x0230:
            r0 = r27
            r1 = r17
            r0.setCoercedReturnType(r1)
            goto L_0x01f1
        */
        throw new UnsupportedOperationException("Method not decompiled: kawa.lang.Lambda.rewriteBody(gnu.expr.LambdaExp, java.lang.Object, kawa.lang.Translator):void");
    }
/* Code decompiled incorrectly, please refer to instructions dump. */
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .
public void rewriteBody(gnu.expr.LambdaExp r27, java.lang.Object r28, kawa.lang.Translator r29) {
        /*
            r26 = this;
            r11 = 0
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            if (r23 != 0) goto L_0x0023
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            if (r23 == 0) goto L_0x0023
            gnu.expr.ModuleExp r23 = r29.getModule()
            r24 = 131072(0x20000, float:1.83671E-40)
            boolean r23 = r23.getFlag(r24)
            if (r23 == 0) goto L_0x0023
            r0 = r27
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0023:
            gnu.expr.ScopeExp r6 = r29.currentScope()
            r0 = r29
            r1 = r27
            r0.pushScope(r1)
            r15 = 0
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            if (r23 != 0) goto L_0x00e1
            r8 = 0
        L_0x0038:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            if (r23 != 0) goto L_0x00ec
            r12 = 0
        L_0x0041:
            r4 = 0
            r13 = 0
            gnu.expr.Declaration r5 = r27.firstDecl()
        L_0x0047:
            if (r5 == 0) goto L_0x00fb
            boolean r23 = r5.isAlias()
            if (r23 == 0) goto L_0x0068
            gnu.expr.ReferenceExp r23 = kawa.lang.Translator.getOriginalRef(r5)
            gnu.expr.Declaration r14 = r23.getBinding()
            r0 = r27
            r0.replaceFollowing(r15, r14)
            r0 = r27
            r14.context = r0
            r0 = r29
            r0.pushRenamedAlias(r5)
            int r11 = r11 + 1
            r5 = r14
        L_0x0068:
            gnu.expr.Expression r19 = r5.getTypeExp()
            r0 = r19
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0089
            gnu.expr.LangExp r19 = (gnu.expr.LangExp) r19
            java.lang.Object r21 = r19.getLangValue()
            gnu.lists.Pair r21 = (gnu.lists.Pair) r21
            r0 = r29
            r1 = r21
            gnu.bytecode.Type r23 = r0.exp2Type(r1)
            r0 = r23
            r5.setType(r0)
        L_0x0089:
            r15 = r5
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            r0 = r23
            if (r4 < r0) goto L_0x00ce
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 < r0) goto L_0x00b4
            r0 = r27
            int r0 = r0.max_args
            r23 = r0
            if (r23 >= 0) goto L_0x00b4
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 == r0) goto L_0x00ce
        L_0x00b4:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r24 = r0
            r24 = r24[r13]
            r0 = r29
            r1 = r24
            gnu.expr.Expression r24 = r0.rewrite(r1)
            r23[r13] = r24
            int r13 = r13 + 1
        L_0x00ce:
            int r4 = r4 + 1
            r0 = r29
            gnu.expr.NameLookup r0 = r0.lexical
            r23 = r0
            r0 = r23
            r0.push(r5)
            gnu.expr.Declaration r5 = r5.nextDecl()
            goto L_0x0047
        L_0x00e1:
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            r0 = r23
            int r8 = r0.length
            goto L_0x0038
        L_0x00ec:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r23
            int r0 = r0.length
            r23 = r0
            int r12 = r23 - r8
            goto L_0x0041
        L_0x00fb:
            boolean r23 = r27.isClassMethod()
            if (r23 == 0) goto L_0x0121
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            r24 = 2048(0x800, double:1.0118E-320)
            boolean r23 = r23.getFlag(r24)
            if (r23 != 0) goto L_0x0121
            r23 = 0
            gnu.expr.Declaration r24 = new gnu.expr.Declaration
            java.lang.String r25 = gnu.expr.ThisExp.THIS_NAME
            r24.<init>(r25)
            r0 = r27
            r1 = r23
            r2 = r24
            r0.add(r1, r2)
        L_0x0121:
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curLambda
            r18 = r0
            r0 = r27
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.bytecode.Type r0 = r0.returnType
            r17 = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0175
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.LangExp r23 = (gnu.expr.LangExp) r23
            java.lang.Object r23 = r23.getLangValue()
            java.lang.Object[] r23 = (java.lang.Object[]) r23
            r20 = r23
            java.lang.Object[] r20 = (java.lang.Object[]) r20
            r23 = 0
            r23 = r20[r23]
            gnu.lists.Pair r23 = (gnu.lists.Pair) r23
            r24 = 1
            r24 = r20[r24]
            kawa.lang.SyntaxForm r24 = (kawa.lang.SyntaxForm) r24
            r0 = r29
            r1 = r23
            r2 = r24
            gnu.expr.Expression r19 = r0.rewrite_car(r1, r2)
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r23
            r1 = r19
            gnu.bytecode.Type r17 = r0.getTypeFor(r1)
        L_0x0175:
            r0 = r29
            r1 = r28
            gnu.expr.Expression r23 = r0.rewrite_body(r1)
            r0 = r23
            r1 = r27
            r1.body = r0
            r0 = r18
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.BeginExp
            r23 = r0
            if (r23 == 0) goto L_0x0230
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.BeginExp r23 = (gnu.expr.BeginExp) r23
            gnu.expr.Expression[] r7 = r23.getExpressions()
            int r9 = r7.length
            r23 = 1
            r0 = r23
            if (r9 <= r0) goto L_0x0230
            r23 = 0
            r23 = r7[r23]
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r23 = 0
            r23 = r7[r23]
            java.lang.Object r22 = r23.valueIfConstant()
            r0 = r22
            boolean r0 = r0 instanceof gnu.bytecode.Type
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r0 = r22
            boolean r0 = r0 instanceof java.lang.Class
            r23 = r0
            if (r23 == 0) goto L_0x0230
        L_0x01ce:
            r23 = 0
            r16 = r7[r23]
            int r9 = r9 + -1
            r23 = 1
            r0 = r23
            if (r9 != r0) goto L_0x0218
            r23 = 1
            r23 = r7[r23]
            r0 = r23
            r1 = r27
            r1.body = r0
        L_0x01e4:
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r27
            r1 = r16
            r2 = r23
            r0.setCoercedReturnValue(r1, r2)
        L_0x01f1:
            r0 = r29
            r1 = r27
            r0.pop(r1)
            r27.countDecls()
            r0 = r29
            r0.popRenamedAlias(r11)
            r27.countDecls()
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            r0 = r23
            r1 = r27
            if (r0 != r1) goto L_0x0217
            r23 = 0
            r0 = r23
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0217:
            return
        L_0x0218:
            gnu.expr.Expression[] r10 = new gnu.expr.Expression[r9]
            r23 = 1
            r24 = 0
            r0 = r23
            r1 = r24
            java.lang.System.arraycopy(r7, r0, r10, r1, r9)
            gnu.expr.Expression r23 = gnu.expr.BeginExp.canonicalize(r10)
            r0 = r23
            r1 = r27
            r1.body = r0
            goto L_0x01e4
        L_0x0230:
            r0 = r27
            r1 = r17
            r0.setCoercedReturnType(r1)
            goto L_0x01f1
        */
        throw new UnsupportedOperationException("Method not decompiled: kawa.lang.Lambda.rewriteBody(gnu.expr.LambdaExp, java.lang.Object, kawa.lang.Translator):void");
    }
public void rewriteBody ( gnu . expr . LambdaExp r27 , java . lang . Object r28 , kawa . lang . Translator r29 ) { /*
            r26 = this;
            r11 = 0
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            if (r23 != 0) goto L_0x0023
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            if (r23 == 0) goto L_0x0023
            gnu.expr.ModuleExp r23 = r29.getModule()
            r24 = 131072(0x20000, float:1.83671E-40)
            boolean r23 = r23.getFlag(r24)
            if (r23 == 0) goto L_0x0023
            r0 = r27
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0023:
            gnu.expr.ScopeExp r6 = r29.currentScope()
            r0 = r29
            r1 = r27
            r0.pushScope(r1)
            r15 = 0
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            if (r23 != 0) goto L_0x00e1
            r8 = 0
        L_0x0038:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            if (r23 != 0) goto L_0x00ec
            r12 = 0
        L_0x0041:
            r4 = 0
            r13 = 0
            gnu.expr.Declaration r5 = r27.firstDecl()
        L_0x0047:
            if (r5 == 0) goto L_0x00fb
            boolean r23 = r5.isAlias()
            if (r23 == 0) goto L_0x0068
            gnu.expr.ReferenceExp r23 = kawa.lang.Translator.getOriginalRef(r5)
            gnu.expr.Declaration r14 = r23.getBinding()
            r0 = r27
            r0.replaceFollowing(r15, r14)
            r0 = r27
            r14.context = r0
            r0 = r29
            r0.pushRenamedAlias(r5)
            int r11 = r11 + 1
            r5 = r14
        L_0x0068:
            gnu.expr.Expression r19 = r5.getTypeExp()
            r0 = r19
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0089
            gnu.expr.LangExp r19 = (gnu.expr.LangExp) r19
            java.lang.Object r21 = r19.getLangValue()
            gnu.lists.Pair r21 = (gnu.lists.Pair) r21
            r0 = r29
            r1 = r21
            gnu.bytecode.Type r23 = r0.exp2Type(r1)
            r0 = r23
            r5.setType(r0)
        L_0x0089:
            r15 = r5
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            r0 = r23
            if (r4 < r0) goto L_0x00ce
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 < r0) goto L_0x00b4
            r0 = r27
            int r0 = r0.max_args
            r23 = r0
            if (r23 >= 0) goto L_0x00b4
            r0 = r27
            int r0 = r0.min_args
            r23 = r0
            int r23 = r23 + r12
            r0 = r23
            if (r4 == r0) goto L_0x00ce
        L_0x00b4:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r24 = r0
            r24 = r24[r13]
            r0 = r29
            r1 = r24
            gnu.expr.Expression r24 = r0.rewrite(r1)
            r23[r13] = r24
            int r13 = r13 + 1
        L_0x00ce:
            int r4 = r4 + 1
            r0 = r29
            gnu.expr.NameLookup r0 = r0.lexical
            r23 = r0
            r0 = r23
            r0.push(r5)
            gnu.expr.Declaration r5 = r5.nextDecl()
            goto L_0x0047
        L_0x00e1:
            r0 = r27
            gnu.expr.Keyword[] r0 = r0.keywords
            r23 = r0
            r0 = r23
            int r8 = r0.length
            goto L_0x0038
        L_0x00ec:
            r0 = r27
            gnu.expr.Expression[] r0 = r0.defaultArgs
            r23 = r0
            r0 = r23
            int r0 = r0.length
            r23 = r0
            int r12 = r23 - r8
            goto L_0x0041
        L_0x00fb:
            boolean r23 = r27.isClassMethod()
            if (r23 == 0) goto L_0x0121
            r0 = r27
            gnu.expr.Declaration r0 = r0.nameDecl
            r23 = r0
            r24 = 2048(0x800, double:1.0118E-320)
            boolean r23 = r23.getFlag(r24)
            if (r23 != 0) goto L_0x0121
            r23 = 0
            gnu.expr.Declaration r24 = new gnu.expr.Declaration
            java.lang.String r25 = gnu.expr.ThisExp.THIS_NAME
            r24.<init>(r25)
            r0 = r27
            r1 = r23
            r2 = r24
            r0.add(r1, r2)
        L_0x0121:
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curLambda
            r18 = r0
            r0 = r27
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.bytecode.Type r0 = r0.returnType
            r17 = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r23 = r0
            if (r23 == 0) goto L_0x0175
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.LangExp r23 = (gnu.expr.LangExp) r23
            java.lang.Object r23 = r23.getLangValue()
            java.lang.Object[] r23 = (java.lang.Object[]) r23
            r20 = r23
            java.lang.Object[] r20 = (java.lang.Object[]) r20
            r23 = 0
            r23 = r20[r23]
            gnu.lists.Pair r23 = (gnu.lists.Pair) r23
            r24 = 1
            r24 = r20[r24]
            kawa.lang.SyntaxForm r24 = (kawa.lang.SyntaxForm) r24
            r0 = r29
            r1 = r23
            r2 = r24
            gnu.expr.Expression r19 = r0.rewrite_car(r1, r2)
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r23
            r1 = r19
            gnu.bytecode.Type r17 = r0.getTypeFor(r1)
        L_0x0175:
            r0 = r29
            r1 = r28
            gnu.expr.Expression r23 = r0.rewrite_body(r1)
            r0 = r23
            r1 = r27
            r1.body = r0
            r0 = r18
            r1 = r29
            r1.curLambda = r0
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.BeginExp
            r23 = r0
            if (r23 == 0) goto L_0x0230
            r0 = r27
            gnu.expr.Expression r0 = r0.body
            r23 = r0
            gnu.expr.BeginExp r23 = (gnu.expr.BeginExp) r23
            gnu.expr.Expression[] r7 = r23.getExpressions()
            int r9 = r7.length
            r23 = 1
            r0 = r23
            if (r9 <= r0) goto L_0x0230
            r23 = 0
            r23 = r7[r23]
            r0 = r23
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r23 = 0
            r23 = r7[r23]
            java.lang.Object r22 = r23.valueIfConstant()
            r0 = r22
            boolean r0 = r0 instanceof gnu.bytecode.Type
            r23 = r0
            if (r23 != 0) goto L_0x01ce
            r0 = r22
            boolean r0 = r0 instanceof java.lang.Class
            r23 = r0
            if (r23 == 0) goto L_0x0230
        L_0x01ce:
            r23 = 0
            r16 = r7[r23]
            int r9 = r9 + -1
            r23 = 1
            r0 = r23
            if (r9 != r0) goto L_0x0218
            r23 = 1
            r23 = r7[r23]
            r0 = r23
            r1 = r27
            r1.body = r0
        L_0x01e4:
            gnu.expr.Language r23 = r29.getLanguage()
            r0 = r27
            r1 = r16
            r2 = r23
            r0.setCoercedReturnValue(r1, r2)
        L_0x01f1:
            r0 = r29
            r1 = r27
            r0.pop(r1)
            r27.countDecls()
            r0 = r29
            r0.popRenamedAlias(r11)
            r27.countDecls()
            r0 = r29
            gnu.expr.LambdaExp r0 = r0.curMethodLambda
            r23 = r0
            r0 = r23
            r1 = r27
            if (r0 != r1) goto L_0x0217
            r23 = 0
            r0 = r23
            r1 = r29
            r1.curMethodLambda = r0
        L_0x0217:
            return
        L_0x0218:
            gnu.expr.Expression[] r10 = new gnu.expr.Expression[r9]
            r23 = 1
            r24 = 0
            r0 = r23
            r1 = r24
            java.lang.System.arraycopy(r7, r0, r10, r1, r9)
            gnu.expr.Expression r23 = gnu.expr.BeginExp.canonicalize(r10)
            r0 = r23
            r1 = r27
            r1.body = r0
            goto L_0x01e4
        L_0x0230:
            r0 = r27
            r1 = r17
            r0.setCoercedReturnType(r1)
            goto L_0x01f1
        */ throw new UnsupportedOperationException ( "Method not decompiled: kawa.lang.Lambda.rewriteBody(gnu.expr.LambdaExp, java.lang.Object, kawa.lang.Translator):void" ) ; }
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .