all `scope_chain` methods allocate new arrays, no need to dup