code: public static BinaryString keyValue(
  		BinaryString str, BinaryString pairSeparator, BinaryString kvSeparator, BinaryString keyName) {
  		if (str == null || str.getSizeInBytes() == 0) {
  			return null;
  		}
  		if (pairSeparator != null && pairSeparator.getSizeInBytes() == 1 &&
  			kvSeparator != null && kvSeparator.getSizeInBytes() == 1) {
  			return str.keyValue(pairSeparator.getByte(0), kvSeparator.getByte(0), keyName);
  		} else {
  			return BinaryString.fromString(
  				keyValue(
  					BinaryString.safeToString(str),
  					BinaryString.safeToString(pairSeparator),
  					BinaryString.safeToString(kvSeparator),
  					BinaryString.safeToString(keyName)));
  		}
  	}
docs: Parse string as key-value string and return the value matches key name.
  example:
  keyvalue('k1=v1;k2=v2', ';', '=', 'k2') = 'v2'
  keyvalue('k1:v1,k2:v2', ',', ':', 'k3') = NULL
  
  @param str     target string.
  @param pairSeparator  separator between key-value tuple.
  @param kvSeparator  separator between key and value.
  @param keyName name of the key whose value you want return.
  @return target value.