public HashedMap<ByteChars, java.util.ArrayList<ResourceData>> loadRootServers(com.grey.logging.Logger logger)
			throws com.grey.base.ConfigException, javax.naming.NamingException, java.io.IOException
	{
		HashedMap<ByteChars, java.util.ArrayList<ResourceData>> roots = new HashedMap<ByteChars, java.util.ArrayList<ResourceData>>();
		boolean want_roots = auto_roots;
		if (auto_roots) {
			for (int idx = 0; idx != dns_localservers.length; idx++) {
				java.util.ArrayList<ResourceData> lst = lookupNameServers(ROOTDOM, dns_localservers[0], logger);
				if (lst.size() != 0) {
					roots.put(ROOTDOM_BC, lst);
					break;
				}
			}
		}
		if (pthnam_roots != null) {
			java.io.File fh = new java.io.File(pthnam_roots);
			RootsParser parser = new RootsParser(pthnam_roots, roots, logger);
			FileOps.readTextLines(fh, parser, 4096, "#", 0, null);
			if (!want_roots) want_roots = parser.want_roots;
		}
		if (roots.isEmpty()) {
			throw new com.grey.base.ConfigException(LOGLBL+"No root servers found - auto="+auto_roots+", file="+pthnam_roots);
		}
		if (want_roots && !roots.containsKey(ROOTDOM_BC)) {
			throw new com.grey.base.ConfigException(LOGLBL+"No global root servers found - auto="+auto_roots+", file="+pthnam_roots);
		}
		return roots;
	}