throw new Exception("Multiple matching commands for: " + hname.substring(5));
multiple = true; continue;
    DynamicCmd(CommandGroup cg, String name) throws Exception {        try {            Class cls = cg.getClass();            String hname = "HELP_" + name.toUpperCase();            Field[] f = cls.getFields();            int match = -1;            for (int i = 0; i < f.length; i++) {                String fname = f[i].getName();                if (fname.startsWith(hname)) {                    if (match != -1) {                        throw new Exception("Multiple matching commands for: "                                + hname.substring(5));                    }                    match = i;                    if (fname.equals(hname)) {                        break;                    }                    name = fname.substring(5);                }            }            if (match == -1) {                throw new Exception("No such command: " + name);            }            help = (String[]) f[match].get(cg);            usage = (String) cls.getField("USAGE_" + name.toUpperCase())                    .get(cg);            cmd = cls.getMethod("cmd" + name.substring(0, 1).toUpperCase()                    + name.substring(1).toLowerCase(), new Class[] {                    java.util.Dictionary.class, java.io.Reader.class,                    java.io.PrintWriter.class, Session.class });            if (!cmd.getReturnType().getName().equals("int")) {                throw new Exception("No such command: " + name);            }        } catch (ClassNotFoundException e) {            throw new Exception("Internal error");        } catch (NoSuchFieldException e) {            throw new Exception(                    "Command implementation incomplete (USAGE string missing): "                            + name);        } catch (NoSuchMethodException e) {            throw new Exception(                    "Command implementation incomplete (cmd method missing): "                            + name);        }    }