Analisar uma string com delimitadores e carregá-la em um mapa?

Eu tenho abaixo String, que está no formato dekey1=value1, key2=value2 que eu preciso carregá-lo em um mapa(Map<String, String>) Comokey=value então eu preciso dividir por vírgula, e depois carregarcossn como chave e0 seu valor.

String payload = "cossn=0, abc=hello/=world, Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";

HashMap<String, String> holder = new HashMap();
String[] keyVals = payload.split(", ");
for(String keyVal:keyVals) {
  String[] parts = keyVal.split("=",2);
  holder.put(parts[0], parts[1]);
}   

estou obtendojava.lang.ArrayIndexOutOfBoundsException nesta linhaholder.put(parts[0], parts[1]); e está acontecendo bcoz dessa StringAgent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 pois tem uma vírgula extra no valorKHTML, like Gecko.

Como posso consertar isso? Em geral, abaixo devem ser minhas chaves e valor após carregá-lo em um mapa.

Key         Value
cossn       0
abc         hello/=world
Agent       Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36

questionAnswers(2)

yourAnswerToTheQuestion