} else if (parameterTypes[i].getName().equalsIgnoreCase("string")) {
} else if (parameterTypes[i].getName().endsWith("String")) {
    private void reflectInvokeMethod(Object invokeVictim, Method method,            String[] args) throws InvocationTargetException, Exception {        Class[] parameterTypes = method.getParameterTypes();        Object[] conformingArguments = new Object[parameterTypes.length];        if (args.length < parameterTypes.length) {            throw new Exception("Insufficient arguments were supplied");        }        //TODO: is there a better way to do this?        for (int i = 0; i < parameterTypes.length; i++) {            if (parameterTypes[i].getName().equalsIgnoreCase("int")) {                conformingArguments[i] = new Integer(args[i]);            } else if (parameterTypes[i].getName().equalsIgnoreCase("float")) {                conformingArguments[i] = new Float(args[i]);            } else if (parameterTypes[i].getName().equalsIgnoreCase("string")) {                conformingArguments[i] = args[i];            } else if (parameterTypes[i].getName().equalsIgnoreCase("boolean")) {                conformingArguments[i] = new Boolean(args[i]);            } else {                //TODO: is it necessary to warn anyone that we're defaulting?                conformingArguments[i] = args[i];            }        }        method.invoke(invokeVictim,conformingArguments);    }