_lsmem_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-o'|'--output')
			local prefix realcur OUTPUT_ALL OUTPUT
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			OUTPUT_ALL='RANGE SIZE STATE REMOVABLE BLOCK NODE ZONES'
			for WORD in $OUTPUT_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					OUTPUT="$WORD ${OUTPUT:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- "$realcur") )
			return 0
			;;
		'-s'|'--sysroot')
			local IFS=$'\n'
			compopt -o filenames
			COMPREPLY=( $(compgen -o dirnames -- ${cur:-"/"}) )
			return 0
			;;
		'--summary')
			COMPREPLY=( $(compgen -W "never always only" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	OPTS="
		--json
		--pairs
		--all
		--bytes
		--noheadings
		--output
		--output-all
		--raw
		--sysroot
		--summary
		--help
		--version
	"
	COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
	return 0
}
complete -F _lsmem_module lsmem
