/**
  * Associates two Beans. This method will associate two beans with eachother.
  * You can then get one of the beans by using the related() function and
  * providing the other bean. You can also provide a base bean in the extra
  * parameter. This base bean allows you to add extra information to the association
  * record. Note that this is for advanced use only and the information will not
  * be added to one of the beans, just to the association record.
  * It's also possible to provide an array or JSON string as base bean. If you
  * pass a scalar this function will interpret the base bean as having one
  * property called 'extra' with the value of the scalar.
  *
  * @todo extract from facade
  *
  * @param RedBean_OODBBean $bean1            bean that will be part of the association
  * @param RedBean_OODBBean $bean2            bean that will be part of the association
  * @param mixed            $extra            bean, scalar, array or JSON providing extra data.
  *
  * @return mixed
  */
 public function associate($beans1, $beans2, $extra = NULL)
 {
     if (!$extra) {
         return $this->associationManager->associate($beans1, $beans2);
     } else {
         return $this->extAssocManager->extAssociateSimple($beans1, $beans2, $extra);
     }
 }