Source/sources/kawa/lang/Translator.java
public gnu.expr.Expression rewrite(java.lang.Object r36, boolean r37) {
        /*
            r35 = this;
            r0 = r36
            boolean r0 = r0 instanceof kawa.lang.SyntaxForm
            r31 = r0
            if (r31 == 0) goto L_0x003c
            r29 = r36
            kawa.lang.SyntaxForm r29 = (kawa.lang.SyntaxForm) r29
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r26 = r0
            kawa.lang.TemplateScope r31 = r29.getScope()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r0.setCurrentScope(r1)     // Catch:{ all -> 0x0033 }
            java.lang.Object r31 = r29.getDatum()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
        L_0x0032:
            return r25
        L_0x0033:
            r31 = move-exception
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
            throw r31
        L_0x003c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.PairWithPosition
            r31 = r0
            if (r31 == 0) goto L_0x0055
            r31 = r36
            gnu.lists.PairWithPosition r31 = (gnu.lists.PairWithPosition) r31
            r0 = r35
            r1 = r36
            r2 = r37
            r3 = r31
            gnu.expr.Expression r25 = r0.rewrite_with_position(r1, r2, r3)
            goto L_0x0032
        L_0x0055:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.Pair
            r31 = r0
            if (r31 == 0) goto L_0x0064
            gnu.lists.Pair r36 = (gnu.lists.Pair) r36
            gnu.expr.Expression r25 = r35.rewrite_pair(r36, r37)
            goto L_0x0032
        L_0x0064:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x0381
            boolean r31 = r35.selfEvaluatingSymbol(r36)
            if (r31 != 0) goto L_0x0381
            r0 = r35
            gnu.expr.NameLookup r0 = r0.lexical
            r31 = r0
            r0 = r31
            r1 = r36
            r2 = r37
            gnu.expr.Declaration r10 = r0.lookup(r1, r2)
            r5 = 0
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r27 = r0
            if (r10 != 0) goto L_0x0134
            r11 = -1
        L_0x008c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x013e
            r31 = r36
            gnu.mapping.Symbol r31 = (gnu.mapping.Symbol) r31
            boolean r31 = r31.hasEmptyNamespace()
            if (r31 == 0) goto L_0x013e
            java.lang.String r12 = r36.toString()
        L_0x00a2:
            if (r27 == 0) goto L_0x00d2
            r0 = r27
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r31 = r27
            gnu.expr.LambdaExp r31 = (gnu.expr.LambdaExp) r31
            boolean r31 = r31.isClassMethod()
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            int r31 = gnu.expr.ScopeExp.nesting(r31)
            r0 = r31
            if (r11 < r0) goto L_0x0143
        L_0x00d2:
            if (r10 == 0) goto L_0x01cb
            java.lang.Object r21 = r10.getSymbol()
            r36 = 0
            gnu.expr.ReferenceExp r24 = getOriginalRef(r10)
            if (r24 == 0) goto L_0x00ec
            gnu.expr.Declaration r10 = r24.getBinding()
            if (r10 != 0) goto L_0x00ec
            java.lang.Object r36 = r24.getSymbol()
            r21 = r36
        L_0x00ec:
            r31 = r36
        L_0x00ee:
            r30 = r31
            gnu.mapping.Symbol r30 = (gnu.mapping.Symbol) r30
            gnu.expr.Language r32 = r35.getLanguage()
            boolean r28 = r32.hasSeparateFunctionNamespace()
            if (r10 == 0) goto L_0x0220
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.TemplateScope
            r31 = r0
            if (r31 == 0) goto L_0x01d1
            boolean r31 = r10.needsContext()
            if (r31 == 0) goto L_0x01d1
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            kawa.lang.TemplateScope r31 = (kawa.lang.TemplateScope) r31
            r0 = r31
            gnu.expr.Declaration r5 = r0.macroContext
        L_0x011c:
            if (r10 == 0) goto L_0x035b
            if (r37 != 0) goto L_0x0328
            java.lang.Object r31 = r10.getConstantValue()
            r0 = r31
            boolean r0 = r0 instanceof kawa.standard.object
            r31 = r0
            if (r31 == 0) goto L_0x0328
            java.lang.Class<java.lang.Object> r31 = java.lang.Object.class
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r31)
            goto L_0x0032
        L_0x0134:
            gnu.expr.ScopeExp r0 = r10.context
            r31 = r0
            int r11 = gnu.expr.ScopeExp.nesting(r31)
            goto L_0x008c
        L_0x013e:
            r12 = 0
            r27 = 0
            goto L_0x00a2
        L_0x0143:
            r4 = r27
            gnu.expr.LambdaExp r4 = (gnu.expr.LambdaExp) r4
            r0 = r27
            gnu.expr.ScopeExp r7 = r0.outer
            gnu.expr.ClassExp r7 = (gnu.expr.ClassExp) r7
            gnu.bytecode.ClassType r9 = r7.getClassType()
            gnu.bytecode.Member r22 = gnu.kawa.reflect.SlotGet.lookupMember(r9, r12, r9)
            gnu.expr.LambdaExp r0 = r7.clinitMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x016f
            gnu.expr.LambdaExp r0 = r7.initMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x0193
            gnu.expr.Declaration r0 = r4.nameDecl
            r31 = r0
            boolean r31 = r31.isStatic()
            if (r31 == 0) goto L_0x0193
        L_0x016f:
            r8 = 1
        L_0x0170:
            if (r22 != 0) goto L_0x0198
            if (r8 == 0) goto L_0x0195
            r20 = 83
        L_0x0176:
            r0 = r35
            gnu.expr.Language r0 = r0.language
            r31 = r0
            r0 = r20
            r1 = r31
            gnu.expr.PrimProcedure[] r19 = gnu.kawa.reflect.ClassMethods.getMethods(r9, r12, r0, r9, r1)
            r0 = r19
            int r0 = r0.length
            r31 = r0
            if (r31 != 0) goto L_0x0198
        L_0x018b:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x00a2
        L_0x0193:
            r8 = 0
            goto L_0x0170
        L_0x0195:
            r20 = 86
            goto L_0x0176
        L_0x0198:
            if (r8 == 0) goto L_0x01bd
            gnu.expr.ReferenceExp r23 = new gnu.expr.ReferenceExp
            gnu.expr.ScopeExp r0 = r4.outer
            r31 = r0
            gnu.expr.ClassExp r31 = (gnu.expr.ClassExp) r31
            r0 = r31
            gnu.expr.Declaration r0 = r0.nameDecl
            r31 = r0
            r0 = r23
            r1 = r31
            r0.<init>(r1)
        L_0x01af:
            gnu.expr.QuoteExp r31 = gnu.expr.QuoteExp.getInstance(r12)
            r0 = r23
            r1 = r31
            gnu.expr.Expression r25 = gnu.kawa.functions.CompileNamedPart.makeExp(r0, r1)
            goto L_0x0032
        L_0x01bd:
            gnu.expr.ThisExp r23 = new gnu.expr.ThisExp
            gnu.expr.Declaration r31 = r4.firstDecl()
            r0 = r23
            r1 = r31
            r0.<init>(r1)
            goto L_0x01af
        L_0x01cb:
            r21 = r36
            r31 = r36
            goto L_0x00ee
        L_0x01d1:
            r32 = 1048576(0x100000, double:5.180654E-318)
            r0 = r32
            boolean r31 = r10.getFlag(r0)
            if (r31 == 0) goto L_0x011c
            boolean r31 = r10.isStatic()
            if (r31 != 0) goto L_0x011c
            gnu.expr.ScopeExp r27 = r35.currentScope()
        L_0x01e6:
            if (r27 != 0) goto L_0x0203
            java.lang.Error r31 = new java.lang.Error
            java.lang.StringBuilder r32 = new java.lang.StringBuilder
            r32.<init>()
            java.lang.String r33 = "internal error: missing "
            java.lang.StringBuilder r32 = r32.append(r33)
            r0 = r32
            java.lang.StringBuilder r32 = r0.append(r10)
            java.lang.String r32 = r32.toString()
            r31.<init>(r32)
            throw r31
        L_0x0203:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            gnu.expr.ScopeExp r0 = r10.context
            r32 = r0
            r0 = r31
            r1 = r32
            if (r0 != r1) goto L_0x0219
            gnu.expr.Declaration r5 = r27.firstDecl()
            goto L_0x011c
        L_0x0219:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x01e6
        L_0x0220:
            r0 = r35
            gnu.mapping.Environment r0 = r0.env
            r33 = r0
            if (r37 == 0) goto L_0x027d
            if (r28 == 0) goto L_0x027d
            java.lang.Object r32 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x022c:
            r0 = r33
            r1 = r30
            r2 = r32
            gnu.mapping.Location r18 = r0.lookup(r1, r2)
            if (r18 == 0) goto L_0x023c
            gnu.mapping.Location r18 = r18.getBase()
        L_0x023c:
            r0 = r18
            boolean r0 = r0 instanceof gnu.kawa.reflect.FieldLocation
            r32 = r0
            if (r32 == 0) goto L_0x030a
            r17 = r18
            gnu.kawa.reflect.FieldLocation r17 = (gnu.kawa.reflect.FieldLocation) r17
            gnu.expr.Declaration r10 = r17.getDeclaration()     // Catch:{ Throwable -> 0x02ce }
            r32 = 0
            r0 = r35
            r1 = r32
            boolean r32 = r0.inlineOk(r1)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
            gnu.expr.Declaration r32 = getNamedPartDecl     // Catch:{ Throwable -> 0x02ce }
            r0 = r32
            if (r10 == r0) goto L_0x0280
            java.lang.String r32 = "objectSyntax"
            java.lang.String r33 = r17.getMemberName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x027a
            java.lang.String r32 = "kawa.standard.object"
            gnu.bytecode.ClassType r33 = r17.getDeclaringClass()     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r33 = r33.getName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
        L_0x027a:
            r10 = 0
            goto L_0x011c
        L_0x027d:
            r32 = 0
            goto L_0x022c
        L_0x0280:
            r0 = r35
            boolean r0 = r0.immediate     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 == 0) goto L_0x02a8
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x011c
            gnu.expr.Declaration r6 = new gnu.expr.Declaration     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r32 = "(module-instance)"
            r0 = r32
            r6.<init>(r0)     // Catch:{ Throwable -> 0x02ce }
            gnu.expr.QuoteExp r32 = new gnu.expr.QuoteExp     // Catch:{ Throwable -> 0x03c7 }
            java.lang.Object r33 = r17.getInstance()     // Catch:{ Throwable -> 0x03c7 }
            r32.<init>(r33)     // Catch:{ Throwable -> 0x03c7 }
            r0 = r32
            r6.setValue(r0)     // Catch:{ Throwable -> 0x03c7 }
            r5 = r6
            goto L_0x011c
        L_0x02a8:
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x02cb
            java.lang.Class r15 = r17.getRClass()     // Catch:{ Throwable -> 0x02ce }
            if (r15 == 0) goto L_0x02c8
            java.lang.ClassLoader r16 = r15.getClassLoader()     // Catch:{ Throwable -> 0x02ce }
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ZipLoader     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 != 0) goto L_0x02c8
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ArrayClassLoader     // Catch:{ Throwable -> 0x02ce }
            r31 = r0
            if (r31 == 0) goto L_0x011c
        L_0x02c8:
            r10 = 0
            goto L_0x011c
        L_0x02cb:
            r10 = 0
            goto L_0x011c
        L_0x02ce:
            r14 = move-exception
        L_0x02cf:
            r32 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "exception loading '"
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r31
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = "' - "
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = r14.getMessage()
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r32
            r2 = r31
            r0.error(r1, r2)
            r10 = 0
            goto L_0x011c
        L_0x030a:
            if (r18 == 0) goto L_0x0312
            boolean r31 = r18.isBound()
            if (r31 != 0) goto L_0x011c
        L_0x0312:
            gnu.expr.Language r31 = r35.getLanguage()
            gnu.kawa.lispexpr.LispLanguage r31 = (gnu.kawa.lispexpr.LispLanguage) r31
            r0 = r31
            r1 = r30
            r2 = r35
            gnu.expr.Expression r13 = r0.checkDefaultBinding(r1, r2)
            if (r13 == 0) goto L_0x011c
            r25 = r13
            goto L_0x0032
        L_0x0328:
            gnu.expr.ScopeExp r31 = r10.getContext()
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.PatternScope
            r31 = r0
            if (r31 == 0) goto L_0x035b
            java.lang.StringBuilder r31 = new java.lang.StringBuilder
            r31.<init>()
            java.lang.String r32 = "reference to pattern variable "
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = r10.getName()
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = " outside syntax template"
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r31
            gnu.expr.Expression r25 = r0.syntaxError(r1)
            goto L_0x0032
        L_0x035b:
            gnu.expr.ReferenceExp r24 = new gnu.expr.ReferenceExp
            r0 = r24
            r1 = r21
            r0.<init>(r1, r10)
            r0 = r24
            r0.setContextDecl(r5)
            r0 = r24
            r1 = r35
            r0.setLine(r1)
            if (r37 == 0) goto L_0x037d
            if (r28 == 0) goto L_0x037d
            r31 = 8
            r0 = r24
            r1 = r31
            r0.setFlag(r1)
        L_0x037d:
            r25 = r24
            goto L_0x0032
        L_0x0381:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r31 = r0
            if (r31 == 0) goto L_0x039b
            gnu.expr.LangExp r36 = (gnu.expr.LangExp) r36
            java.lang.Object r31 = r36.getLangValue()
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)
            goto L_0x0032
        L_0x039b:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.Expression
            r31 = r0
            if (r31 == 0) goto L_0x03a9
            gnu.expr.Expression r36 = (gnu.expr.Expression) r36
            r25 = r36
            goto L_0x0032
        L_0x03a9:
            gnu.expr.Special r31 = gnu.expr.Special.abstractSpecial
            r0 = r36
            r1 = r31
            if (r0 != r1) goto L_0x03b5
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.abstractExp
            goto L_0x0032
        L_0x03b5:
            r0 = r36
            r1 = r35
            java.lang.Object r31 = kawa.lang.Quote.quote(r0, r1)
            r0 = r31
            r1 = r35
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r0, r1)
            goto L_0x0032
        L_0x03c7:
            r14 = move-exception
            r5 = r6
            goto L_0x02cf
        */
        throw new UnsupportedOperationException("Method not decompiled: kawa.lang.Translator.rewrite(java.lang.Object, boolean):gnu.expr.Expression");
    }
