final public function before(string $action, Record $record, Record $previous = null): bool
    {
        $action = ucfirst($action);
        $method = "before{$action}";
        $container = Container::instance();
        if ($container->exists($this, $method)) {
            return $container->invoke($this, $method, ['record' => $record, 'previous' => $previous]);
        }
        return true;
    }