public function firstOrMake($filter = [], $additionalData = [], $write = true)
    {
        if (!($record = $this->owner->get()->filter($filter)->first())) {
            $record = $this->owner->create(array_merge($filter, $additionalData));

            if ($write) {
                $record->write();
                $record->isNew = true;
            }
        }

        return $record;
    }