function command::_preprocess_flags() { local -n _args_ref="$1" local -a _filtered=() for _arg in "${_args_ref[@]:-}"; do local _consumed=false local _mixin for _mixin in "${_ACTIVE_MIXINS[@]:-}"; do local _process_fn="command::mixin::${_mixin}::process" if declare -f "$_process_fn" >/dev/null 2>&1; then if "$_process_fn" "$_arg"; then _consumed=true break fi fi done $_consumed || _filtered+=("$_arg") done _args_ref=("${_filtered[@]:-}") }