nodes: 0, module; 1, function_definition; 2, function_name:_parse_options; 3, parameters; 4, type; 5, block; 6, typed_parameter; 7, generic_type; 8, expression_statement; 9, try_statement; 10, identifier:options; 11, type; 12, identifier:Dict; 13, type_parameter; 14, comment:""" Parse repeatable CLI options
  
      >>> opts = _parse_options(['cluster.name=foo', 'CRATE_JAVA_OPTS="-Dxy=foo"'])
      >>> print(json.dumps(opts, sort_keys=True))
      {"CRATE_JAVA_OPTS": "\\"-Dxy=foo\\"", "cluster.name": "foo"}
      """; 15, block; 16, except_clause; 17, generic_type; 18, type; 19, type; 20, return_statement; 21, identifier:ValueError; 22, block; 23, identifier:List; 24, type_parameter; 25, identifier:str; 26, identifier:str; 27, call; 28, raise_statement; 29, type; 30, identifier:dict; 31, generator_expression; 32, call; 33, identifier:str; 34, call; 35, for_in_clause; 36, identifier:ArgumentError; 37, argument_list; 38, attribute; 39, argument_list; 40, identifier:i; 41, identifier:options; 42, string; 43, identifier:i; 44, identifier:split; 45, string; 46, keyword_argument; 47, string_content:Option must be in format <key>=<value>, got:; 48, interpolation; 49, string_content:=; 50, identifier:maxsplit; 51, integer:1; 52, identifier:options
code: def _parse_options(options: List[str]) -> Dict[str, str]:
      """ Parse repeatable CLI options
  
      >>> opts = _parse_options(['cluster.name=foo', 'CRATE_JAVA_OPTS="-Dxy=foo"'])
      >>> print(json.dumps(opts, sort_keys=True))
      {"CRATE_JAVA_OPTS": "\\"-Dxy=foo\\"", "cluster.name": "foo"}
      """
      try:
          return dict(i.split('=', maxsplit=1) for i in options)
      except ValueError:
          raise ArgumentError(
              f'Option must be in format <key>=<value>, got: {options}')