public Code Field(Code baseExpr, String name)
        {
            Type      scope = (baseExpr == null) ? cls : ((Node)baseExpr).Type;
            FieldInfo f     = QueryImpl.lookupField(scope, name);

            if (f == null)
            {
                throw new CodeGeneratorException("No such field " + name + " in class " + scope);
            }
            return(new LoadNode((Node)baseExpr, f));
        }
        public void OrderBy(String name, bool ascent)
        {
            FieldInfo f = QueryImpl.lookupField(cls, name);
            OrderNode node;

            if (f == null)
            {
                MethodInfo m = QueryImpl.lookupMethod(cls, name, QueryImpl.defaultProfile);
                if (m == null)
                {
                    throw new CodeGeneratorException("No such field " + name + " in class " + cls);
                }
                else
                {
                    node = new OrderNode(m);
                }
            }
            else
            {
                node = new OrderNode(f);
            }
            node.ascent = ascent;
            if (query.order == null)
            {
                query.order = node;
            }
            else
            {
                OrderNode last;
                for (last = query.order; last.next != null; last = last.next)
                {
                    ;
                }
                last.next = node;
            }
        }