docs: function (model) {
  
                  var ret = [];
  
                  function getSubModel(obj) {
  
                      if (obj === model) {
                          return;
                      }
  
                      if (_.indexOf(ret, obj) !== -1) {
                          // already in list
                          return;
                      }
  
                      if (obj instanceof Model) {
                          ret.push(obj);
                          return;
                      }
  
                      for (var key in obj) {
                          if (obj.hasOwnProperty(key)) {
                              var value = obj[key];
  
                              if (value instanceof Array) {
                                  for (var i = 0; i < value.length; i++) {
                                      getSubModel(value[i]);
                                  }
                              } else if (value instanceof List) {
                                  value.each(getSubModel);
                              } else if (value instanceof Object) {
                                  getSubModel(value);
                              }
                          }
                      }
                  }
  
                  getSubModel(model.$);
  
                  return ret;
  
              }