final public function after(string $action, Record $record, $extra = true)
    {
        $data = is_array($extra) ? $extra : [];

        $data = $this->afterDefault($action, $record, $data);

        $name = ucfirst($action);
        $method = "after{$name}";
        $container = Container::instance();
        if ($container->exists($this, $method)) {
            return $container->invoke($this, $method, ['record' => $record, 'data' => $data]);
        }

        if ($action === Action::READ) {
            return $data;
        }

        return $extra;
    }