/**
  * @param array $project
  *
  * @return \DanielBadura\Redmine\Api\Struct\Project|\ProxyManager\Proxy\VirtualProxyInterface
  */
 public function project(array $project)
 {
     $projectRepository = $this->client->getProjectRepository();
     $projectStruct = $this->getIdentity($project, $projectRepository);
     if ($projectStruct !== null) {
         return $projectStruct;
     }
     $factory = new LazyLoadingValueHolderFactory();
     $initializer = function (&$wrappedObject, LazyLoadingInterface $proxy, $method) use($project, $projectRepository) {
         if ($method == 'getId' || $method == 'getName') {
             if (!$wrappedObject) {
                 $wrappedObject = new Project($project['id'], $project['name']);
             }
         } else {
             $wrappedObject = $projectRepository->find($project['id']);
             $proxy->setProxyInitializer(null);
             $projectRepository->getMap()->setIdentity($wrappedObject->getId(), $wrappedObject);
         }
         return true;
     };
     $project = $factory->createProxy('DanielBadura\\Redmine\\Api\\Struct\\Project', $initializer);
     return $project;
 }