private String[] expandArgs(String[] originalArgv)
	{
		List<String> vResult1 = Lists.newArrayList();

		//
		// Expand @
		//
		for (String arg : originalArgv)
		{

			if (arg.startsWith("@"))
			{
				String fileName = arg.substring(1);
				vResult1.addAll(readFile(fileName));
			}
			else
			{
				List<String> expanded = expandDynamicArg(arg);
				vResult1.addAll(expanded);
			}
		}

		// Expand separators
		//
		List<String> vResult2 = Lists.newArrayList();
		for (int i = 0; i < vResult1.size(); i++)
		{
			String arg = vResult1.get(i);
			String[] v1 = vResult1.toArray(new String[0]);
			if (isOption(v1, arg))
			{
				String sep = getSeparatorFor(v1, arg);
				if (!" ".equals(sep))
				{
					String[] sp = arg.split("[" + sep + "]", 2);
					for (String ssp : sp)
					{
						vResult2.add(ssp);
					}
				}
				else
				{
					vResult2.add(arg);
				}
			}
			else
			{
				vResult2.add(arg);
			}
		}

		return vResult2.toArray(new String[vResult2.size()]);
	}