public function getCompleter(Context $context, Project $project)
 {
     if ($context->isNamespace()) {
         return $this->namespaceCompleter;
     } elseif ($context->isUse()) {
         return $this->useCompleter;
     } elseif ($context->isClassName()) {
         return $this->classNameCompleter;
     } elseif ($context->isInterfaceName()) {
         return $this->interfaceNameCompleter;
     } elseif ($context->isThis() || $context->isObject()) {
         return $this->objectCompleter;
     } elseif ($context->isClassStatic()) {
         return $this->staticCompleter;
     } elseif ($context->isVar()) {
         return $this->varCompleter;
     }
     $event = new CustomCompleterEvent($project, $context);
     $this->dispatcher->dispatch(self::CUSTOM_COMPLETER, $event);
     $completer = $event->completer;
     if ($completer) {
         return $completer;
     }
     return null;
 }