/**
  * @param RedBeanModel $model
  * @param $relation
  * @return null | string
  */
 public function getRawValueRelatedAttributeForRelationReportedAsAttribute(RedBeanModel $model, $relation)
 {
     assert('is_string($relation)');
     $modelClassName = $model->getAttributeModelClassName($relation);
     $metadata = static::getMetadata();
     if (isset($metadata[$modelClassName]) && isset($metadata[$modelClassName]['relationsReportedAsAttributes']) && in_array($relation, $metadata[$modelClassName]['relationsReportedAsAttributes'])) {
         if (isset($metadata[$modelClassName]['relationsReportedAsAttributesGroupByAttributes'][$relation])) {
             return $metadata[$modelClassName]['relationsReportedAsAttributesGroupByAttributes'][$relation];
         }
     }
 }
 /**
  * @param RedBeanModel $model
  * @param $attribute
  * @return null | string
  */
 public function getAvailableOperatorsTypes(RedBeanModel $model, $attribute)
 {
     assert('is_string($attribute)');
     $modelClassName = $model->getAttributeModelClassName($attribute);
     $metadata = static::getMetadata();
     if (isset($metadata[$modelClassName]) && isset($metadata[$modelClassName]['availableOperatorsTypes']) && isset($attribute, $metadata[$modelClassName]['availableOperatorsTypes'][$attribute])) {
         return $metadata[$modelClassName]['availableOperatorsTypes'][$attribute];
     }
     return null;
 }
 /**
  * @param RedBeanModel $model
  * @param string $attribute
  * @return null | string
  */
 public function getTriggerValueElementType(RedBeanModel $model, $attribute)
 {
     assert('is_string($attribute)');
     $modelClassName = $model->getAttributeModelClassName($attribute);
     $metadata = static::getMetadata();
     if (isset($metadata[$modelClassName]) && isset($metadata[$modelClassName]['triggerValueElementTypes']) && isset($attribute, $metadata[$modelClassName]['triggerValueElementTypes'][$attribute])) {
         return $metadata[$modelClassName]['triggerValueElementTypes'][$attribute];
     }
     return null;
 }