public Object getCommand(String name, Class[] argTypes, Interpreter interpreter) throws UtilEvalError {
		if (Interpreter.DEBUG)
			Interpreter.debug("getCommand: " + name);
		BshClassManager bcm = interpreter.getClassManager();

		if (importedCommands != null) {
			// loop backwards for precedence
			for (int i = importedCommands.size() - 1; i >= 0; i--) {
				String path = importedCommands.get(i);

				String scriptPath;
				if (path.equals("/"))
					scriptPath = path + name + ".bsh";
				else
					scriptPath = path + "/" + name + ".bsh";

				Interpreter.debug("searching for script: " + scriptPath);

				InputStream in = bcm.getResourceAsStream(scriptPath);

				if (in != null)
					return loadScriptedCommand(in, name, argTypes, scriptPath, interpreter);

				// Chop leading "/" and change "/" to "."
				String className;
				if (path.equals("/"))
					className = name;
				else
					className = path.substring(1).replace('/', '.') + "." + name;

				Interpreter.debug("searching for class: " + className);
				Class clas = bcm.classForName(className);
				if (clas != null)
					return clas;
			}
		}

		if (parent != null)
			return parent.getCommand(name, argTypes, interpreter);
		else
			return null;
	}