mergeInto($previous)) { $merged->save(); return $merged; } else { $previous->delete(); return $previous; } } $this->save(); return $this; } abstract protected function mergeInto(Model $previous); }