public static String[] normalizeArgs(String[] args) {
        if(args == null) {
            return null;
        } else if(args.length == 0) {
            return new String[0];
        } else if(args.length == 1) {
            return args;
        }
        
        List<String> stack = new ArrayList<String>();
        StringBuilder builder = new StringBuilder();
        boolean shrinking = false;
        for(String s : args) {
            
            // if this is not a starting '"' and we're not already shrinking...
            if(!s.startsWith("\"") && !shrinking) {
                stack.add(s);
            } else {
                builder.append(s).append(" ");
                shrinking = true;
            }
            
            // all this should only happen if we already had a starting "
            if(s.endsWith("\"") && shrinking) {
                builder.deleteCharAt(builder.length()-1);
                stack.add(builder.toString());
                builder = new StringBuilder();
                shrinking = false;
            }
        }
        
        // a string like hello "world or hello world" was entered
        // "hello " world" may also be possible but is considered illegal...
        if(shrinking == true) {
            return args;
        }
        
        return stack.toArray(new String[] {});
    }