+ /**
+ * Overrideable function to save items using the appropriate BAO function
+ *
+ * @param array[] $items
+ * Items already formatted by self::writeObjects
+ * @return \CRM_Core_DAO[]
+ * Array of saved DAO records
+ */
+ protected function write(array $items) {
+ $saved = [];
+ $baoName = $this->getBaoName();
+
+ $method = method_exists($baoName, 'create') ? 'create' : (method_exists($baoName, 'add') ? 'add' : NULL);
+ // Use BAO create or add method if not deprecated
+ if ($method && !ReflectionUtils::isMethodDeprecated($baoName, $method)) {
+ foreach ($items as $item) {
+ $saved[] = $baoName::$method($item);
+ }
+ }
+ else {
+ $saved = $baoName::writeRecords($items);
+ }
+ return $saved;
+ }
+