code: function (location, setter, keyPath) {
          var vm = this._vm;
          var root = this._root;
          var ref;
  
  
          /**
           * If the location is a string, we use it to create a new Firebase reference to this location
           *
           * If the location is a function, we call it with the 'vm' as its context and pass 'root' as the first argument.
           * In return we expect a Firebase instance.
           */
  
          if(isString(location)) {
              ref = root.child(location);
              keyPath = isString(setter)
                  ? setter
                  : ref.ref().key();
          } else if(isFunction(location)) {
              ref = location.call(vm, root);
  
              if(not(instanceOf)(Firebase, ref)) {
                  throw new Error('The setter function passed in to setArray must return a Firebase instance.');
              }
  
              keyPath = isString(setter)
                  ? setter
                  : ref.ref().key();
          }
  
          var firebaseArray = new FirebaseArray(vm, keyPath, ref);
  
          set(this._references, keyPath, firebaseArray);
  
          return firebaseArray;
      }
docs: Binds a Firebase array(list) to a view model keypath