public Object[] ic_trans(IcFun f,IcStmt_label break_to){
		/* t = new(size of field)
		 * then init...
		 */
		LinkedList<IcStmt> codes = new LinkedList<IcStmt>();
		IcOper r = null;
		
		/* 1.first get num and new*/
		RECORD re = (RECORD)the_type;
		int num = re.order.size();
		IcVar_tmp t = IcVar_tmp.new_one(f);
		codes.add(new IcStmt_new(f,0,new IcConst_int(num),t));
		/* 2.initialize the fields */
		for(Field ff : list.list){
			int place = re.order.indexOf(ff.sym);	//from 0
			Object[] result1 = ff.expr.ic_trans(f, break_to);
			codes.addAll((LinkedList<IcStmt>)result1[0]);
			IcOper the_value = (IcOper)result1[1];
			codes.add(new IcStmt_record(f,0,t,new IcConst_int(place),the_value));
		}
		
		return new Object[]{codes,t};
	}