public void gen_eval_body(Map<String, Object> context, QLSelect select, PrintWriter out) {
        Class<?> clazz = (Class<?>) context.get("class");

        if (clazz == null) {
            throw new IllegalArgumentException("context not contains 'class'");
        }

        String className = clazz.getName();
        className = className.replaceAll("\\$", ".");

        String entryVarName = "item";

        out.println("		List<" + className + "> " + srcCollectionName + " = (List<" + className
                    + ">) ctx.get(\"_src_\");");
        out.println("		List<" + className + "> " + destCollectionName + " = (List<" + className
                    + ">) ctx.get(\"_dest_\");");

        final QLLimit limit = select.getLimit();
        if (limit != null) {
            if (limit.getOffset() != null) {
                out.println("		final int offset = " + limit.getOffset() + ";");
            }
            out.println("		final int rowCount = " + limit.getRowCount() + ";");
            out.println();

            if (limit.getOffset() != null) {
                out.println("		int rowIndex = 0;");
            }
        }

        out.println("		for (" + className + " " + entryVarName + " : " + srcCollectionName + ") {");
        out.println();

        gen_where(context, select, out);

        out.println();
        out.println("		}");

        gen_orderBy(context, select, out);
        gen_limit(context, select, out);
    }