code: func (self *Query) initDocument(model *reflect.Value, document *reflect.Value, collection *mgo.Collection, connection *Connection) {
  
  	documentMethod := model.MethodByName("SetDocument")
  	collectionMethod := model.MethodByName("SetCollection")
  	connectionMethod := model.MethodByName("SetConnection")
  
  	if !documentMethod.IsValid() || !collectionMethod.IsValid() || !connectionMethod.IsValid() {
  		panic("Given models were not correctly initialized with 'DocumentBase' interface type")
  	}
  
  	documentInput := []reflect.Value{*document}
  	collectionInput := []reflect.Value{reflect.ValueOf(collection)}
  	connectionInput := []reflect.Value{reflect.ValueOf(connection)}
  
  	documentMethod.Call(documentInput)
  	collectionMethod.Call(collectionInput)
  	connectionMethod.Call(connectionInput)
  }
docs: //like Model.New(), only directly for reflect types