userSettingsGateway ??= new UserSettingsGateway($this->createSettingGateway()); } public function createUserScopeGateway(): UserScopeGateway { return $this->userScopeGateway ??= new UserScopeGateway($this->tenantScopeService); } public function createUserDirectoryGateway(): UserDirectoryGateway { return $this->userDirectoryGateway ??= new UserDirectoryGateway($this->userRepositoryFactory); } public function createUserPermissionGateway(): UserPermissionGateway { return $this->userPermissionGateway ??= new UserPermissionGateway($this->createPermissionGateway()); } private function createPermissionGateway(): PermissionGateway { return $this->permissionGateway ??= $this->accessServicesFactory->createPermissionGateway(); } private function createSettingGateway(): SettingGateway { return $this->settingGateway ??= $this->settingServicesFactory->createSettingGateway(); } }