private String checkValidArguments(String operation, String[] arguments)
	{
		//Checks if actual operation
		if(!operationArgs.containsKey(operation))
		{
			return "The operation you requested could not be found: " + operation;
		}
		//TODO Consolidate this and make it more efficient
		//Checks number of arguments.
		if(operation.equals("getSummonerNamesByIDs") && arguments.length < operationArgs.get(operation))
		{
			return "Invalid number of arguments for the requested operation. " + operation + " requires at least "
					+ operationArgs.get(operation) + " arguments.";
		}
		//Checks number of arguments when async is provided.
		if(arguments.length != operationArgs.get(operation) && (arguments.length != (operationArgs.get(operation)+1) && !(arguments[arguments.length-1].equals("true") || arguments[arguments.length-1].equals("false"))))
		{
			return "Invalid number of arguments for the requested operation. " + operation + " requires "
					+ operationArgs.get(operation) + " arguments.";
		}
		
		//Loops through all argument types and checks if all arguments for that operation that should be of one
		//of those types is valid, otherwise it returns an error.
		String argType;
		for(ArgumentTypes type : ArgumentTypes.values())
		{
			if(!(argType = checkArgumentType(operation, arguments, type)).equals("VALID"))
			{
				return argType;
			}
		}
		//Everything is correct
		return "VALID";
	}