handleBody1( helpMap3 )),
theBody),
    Tree _cur_match( Tree pat ) {        //System.out.println("RTiS._cur_match("+pat.toString()+")");        //System.out.println("calling algebraic matcher on type:"+pat.type);        //System.err.println( "curT"+currentElem().type().widen() );        Matcher m = new Matcher( owner,//funSym,//this.funSym,                                  currentElem(),                                 defs.BOOLEAN_TYPE() );        final HashMap freshenMap = new HashMap(); // sym2exp -> new sym        HashMap helpMap3 = new HashMap();         // new sym -> original sym        // "freshening": never use the same symbol more than once         // (in later invocations of _cur_match)        for( Iterator it = varsToExport.iterator(); it.hasNext(); ) {            Symbol key = (Symbol) it.next();            if( key.name.toString().indexOf("$") == -1 ) {                this.helpMap2.put( key, helpMap.get( key ));                // "freshening" by appending string ( a bit dangerous )                Symbol newSym = key.cloneSymbol().setOwner( funSym );                newSym.name = key.name.append( Name.fromString("%") );                freshenMap.put( key, newSym );                helpMap3.put( newSym, helpMap.get( key ));                //System.out.println( "key: "+ key + " key.owner:"+key.owner());                //System.out.println( "newsym owner:"+newSym.owner());            } else {                freshenMap.put( key, key );            }        }                //System.out.println("RightTracerInScala:: -pat :"+pat.toString());        /*System.out.println("RightTracerInScala - the seqVars"+seqVars);        System.out.println("RightTracerInScala - the varsToExport"+varsToExport);        */                //System.out.println("RightTracerInScala::freshenMap :"+freshenMap);                // "freshening"        /* TEST          */        TreeCloner tc = new TreeCloner( cf.unit.global, freshenMap, Type.IdMap );               /*        Transformer tc = new Transformer(cf.unit.global) {                public Tree transform(Tree tree) {                    tree = super.transform(tree);                    if (tree.hasSymbol()) {                        Object symbol = freshenMap.get(tree.symbol());                        if (symbol != null) tree.setSymbol((Symbol)symbol);                    }                    return tree;                }            };        */        pat = tc.transform( pat );        //System.out.println("RightTracerInScala:: -pat( after subst ) :"+pat);        // val match { case <pat> => { <do binding>; true }         //             case _     => false        am.construct( m, new CaseDef[] {            cf.gen.CaseDef( pat,           // if tree val matches pat -> update vars, return true                            handleBody1( helpMap3 )/* "freshening */),            cf.gen.CaseDef( cf.gen.Ident( pat.pos, defs.PATTERN_WILDCARD ),                            gen.mkBooleanLit( pat.pos, false )) }, // else return false                      true // do binding please                       );                    return  am.toTree();    }