When using ${parameter:offset:length} expansion, the parser doesn't account for
all the ways that a colon can appear in "offset".
For example:
$ echo ${PARAM:${OFFSET:-0}}
-bash: ${OFFSET: bad substitution
or:
# declare -A A=([a:b]=0)
# echo ${PARAM:${A[a:b]}}
-bash: ${A[a: bad substitution
It seems that the issue is in the use of skiparith in verify_substring_values.
Switching to to skip_to_delim removes this issue. The
${parameter/pattern/string} expansion uses skip_to_delim to search for the
second '/' so I suspect it's use is appropriate here as well.