code: func NewScanModelsHandler(collection *Collection, fieldNames []string, models interface{}) ReplyHandler {
  	return newScanModelsHandler(collection.spec, fieldNames, models)
  }
docs: // NewScanModelsHandler returns a ReplyHandler which will scan the values of the
  // reply into each corresponding Model in models. models should be a pointer to
  // a slice of some concrete Model type. The type of the Models in models should
  // match the type of the given Collection.
  //
  // fieldNames should be the actual field names as they appear in the struct
  // definition, not the Redis names which may be custom. The special value of "-"
  // in fieldNames represents the id of the model and will be set via the
  // SetModelID method. The ReplyHandler will use the length of fieldNames to
  // determine which fields belong to which models.
  //
  // The returned ReplyHandler will grow or shrink models as needed. It expects a
  // reply which is a flat array of field values, with no separation between the
  // fields for each model. The order of the values in the reply must correspond
  // to the order of fieldNames.
  //
  // For example, if fieldNames is ["Age", "Name", "-"] and the reply from Redis
  // looks like this:
  //
  //   1) "25"
  //   2) "Bob"
  //   3) "b1C7B0yETtXFYuKinndqoa"
  //   4) "27"
  //   5) "Alice"
  //   6) "NmjzzzDyNJpsCpPKnndqoa"
  //
  // NewScanModelsHandler will use the first value in the reply to set the Age
  // field of the first Model to 25 using reflection. It will use the second value
  // of the reply to set Name value of the first Model to "Bob" using reflection.
  // And finally, it will use the third value in reply to set the id of the first
  // Model by calling its SetModelID method. Because the length of fieldNames is 3
  // in this case, the ReplyHandler will assign the first three to the first
  // model, the next three to the second model, etc.