public async Task ParseAsyncTest()
		{
			Arguments arguments = new Arguments();
			AssertHelpers.ThrowsException<ArgumentNullException>(() => { arguments.Parse(null); });
			String[] args = new String[]
			{
				"file arg 1",
				"--test",
				"--testValue=value1",
				"--test-value=\"value 2\"",
				"/?",
				"--help",
				"-d",
				"-5=cheese",
				"../Test/"
			};

			await arguments.ParseAsync(args);
			Assert.IsTrue(arguments.HasArgument("test"), "argument test was not detected");
			Assert.IsTrue(arguments.HasArgument("testvalue"), "argument testvalue was not detected");
			Assert.IsTrue(arguments.HasArgument("test-value"), "argument test-value was not detected");
			Assert.IsTrue(arguments.HasArgument("?"), "argument ? was not detected");
			Assert.IsTrue(arguments.HasArgument("help"), "argument help was not detected");
			Assert.IsTrue(arguments.HasArgument("d"), "argument d was not detected");
			Assert.IsTrue(arguments.HasArgument("5"), "argument 5 was not detected");
			Assert.IsFalse(arguments.HasArgument("testdir"), "argument testdir was detected and should not have been.");
			Assert.IsNull(arguments.ArgumentValue("test"), "argument test should not have a value");
			Assert.AreEqual("value1", arguments.ArgumentValue("testvalue"), "testvalue was not the correct value");
			Assert.AreEqual("value 2", arguments.ArgumentValue("test-value"), "test-value was not the correct value");
			Assert.IsNull(arguments.ArgumentValue("?"), "argument ? should not have a value");
			Assert.IsNull(arguments.ArgumentValue("help"), "argument help should not have a value");
			Assert.IsNull(arguments.ArgumentValue("d"), "argument d should not have a value");
			Assert.AreEqual("cheese", arguments.ArgumentValue("5"), "argument 5 value is not what we expected");
			var list = arguments.NonArgumentValues;
			Assert.IsNotNull(list, "list is null and should not be");
			Assert.AreEqual(2, list.Count, "list count does not match");

			Assert.AreEqual("file arg 1", list[0]);
			Assert.AreEqual("../Test/", list[1]);
		}