docs: public static String[] splitOptions(String quotedOptionString) throws Exception{
  
      Vector<String> optionsVec = new Vector<String>();
      String str = new String(quotedOptionString);
      int i;
      
      while (true){
  
        //trimLeft 
        i = 0;
        while ((i < str.length()) && (Character.isWhitespace(str.charAt(i)))) i++;
        str = str.substring(i);
        
        //stop when str is empty
        if (str.length() == 0) break;
        
        //if str start with a double quote
        if (str.charAt(0) == '"'){
  	
  	//find the first not anti-slached double quote
  	i = 1;
  	while(i < str.length()){
  	  if (str.charAt(i) == str.charAt(0)) break;
  	  if (str.charAt(i) == '\\'){
  	    i += 1;
  	    if (i >= str.length()) 
  	      throw new Exception("String should not finish with \\");
  	  }
  	  i += 1;
  	}
  	if (i >= str.length()) throw new Exception("Quote parse error.");
  	
  	//add the founded string to the option vector (without quotes)
  	String optStr = str.substring(1,i);
  	optStr = unbackQuoteChars(optStr);
  	optionsVec.addElement(optStr);
  	str = str.substring(i+1);
        } else {
  	//find first whiteSpace
  	i=0;
  	while((i < str.length()) && (!Character.isWhitespace(str.charAt(i)))) i++;
  	
  	//add the founded string to the option vector
  	String optStr = str.substring(0,i);
  	optionsVec.addElement(optStr);
  	str = str.substring(i);
        }
      }
      
      //convert optionsVec to an array of String
      String[] options = new String[optionsVec.size()];
      for (i = 0; i < optionsVec.size(); i++) {
        options[i] = (String)optionsVec.elementAt(i);
      }
      return options;
    }