private List<String> getMatchingAnnotations(String name, CSVEntry csvEntry) {
   for (String annotation : csvEntry.getAnnotations()) {
     if (annotation.equals(name)) {
       return Collections.singletonList(name);
     }
   }
   return csvEntry.getAnnotations();
 }
 private List<Thing> processDescription(CSVEntry csvEntry) {
   if (alreadyExistingElements.containsKey(csvEntry.getDescription())) {
     return Collections.emptyList();
   }
   Thing parent = getParent(csvEntry);
   Thing entity = new Entity(parent, csvEntry.getDescription(), csvEntry.getAnnotations());
   alreadyExistingElements.put(csvEntry.getDescription(), entity);
   return Collections.singletonList(entity);
 }
 private Thing getParentFromPreposition(CSVEntry csvEntry) {
   if ("text".equals(csvEntry.getNature())) {
     return new Entity("text");
   } else {
     return new Entity(classesEntity, "ideograph", Collections.emptyList());
   }
 }
 private List<Thing> processCompoundWords(CSVEntry csvEntry) {
   String description = csvEntry.getDescription();
   if (hasPreposition(description)) {
     return handlePrepositions(csvEntry);
   } else {
     return processIndividualWords(description, csvEntry);
   }
 }
 private List<Thing> handleElementOfPreposition(String key, CSVEntry csvEntry) {
   if (alreadyExistingElements.containsKey(key)) {
     return Collections.emptyList();
   }
   Thing possibleParent = getParentFromIndividualWords(key);
   Thing entity = new Entity(possibleParent, key, csvEntry.getAnnotations());
   alreadyExistingElements.put(key, entity);
   return Collections.singletonList(entity);
 }
 private List<Thing> processAnnotations(CSVEntry csvEntry) {
   List<Thing> newAnnotations = new ArrayList<>();
   for (String annotation : csvEntry.getAnnotations()) {
     if (alreadyExistingElements.containsKey(getAnnotationName(annotation))) {
       continue;
     }
     Thing newAnnotation = new Annotation(annotationEntity, annotation);
     newAnnotations.add(newAnnotation);
     alreadyExistingElements.put(getAnnotationName(annotation), newAnnotation);
   }
   return newAnnotations;
 }
 private List<Thing> processSpecialCases(CSVEntry csvEntry) {
   Thing parent = getParentFromPreposition(csvEntry);
   Thing subClasses = new Entity(parent, csvEntry.getDescription(), csvEntry.getAnnotations());
   alreadyExistingElements.put(csvEntry.getDescription(), subClasses);
   return Arrays.asList(parent, subClasses);
 }
 private boolean descriptionNeedsSpecialHandling(CSVEntry nature) {
   return "text".equals(nature.getNature()) || nature.getDescription().contains("ideograph");
 }
 private Thing getParent(CSVEntry csvEntry) {
   if (hasPreposition(csvEntry.getDescription())) {
     return getParentFromPreposition(getLeftHandSideOfPreposition());
   }
   return getParentUsingFullDescription(csvEntry.getDescription());
 }