private static String[] safeSplit(String cmdString)
	{
		//This will be converted into an array and returned in the end
		ArrayList<String> parts = new ArrayList<String>();
		
		StringBuilder partBuilder = new StringBuilder();
		
		char[] chars = cmdString.toCharArray();
		
		boolean goingThroughVariant = false;
		for(int ii = 0; ii < chars.length; ii++)
		{
			char c = chars[ii];
			switch(c)
			{
			case '{':
				goingThroughVariant = true;
				partBuilder.append(c);
				break;
			case '}':
				partBuilder.append(c);
				goingThroughVariant = false;
				break;
				
			case ' ':
				if (goingThroughVariant == false)
				{
					//Make sure there is something to add to the part list
					if(partBuilder.length() > 0)
					{
						parts.add(partBuilder.toString());
					}
					//empty partBuilder
					partBuilder.setLength(0);
					break;
				}
				//we are going though a variant so we're going to fall though and append it to the part builder
			default:
				partBuilder.append(c);
			}
		}
		
		//We have some stragglers
		if(partBuilder.length() > 0)
		{
			parts.add(partBuilder.toString());
		}
		
		return parts.toArray(new String[parts.size()]);
	}