if (ToplevelList.isSystemElement(namespace, name)) { return new ToplevelList(name, namespace);
if (SystemElement.isSystemElement(namespace, name)) { return new SystemElement(name, namespace);
    public Element startMakingElement(String fullname, String namespace) {        String name=fullname;        int colon = name.indexOf(':');        if(colon>=0) {            name=name.substring(colon+1);        }        if(RootNode.isA(namespace,name) ) {            return new RootNode(name,namespace);        }        //imports come first        if (Import.isA(namespace, name)) {            return new Import(name,namespace);        }        //type declarations        //what to do with these?        if (Type.isA(namespace,name) ) {            return new Type(name, namespace);        }        //<configuration> element        if (ToplevelList.isConfigurationElement(namespace,name)) {            return new ToplevelList(name, namespace);        }        //<system> element        if (ToplevelList.isSystemElement(namespace, name)) {            return new ToplevelList(name, namespace);        }        //add a doc node        if (Documentation.isA(namespace,name) ) {            return new Documentation(name, namespace);        }        if (Expression.isA(namespace,name) ) {            return new Expression(name, namespace);        }        if (Variable.isA(namespace,name) ) {            return new Variable(name, namespace);        }        //else, it is not a recognised type, so we make a property list from it        return new PropertyList(name, namespace);    }