private boolean isAuthorisedToReadAndList(
     Policy policy, User user, ProjectInstance projectInstance) {
   User owner = projectInstance.getOwner();
   if (isUserOwner(user, owner)) {
     return true;
   }
   return isAuthorisedToDisplayInList(policy, user, projectInstance)
       && isAuthorisedToRead(policy, user, projectInstance);
 }
 private static ProjectDetails createProjectDetailsFromProjectInstance(
     ProjectInstance projectInstance) {
   final ProjectId projectId = ProjectId.get(projectInstance.getName());
   final String description = projectInstance.getDescription();
   final User projectOwner = projectInstance.getOwner();
   final UserId ownerId =
       projectOwner != null ? UserId.getUserId(projectOwner.getName()) : UserId.getGuest();
   final boolean inTrash = isInTrash(projectInstance);
   final Slot displayNameSlot =
       projectInstance.getProtegeInstance().getKnowledgeBase().getSlot("displayName");
   final String displayName =
       (String) projectInstance.getProtegeInstance().getOwnSlotValue(displayNameSlot);
   return new ProjectDetails(projectId, displayName, description, ownerId, inTrash);
 }