int i = 0; while( i < fields.length ) { tags[i] = ++i; };
int i = 0; while( i < fields.length ) { tags[i] = i; ++i; };
    private Tree selectElementMethod( ClassSymbol clazz ) {	Symbol seSym = clazz.newMethod( clazz.pos, OVERRIDE, Names.selectElement );	Symbol seParam = seSym.newVParam(            clazz.pos, 0, Names.n, defs.INT_TYPE());        seSym.setInfo(             Type.MethodType( new Symbol[]{ seParam }, defs.ANY_TYPE() ));	clazz.info().members().enter( seSym );	Tree[] fields = caseFields( clazz );        Tree body;        if( fields.length > 0) {        // switch< n >            int tags[] = new int[ fields.length ];            int i = 0; while( i < fields.length ) { tags[i] = ++i; };            body = gen.Switch( gen.mkLocalRef( clazz.pos, seParam ),                               tags,                               fields,                               gen.mkNullLit( clazz.pos ),                               defs.ANY_TYPE() );        }        else            body = gen.mkNullLit( clazz.pos );	return gen.DefDef(seSym, body);    }