Previously, we were modifying Array's prototype using simple assignment. This can mess with enumeration/iteration. Thus, we now use Object.defineProperty with enumerable set to false. See #366