After we see a key, we must look ahead to determine our next action. Cases:
 follows the key. Then the value must be an array. = follows the key. (A value comes next) & or the end of string follows the key. Then the key is a flag. otherwise, a hash follows the key.
# File actionpack/lib/action_controller/request.rb, line 671 def post_key_check(key) if scan(/\[\]/) # a[b] indicates that b is an array container(key, Array) nil elsif check(/\[[^\]]/) # a[b] indicates that a is a hash container(key, Hash) nil else # End of key? We do nothing. key end end