protected function setData($data, $datasource = '', $isActionBoundDatasource = false)
 {
     if (empty($datasource) && !empty($this->currentDatasource)) {
         $datasource = $this->currentDatasource;
     }
     if (!is_array($data) && !empty($data)) {
         $data = array($data);
     }
     if ($isActionBoundDatasource) {
         self::$actionBoundDatasource = $datasource;
         // NOTE: referenceData always overrides data
         if (count($refData = (array) $this->referenceData()) > 0) {
             $data = ArrayUtils::arrayMultiMergeKeys($data, $refData);
         }
     }
     self::$data[$datasource] = $data;
 }