function createMonitor(target) {
    var monitor  = Lazy.clone(target),
        accesses = {};

    function monitorProperty(property) {
      Object.defineProperty(monitor, property, {
        get: function() {
          accesses[property] = true;
          return target[property];
        }
      });
    }

    Lazy(target).each(function(value, property) {
      monitorProperty(property);
    });

    monitor.accessCount = function() {
      return Object.keys(accesses).length;
    };

    monitor.accessedAt = function(property) {
      return !!accesses[property];
    };

    return monitor;
  }
Takes an object (e.g. an array) and returns a copy of that object that
monitors its properties so that it can tell when one has been accessed.
This is useful for tests that want to ensure certain elements of an array
haven't been looked at.