def METHOD_NAME(command, flags_options_operands) -> CommandInvocationInitial:
    cmd_name = format_arg_chars(command)
    json_data = get_json_data(cmd_name)
    set_of_all_flags: Set[str] = get_set_of_all_flags(json_data)
    dict_flag_to_primary_repr: dict[str, str] = get_dict_flag_to_primary_repr(json_data)
    set_of_all_options: Set[str] = get_set_of_all_options(json_data)
    dict_option_to_primary_repr: dict[str, str] = get_dict_option_to_primary_repr(json_data)
    # we keep the Arg for everything but flag and option names
    # parse list of command invocation terms
    flag_option_list: List[Any] = []
    i = 0
    while i < len(flags_options_operands):
        potential_flag_or_option_arg = flags_options_operands[i]
        potential_flag_or_option_name = format_arg_chars(potential_flag_or_option_arg)
        if potential_flag_or_option_name in set_of_all_flags:
            flag_name_as_string: str = dict_flag_to_primary_repr.get(potential_flag_or_option_name, potential_flag_or_option_name)
            flag: Flag = Flag(flag_name_as_string)
            flag_option_list.append(flag)
        elif (potential_flag_or_option_name in set_of_all_options) and ((i+1) < len(flags_options_operands)):
            option_name_as_string: str = dict_option_to_primary_repr.get(potential_flag_or_option_name, potential_flag_or_option_name)
            option_arg_as_arg: Arg = Arg(flags_options_operands[i+1])
            option = Option(option_name_as_string, option_arg_as_arg)
            flag_option_list.append(option)
            i += 1  # since we consumed another term for the argument
        elif potential_flag_or_option_name == "-": # switch to operand mode (interpreted as hyphen-stdin)
            break
        elif are_all_individually_flags(potential_flag_or_option_name, set_of_all_flags):
            for split_el in list(potential_flag_or_option_name[1:]):
                flag: Flag = Flag(f'-{split_el}')
                flag_option_list.append(flag)
        else:
            break  # next one is Operand, and we keep these in separate list
        i += 1
    # we would probably want to skip '--' but then the unparsed command could have a different meaning so we'd need to keep it
    # for now, omitted
    # if parsed_elements_list[i] == '--':
    #     i += 1
    operand_list = [Operand(Arg(operand_arg)) for operand_arg in flags_options_operands[i:]]
    # log("type of operand_list[0].get_name()", type(operand_list[0].get_name()))   can only be used if there are operands
    return CommandInvocationInitial(cmd_name, flag_option_list, operand_list)