public function get(ServerRequest $request, array $data = [])
    {
        $data += ['entity' => null];

        foreach ($this->providers as $provider) {
            $check = $provider['callable'];
            $context = $check($request, $data);
            if ($context) {
                break;
            }
        }
        if (!isset($context)) {
            $context = new NullContext($request, $data);
        }
        if (!($context instanceof ContextInterface)) {
            throw new RuntimeException(sprintf(
                'Context providers must return object implementing %s. Got "%s" instead.',
                ContextInterface::class,
                getTypeName($context)
            ));
        }

        return $context;
    }