/* 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 gnu.expr.Expression rewrite(java.lang.Object r36, boolean r37) {
        /*
            r35 = this;
            r0 = r36
            boolean r0 = r0 instanceof kawa.lang.SyntaxForm
            r31 = r0
            if (r31 == 0) goto L_0x003c
            r29 = r36
            kawa.lang.SyntaxForm r29 = (kawa.lang.SyntaxForm) r29
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r26 = r0
            kawa.lang.TemplateScope r31 = r29.getScope()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r0.setCurrentScope(r1)     // Catch:{ all -> 0x0033 }
            java.lang.Object r31 = r29.getDatum()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
        L_0x0032:
            return r25
        L_0x0033:
            r31 = move-exception
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
            throw r31
        L_0x003c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.PairWithPosition
            r31 = r0
            if (r31 == 0) goto L_0x0055
            r31 = r36
            gnu.lists.PairWithPosition r31 = (gnu.lists.PairWithPosition) r31
            r0 = r35
            r1 = r36
            r2 = r37
            r3 = r31
            gnu.expr.Expression r25 = r0.rewrite_with_position(r1, r2, r3)
            goto L_0x0032
        L_0x0055:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.Pair
            r31 = r0
            if (r31 == 0) goto L_0x0064
            gnu.lists.Pair r36 = (gnu.lists.Pair) r36
            gnu.expr.Expression r25 = r35.rewrite_pair(r36, r37)
            goto L_0x0032
        L_0x0064:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x0381
            boolean r31 = r35.selfEvaluatingSymbol(r36)
            if (r31 != 0) goto L_0x0381
            r0 = r35
            gnu.expr.NameLookup r0 = r0.lexical
            r31 = r0
            r0 = r31
            r1 = r36
            r2 = r37
            gnu.expr.Declaration r10 = r0.lookup(r1, r2)
            r5 = 0
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r27 = r0
            if (r10 != 0) goto L_0x0134
            r11 = -1
        L_0x008c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x013e
            r31 = r36
            gnu.mapping.Symbol r31 = (gnu.mapping.Symbol) r31
            boolean r31 = r31.hasEmptyNamespace()
            if (r31 == 0) goto L_0x013e
            java.lang.String r12 = r36.toString()
        L_0x00a2:
            if (r27 == 0) goto L_0x00d2
            r0 = r27
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r31 = r27
            gnu.expr.LambdaExp r31 = (gnu.expr.LambdaExp) r31
            boolean r31 = r31.isClassMethod()
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            int r31 = gnu.expr.ScopeExp.nesting(r31)
            r0 = r31
            if (r11 < r0) goto L_0x0143
        L_0x00d2:
            if (r10 == 0) goto L_0x01cb
            java.lang.Object r21 = r10.getSymbol()
            r36 = 0
            gnu.expr.ReferenceExp r24 = getOriginalRef(r10)
            if (r24 == 0) goto L_0x00ec
            gnu.expr.Declaration r10 = r24.getBinding()
            if (r10 != 0) goto L_0x00ec
            java.lang.Object r36 = r24.getSymbol()
            r21 = r36
        L_0x00ec:
            r31 = r36
        L_0x00ee:
            r30 = r31
            gnu.mapping.Symbol r30 = (gnu.mapping.Symbol) r30
            gnu.expr.Language r32 = r35.getLanguage()
            boolean r28 = r32.hasSeparateFunctionNamespace()
            if (r10 == 0) goto L_0x0220
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.TemplateScope
            r31 = r0
            if (r31 == 0) goto L_0x01d1
            boolean r31 = r10.needsContext()
            if (r31 == 0) goto L_0x01d1
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            kawa.lang.TemplateScope r31 = (kawa.lang.TemplateScope) r31
            r0 = r31
            gnu.expr.Declaration r5 = r0.macroContext
        L_0x011c:
            if (r10 == 0) goto L_0x035b
            if (r37 != 0) goto L_0x0328
            java.lang.Object r31 = r10.getConstantValue()
            r0 = r31
            boolean r0 = r0 instanceof kawa.standard.object
            r31 = r0
            if (r31 == 0) goto L_0x0328
            java.lang.Class<java.lang.Object> r31 = java.lang.Object.class
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r31)
            goto L_0x0032
        L_0x0134:
            gnu.expr.ScopeExp r0 = r10.context
            r31 = r0
            int r11 = gnu.expr.ScopeExp.nesting(r31)
            goto L_0x008c
        L_0x013e:
            r12 = 0
            r27 = 0
            goto L_0x00a2
        L_0x0143:
            r4 = r27
            gnu.expr.LambdaExp r4 = (gnu.expr.LambdaExp) r4
            r0 = r27
            gnu.expr.ScopeExp r7 = r0.outer
            gnu.expr.ClassExp r7 = (gnu.expr.ClassExp) r7
            gnu.bytecode.ClassType r9 = r7.getClassType()
            gnu.bytecode.Member r22 = gnu.kawa.reflect.SlotGet.lookupMember(r9, r12, r9)
            gnu.expr.LambdaExp r0 = r7.clinitMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x016f
            gnu.expr.LambdaExp r0 = r7.initMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x0193
            gnu.expr.Declaration r0 = r4.nameDecl
            r31 = r0
            boolean r31 = r31.isStatic()
            if (r31 == 0) goto L_0x0193
        L_0x016f:
            r8 = 1
        L_0x0170:
            if (r22 != 0) goto L_0x0198
            if (r8 == 0) goto L_0x0195
            r20 = 83
        L_0x0176:
            r0 = r35
            gnu.expr.Language r0 = r0.language
            r31 = r0
            r0 = r20
            r1 = r31
            gnu.expr.PrimProcedure[] r19 = gnu.kawa.reflect.ClassMethods.getMethods(r9, r12, r0, r9, r1)
            r0 = r19
            int r0 = r0.length
            r31 = r0
            if (r31 != 0) goto L_0x0198
        L_0x018b:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x00a2
        L_0x0193:
            r8 = 0
            goto L_0x0170
        L_0x0195:
            r20 = 86
            goto L_0x0176
        L_0x0198:
            if (r8 == 0) goto L_0x01bd
            gnu.expr.ReferenceExp r23 = new gnu.expr.ReferenceExp
            gnu.expr.ScopeExp r0 = r4.outer
            r31 = r0
            gnu.expr.ClassExp r31 = (gnu.expr.ClassExp) r31
            r0 = r31
            gnu.expr.Declaration r0 = r0.nameDecl
            r31 = r0
            r0 = r23
            r1 = r31
            r0.<init>(r1)
        L_0x01af:
            gnu.expr.QuoteExp r31 = gnu.expr.QuoteExp.getInstance(r12)
            r0 = r23
            r1 = r31
            gnu.expr.Expression r25 = gnu.kawa.functions.CompileNamedPart.makeExp(r0, r1)
            goto L_0x0032
        L_0x01bd:
            gnu.expr.ThisExp r23 = new gnu.expr.ThisExp
            gnu.expr.Declaration r31 = r4.firstDecl()
            r0 = r23
            r1 = r31
            r0.<init>(r1)
            goto L_0x01af
        L_0x01cb:
            r21 = r36
            r31 = r36
            goto L_0x00ee
        L_0x01d1:
            r32 = 1048576(0x100000, double:5.180654E-318)
            r0 = r32
            boolean r31 = r10.getFlag(r0)
            if (r31 == 0) goto L_0x011c
            boolean r31 = r10.isStatic()
            if (r31 != 0) goto L_0x011c
            gnu.expr.ScopeExp r27 = r35.currentScope()
        L_0x01e6:
            if (r27 != 0) goto L_0x0203
            java.lang.Error r31 = new java.lang.Error
            java.lang.StringBuilder r32 = new java.lang.StringBuilder
            r32.<init>()
            java.lang.String r33 = "internal error: missing "
            java.lang.StringBuilder r32 = r32.append(r33)
            r0 = r32
            java.lang.StringBuilder r32 = r0.append(r10)
            java.lang.String r32 = r32.toString()
            r31.<init>(r32)
            throw r31
        L_0x0203:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            gnu.expr.ScopeExp r0 = r10.context
            r32 = r0
            r0 = r31
            r1 = r32
            if (r0 != r1) goto L_0x0219
            gnu.expr.Declaration r5 = r27.firstDecl()
            goto L_0x011c
        L_0x0219:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x01e6
        L_0x0220:
            r0 = r35
            gnu.mapping.Environment r0 = r0.env
            r33 = r0
            if (r37 == 0) goto L_0x027d
            if (r28 == 0) goto L_0x027d
            java.lang.Object r32 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x022c:
            r0 = r33
            r1 = r30
            r2 = r32
            gnu.mapping.Location r18 = r0.lookup(r1, r2)
            if (r18 == 0) goto L_0x023c
            gnu.mapping.Location r18 = r18.getBase()
        L_0x023c:
            r0 = r18
            boolean r0 = r0 instanceof gnu.kawa.reflect.FieldLocation
            r32 = r0
            if (r32 == 0) goto L_0x030a
            r17 = r18
            gnu.kawa.reflect.FieldLocation r17 = (gnu.kawa.reflect.FieldLocation) r17
            gnu.expr.Declaration r10 = r17.getDeclaration()     // Catch:{ Throwable -> 0x02ce }
            r32 = 0
            r0 = r35
            r1 = r32
            boolean r32 = r0.inlineOk(r1)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
            gnu.expr.Declaration r32 = getNamedPartDecl     // Catch:{ Throwable -> 0x02ce }
            r0 = r32
            if (r10 == r0) goto L_0x0280
            java.lang.String r32 = "objectSyntax"
            java.lang.String r33 = r17.getMemberName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x027a
            java.lang.String r32 = "kawa.standard.object"
            gnu.bytecode.ClassType r33 = r17.getDeclaringClass()     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r33 = r33.getName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
        L_0x027a:
            r10 = 0
            goto L_0x011c
        L_0x027d:
            r32 = 0
            goto L_0x022c
        L_0x0280:
            r0 = r35
            boolean r0 = r0.immediate     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 == 0) goto L_0x02a8
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x011c
            gnu.expr.Declaration r6 = new gnu.expr.Declaration     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r32 = "(module-instance)"
            r0 = r32
            r6.<init>(r0)     // Catch:{ Throwable -> 0x02ce }
            gnu.expr.QuoteExp r32 = new gnu.expr.QuoteExp     // Catch:{ Throwable -> 0x03c7 }
            java.lang.Object r33 = r17.getInstance()     // Catch:{ Throwable -> 0x03c7 }
            r32.<init>(r33)     // Catch:{ Throwable -> 0x03c7 }
            r0 = r32
            r6.setValue(r0)     // Catch:{ Throwable -> 0x03c7 }
            r5 = r6
            goto L_0x011c
        L_0x02a8:
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x02cb
            java.lang.Class r15 = r17.getRClass()     // Catch:{ Throwable -> 0x02ce }
            if (r15 == 0) goto L_0x02c8
            java.lang.ClassLoader r16 = r15.getClassLoader()     // Catch:{ Throwable -> 0x02ce }
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ZipLoader     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 != 0) goto L_0x02c8
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ArrayClassLoader     // Catch:{ Throwable -> 0x02ce }
            r31 = r0
            if (r31 == 0) goto L_0x011c
        L_0x02c8:
            r10 = 0
            goto L_0x011c
        L_0x02cb:
            r10 = 0
            goto L_0x011c
        L_0x02ce:
            r14 = move-exception
        L_0x02cf:
            r32 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "exception loading '"
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r31
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = "' - "
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = r14.getMessage()
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r32
            r2 = r31
            r0.error(r1, r2)
            r10 = 0
            goto L_0x011c
        L_0x030a:
            if (r18 == 0) goto L_0x0312
            boolean r31 = r18.isBound()
            if (r31 != 0) goto L_0x011c
        L_0x0312:
            gnu.expr.Language r31 = r35.getLanguage()
            gnu.kawa.lispexpr.LispLanguage r31 = (gnu.kawa.lispexpr.LispLanguage) r31
            r0 = r31
            r1 = r30
            r2 = r35
            gnu.expr.Expression r13 = r0.checkDefaultBinding(r1, r2)
            if (r13 == 0) goto L_0x011c
            r25 = r13
            goto L_0x0032
        L_0x0328:
            gnu.expr.ScopeExp r31 = r10.getContext()
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.PatternScope
            r31 = r0
            if (r31 == 0) goto L_0x035b
            java.lang.StringBuilder r31 = new java.lang.StringBuilder
            r31.<init>()
            java.lang.String r32 = "reference to pattern variable "
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = r10.getName()
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = " outside syntax template"
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r31
            gnu.expr.Expression r25 = r0.syntaxError(r1)
            goto L_0x0032
        L_0x035b:
            gnu.expr.ReferenceExp r24 = new gnu.expr.ReferenceExp
            r0 = r24
            r1 = r21
            r0.<init>(r1, r10)
            r0 = r24
            r0.setContextDecl(r5)
            r0 = r24
            r1 = r35
            r0.setLine(r1)
            if (r37 == 0) goto L_0x037d
            if (r28 == 0) goto L_0x037d
            r31 = 8
            r0 = r24
            r1 = r31
            r0.setFlag(r1)
        L_0x037d:
            r25 = r24
            goto L_0x0032
        L_0x0381:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r31 = r0
            if (r31 == 0) goto L_0x039b
            gnu.expr.LangExp r36 = (gnu.expr.LangExp) r36
            java.lang.Object r31 = r36.getLangValue()
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)
            goto L_0x0032
        L_0x039b:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.Expression
            r31 = r0
            if (r31 == 0) goto L_0x03a9
            gnu.expr.Expression r36 = (gnu.expr.Expression) r36
            r25 = r36
            goto L_0x0032
        L_0x03a9:
            gnu.expr.Special r31 = gnu.expr.Special.abstractSpecial
            r0 = r36
            r1 = r31
            if (r0 != r1) goto L_0x03b5
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.abstractExp
            goto L_0x0032
        L_0x03b5:
            r0 = r36
            r1 = r35
            java.lang.Object r31 = kawa.lang.Quote.quote(r0, r1)
            r0 = r31
            r1 = r35
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r0, r1)
            goto L_0x0032
        L_0x03c7:
            r14 = move-exception
            r5 = r6
            goto L_0x02cf
        */
        throw new UnsupportedOperationException("Method not decompiled: kawa.lang.Translator.rewrite(java.lang.Object, boolean):gnu.expr.Expression");
    }
public gnu . expr . Expression rewrite ( java . lang . Object r36 , boolean r37 ) { /*
            r35 = this;
            r0 = r36
            boolean r0 = r0 instanceof kawa.lang.SyntaxForm
            r31 = r0
            if (r31 == 0) goto L_0x003c
            r29 = r36
            kawa.lang.SyntaxForm r29 = (kawa.lang.SyntaxForm) r29
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r26 = r0
            kawa.lang.TemplateScope r31 = r29.getScope()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r0.setCurrentScope(r1)     // Catch:{ all -> 0x0033 }
            java.lang.Object r31 = r29.getDatum()     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)     // Catch:{ all -> 0x0033 }
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
        L_0x0032:
            return r25
        L_0x0033:
            r31 = move-exception
            r0 = r35
            r1 = r26
            r0.setCurrentScope(r1)
            throw r31
        L_0x003c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.PairWithPosition
            r31 = r0
            if (r31 == 0) goto L_0x0055
            r31 = r36
            gnu.lists.PairWithPosition r31 = (gnu.lists.PairWithPosition) r31
            r0 = r35
            r1 = r36
            r2 = r37
            r3 = r31
            gnu.expr.Expression r25 = r0.rewrite_with_position(r1, r2, r3)
            goto L_0x0032
        L_0x0055:
            r0 = r36
            boolean r0 = r0 instanceof gnu.lists.Pair
            r31 = r0
            if (r31 == 0) goto L_0x0064
            gnu.lists.Pair r36 = (gnu.lists.Pair) r36
            gnu.expr.Expression r25 = r35.rewrite_pair(r36, r37)
            goto L_0x0032
        L_0x0064:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x0381
            boolean r31 = r35.selfEvaluatingSymbol(r36)
            if (r31 != 0) goto L_0x0381
            r0 = r35
            gnu.expr.NameLookup r0 = r0.lexical
            r31 = r0
            r0 = r31
            r1 = r36
            r2 = r37
            gnu.expr.Declaration r10 = r0.lookup(r1, r2)
            r5 = 0
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r27 = r0
            if (r10 != 0) goto L_0x0134
            r11 = -1
        L_0x008c:
            r0 = r36
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r31 = r0
            if (r31 == 0) goto L_0x013e
            r31 = r36
            gnu.mapping.Symbol r31 = (gnu.mapping.Symbol) r31
            boolean r31 = r31.hasEmptyNamespace()
            if (r31 == 0) goto L_0x013e
            java.lang.String r12 = r36.toString()
        L_0x00a2:
            if (r27 == 0) goto L_0x00d2
            r0 = r27
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r31 = r0
            if (r31 == 0) goto L_0x018b
            r31 = r27
            gnu.expr.LambdaExp r31 = (gnu.expr.LambdaExp) r31
            boolean r31 = r31.isClassMethod()
            if (r31 == 0) goto L_0x018b
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            int r31 = gnu.expr.ScopeExp.nesting(r31)
            r0 = r31
            if (r11 < r0) goto L_0x0143
        L_0x00d2:
            if (r10 == 0) goto L_0x01cb
            java.lang.Object r21 = r10.getSymbol()
            r36 = 0
            gnu.expr.ReferenceExp r24 = getOriginalRef(r10)
            if (r24 == 0) goto L_0x00ec
            gnu.expr.Declaration r10 = r24.getBinding()
            if (r10 != 0) goto L_0x00ec
            java.lang.Object r36 = r24.getSymbol()
            r21 = r36
        L_0x00ec:
            r31 = r36
        L_0x00ee:
            r30 = r31
            gnu.mapping.Symbol r30 = (gnu.mapping.Symbol) r30
            gnu.expr.Language r32 = r35.getLanguage()
            boolean r28 = r32.hasSeparateFunctionNamespace()
            if (r10 == 0) goto L_0x0220
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.TemplateScope
            r31 = r0
            if (r31 == 0) goto L_0x01d1
            boolean r31 = r10.needsContext()
            if (r31 == 0) goto L_0x01d1
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.current_scope
            r31 = r0
            kawa.lang.TemplateScope r31 = (kawa.lang.TemplateScope) r31
            r0 = r31
            gnu.expr.Declaration r5 = r0.macroContext
        L_0x011c:
            if (r10 == 0) goto L_0x035b
            if (r37 != 0) goto L_0x0328
            java.lang.Object r31 = r10.getConstantValue()
            r0 = r31
            boolean r0 = r0 instanceof kawa.standard.object
            r31 = r0
            if (r31 == 0) goto L_0x0328
            java.lang.Class<java.lang.Object> r31 = java.lang.Object.class
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r31)
            goto L_0x0032
        L_0x0134:
            gnu.expr.ScopeExp r0 = r10.context
            r31 = r0
            int r11 = gnu.expr.ScopeExp.nesting(r31)
            goto L_0x008c
        L_0x013e:
            r12 = 0
            r27 = 0
            goto L_0x00a2
        L_0x0143:
            r4 = r27
            gnu.expr.LambdaExp r4 = (gnu.expr.LambdaExp) r4
            r0 = r27
            gnu.expr.ScopeExp r7 = r0.outer
            gnu.expr.ClassExp r7 = (gnu.expr.ClassExp) r7
            gnu.bytecode.ClassType r9 = r7.getClassType()
            gnu.bytecode.Member r22 = gnu.kawa.reflect.SlotGet.lookupMember(r9, r12, r9)
            gnu.expr.LambdaExp r0 = r7.clinitMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x016f
            gnu.expr.LambdaExp r0 = r7.initMethod
            r31 = r0
            r0 = r31
            if (r4 == r0) goto L_0x0193
            gnu.expr.Declaration r0 = r4.nameDecl
            r31 = r0
            boolean r31 = r31.isStatic()
            if (r31 == 0) goto L_0x0193
        L_0x016f:
            r8 = 1
        L_0x0170:
            if (r22 != 0) goto L_0x0198
            if (r8 == 0) goto L_0x0195
            r20 = 83
        L_0x0176:
            r0 = r35
            gnu.expr.Language r0 = r0.language
            r31 = r0
            r0 = r20
            r1 = r31
            gnu.expr.PrimProcedure[] r19 = gnu.kawa.reflect.ClassMethods.getMethods(r9, r12, r0, r9, r1)
            r0 = r19
            int r0 = r0.length
            r31 = r0
            if (r31 != 0) goto L_0x0198
        L_0x018b:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x00a2
        L_0x0193:
            r8 = 0
            goto L_0x0170
        L_0x0195:
            r20 = 86
            goto L_0x0176
        L_0x0198:
            if (r8 == 0) goto L_0x01bd
            gnu.expr.ReferenceExp r23 = new gnu.expr.ReferenceExp
            gnu.expr.ScopeExp r0 = r4.outer
            r31 = r0
            gnu.expr.ClassExp r31 = (gnu.expr.ClassExp) r31
            r0 = r31
            gnu.expr.Declaration r0 = r0.nameDecl
            r31 = r0
            r0 = r23
            r1 = r31
            r0.<init>(r1)
        L_0x01af:
            gnu.expr.QuoteExp r31 = gnu.expr.QuoteExp.getInstance(r12)
            r0 = r23
            r1 = r31
            gnu.expr.Expression r25 = gnu.kawa.functions.CompileNamedPart.makeExp(r0, r1)
            goto L_0x0032
        L_0x01bd:
            gnu.expr.ThisExp r23 = new gnu.expr.ThisExp
            gnu.expr.Declaration r31 = r4.firstDecl()
            r0 = r23
            r1 = r31
            r0.<init>(r1)
            goto L_0x01af
        L_0x01cb:
            r21 = r36
            r31 = r36
            goto L_0x00ee
        L_0x01d1:
            r32 = 1048576(0x100000, double:5.180654E-318)
            r0 = r32
            boolean r31 = r10.getFlag(r0)
            if (r31 == 0) goto L_0x011c
            boolean r31 = r10.isStatic()
            if (r31 != 0) goto L_0x011c
            gnu.expr.ScopeExp r27 = r35.currentScope()
        L_0x01e6:
            if (r27 != 0) goto L_0x0203
            java.lang.Error r31 = new java.lang.Error
            java.lang.StringBuilder r32 = new java.lang.StringBuilder
            r32.<init>()
            java.lang.String r33 = "internal error: missing "
            java.lang.StringBuilder r32 = r32.append(r33)
            r0 = r32
            java.lang.StringBuilder r32 = r0.append(r10)
            java.lang.String r32 = r32.toString()
            r31.<init>(r32)
            throw r31
        L_0x0203:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r31 = r0
            gnu.expr.ScopeExp r0 = r10.context
            r32 = r0
            r0 = r31
            r1 = r32
            if (r0 != r1) goto L_0x0219
            gnu.expr.Declaration r5 = r27.firstDecl()
            goto L_0x011c
        L_0x0219:
            r0 = r27
            gnu.expr.ScopeExp r0 = r0.outer
            r27 = r0
            goto L_0x01e6
        L_0x0220:
            r0 = r35
            gnu.mapping.Environment r0 = r0.env
            r33 = r0
            if (r37 == 0) goto L_0x027d
            if (r28 == 0) goto L_0x027d
            java.lang.Object r32 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x022c:
            r0 = r33
            r1 = r30
            r2 = r32
            gnu.mapping.Location r18 = r0.lookup(r1, r2)
            if (r18 == 0) goto L_0x023c
            gnu.mapping.Location r18 = r18.getBase()
        L_0x023c:
            r0 = r18
            boolean r0 = r0 instanceof gnu.kawa.reflect.FieldLocation
            r32 = r0
            if (r32 == 0) goto L_0x030a
            r17 = r18
            gnu.kawa.reflect.FieldLocation r17 = (gnu.kawa.reflect.FieldLocation) r17
            gnu.expr.Declaration r10 = r17.getDeclaration()     // Catch:{ Throwable -> 0x02ce }
            r32 = 0
            r0 = r35
            r1 = r32
            boolean r32 = r0.inlineOk(r1)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
            gnu.expr.Declaration r32 = getNamedPartDecl     // Catch:{ Throwable -> 0x02ce }
            r0 = r32
            if (r10 == r0) goto L_0x0280
            java.lang.String r32 = "objectSyntax"
            java.lang.String r33 = r17.getMemberName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x027a
            java.lang.String r32 = "kawa.standard.object"
            gnu.bytecode.ClassType r33 = r17.getDeclaringClass()     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r33 = r33.getName()     // Catch:{ Throwable -> 0x02ce }
            boolean r32 = r32.equals(r33)     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x0280
        L_0x027a:
            r10 = 0
            goto L_0x011c
        L_0x027d:
            r32 = 0
            goto L_0x022c
        L_0x0280:
            r0 = r35
            boolean r0 = r0.immediate     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 == 0) goto L_0x02a8
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 != 0) goto L_0x011c
            gnu.expr.Declaration r6 = new gnu.expr.Declaration     // Catch:{ Throwable -> 0x02ce }
            java.lang.String r32 = "(module-instance)"
            r0 = r32
            r6.<init>(r0)     // Catch:{ Throwable -> 0x02ce }
            gnu.expr.QuoteExp r32 = new gnu.expr.QuoteExp     // Catch:{ Throwable -> 0x03c7 }
            java.lang.Object r33 = r17.getInstance()     // Catch:{ Throwable -> 0x03c7 }
            r32.<init>(r33)     // Catch:{ Throwable -> 0x03c7 }
            r0 = r32
            r6.setValue(r0)     // Catch:{ Throwable -> 0x03c7 }
            r5 = r6
            goto L_0x011c
        L_0x02a8:
            boolean r32 = r10.isStatic()     // Catch:{ Throwable -> 0x02ce }
            if (r32 == 0) goto L_0x02cb
            java.lang.Class r15 = r17.getRClass()     // Catch:{ Throwable -> 0x02ce }
            if (r15 == 0) goto L_0x02c8
            java.lang.ClassLoader r16 = r15.getClassLoader()     // Catch:{ Throwable -> 0x02ce }
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ZipLoader     // Catch:{ Throwable -> 0x02ce }
            r32 = r0
            if (r32 != 0) goto L_0x02c8
            r0 = r16
            boolean r0 = r0 instanceof gnu.bytecode.ArrayClassLoader     // Catch:{ Throwable -> 0x02ce }
            r31 = r0
            if (r31 == 0) goto L_0x011c
        L_0x02c8:
            r10 = 0
            goto L_0x011c
        L_0x02cb:
            r10 = 0
            goto L_0x011c
        L_0x02ce:
            r14 = move-exception
        L_0x02cf:
            r32 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "exception loading '"
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r31
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = "' - "
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r33 = r14.getMessage()
            r0 = r31
            r1 = r33
            java.lang.StringBuilder r31 = r0.append(r1)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r32
            r2 = r31
            r0.error(r1, r2)
            r10 = 0
            goto L_0x011c
        L_0x030a:
            if (r18 == 0) goto L_0x0312
            boolean r31 = r18.isBound()
            if (r31 != 0) goto L_0x011c
        L_0x0312:
            gnu.expr.Language r31 = r35.getLanguage()
            gnu.kawa.lispexpr.LispLanguage r31 = (gnu.kawa.lispexpr.LispLanguage) r31
            r0 = r31
            r1 = r30
            r2 = r35
            gnu.expr.Expression r13 = r0.checkDefaultBinding(r1, r2)
            if (r13 == 0) goto L_0x011c
            r25 = r13
            goto L_0x0032
        L_0x0328:
            gnu.expr.ScopeExp r31 = r10.getContext()
            r0 = r31
            boolean r0 = r0 instanceof kawa.lang.PatternScope
            r31 = r0
            if (r31 == 0) goto L_0x035b
            java.lang.StringBuilder r31 = new java.lang.StringBuilder
            r31.<init>()
            java.lang.String r32 = "reference to pattern variable "
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = r10.getName()
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r32 = " outside syntax template"
            java.lang.StringBuilder r31 = r31.append(r32)
            java.lang.String r31 = r31.toString()
            r0 = r35
            r1 = r31
            gnu.expr.Expression r25 = r0.syntaxError(r1)
            goto L_0x0032
        L_0x035b:
            gnu.expr.ReferenceExp r24 = new gnu.expr.ReferenceExp
            r0 = r24
            r1 = r21
            r0.<init>(r1, r10)
            r0 = r24
            r0.setContextDecl(r5)
            r0 = r24
            r1 = r35
            r0.setLine(r1)
            if (r37 == 0) goto L_0x037d
            if (r28 == 0) goto L_0x037d
            r31 = 8
            r0 = r24
            r1 = r31
            r0.setFlag(r1)
        L_0x037d:
            r25 = r24
            goto L_0x0032
        L_0x0381:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.LangExp
            r31 = r0
            if (r31 == 0) goto L_0x039b
            gnu.expr.LangExp r36 = (gnu.expr.LangExp) r36
            java.lang.Object r31 = r36.getLangValue()
            r0 = r35
            r1 = r31
            r2 = r37
            gnu.expr.Expression r25 = r0.rewrite(r1, r2)
            goto L_0x0032
        L_0x039b:
            r0 = r36
            boolean r0 = r0 instanceof gnu.expr.Expression
            r31 = r0
            if (r31 == 0) goto L_0x03a9
            gnu.expr.Expression r36 = (gnu.expr.Expression) r36
            r25 = r36
            goto L_0x0032
        L_0x03a9:
            gnu.expr.Special r31 = gnu.expr.Special.abstractSpecial
            r0 = r36
            r1 = r31
            if (r0 != r1) goto L_0x03b5
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.abstractExp
            goto L_0x0032
        L_0x03b5:
            r0 = r36
            r1 = r35
            java.lang.Object r31 = kawa.lang.Quote.quote(r0, r1)
            r0 = r31
            r1 = r35
            gnu.expr.QuoteExp r25 = gnu.expr.QuoteExp.getInstance(r0, r1)
            goto L_0x0032
        L_0x03c7:
            r14 = move-exception
            r5 = r6
            goto L_0x02cf
        */ throw new UnsupportedOperationException ( "Method not decompiled: kawa.lang.Translator.rewrite(java.lang.Object, boolean):gnu.expr.Expression" ) ; }
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .