/**
  * Renderes a list or table cell value if the value contains an OWLAnnotation.
  *
  * @param page The page that the value will be rendered into.
  * @param value The value that may or may not contain an OWLAnnotation. The annotation will be
  *     extracted from this value.
  * @param foreground The default foreground color.
  * @param background The default background color.
  * @param isSelected Whether or not the cell containing the value is selected.
  */
 private void renderCellValue(
     Page page, Object value, Color foreground, Color background, boolean isSelected) {
   OWLAnnotation annotation = extractOWLAnnotationFromCellValue(value);
   if (annotation != null) {
     renderAnnotationProperty(page, annotation, foreground, background, isSelected);
     renderAnnotationValue(page, annotation, foreground, background, isSelected);
     if (inlineAnnotationRendering == RENDER_COMPOUND_ANNOTATIONS_INLINE
         && value instanceof HasAnnotations) {
       Page subAnnotationPage = new Page();
       for (OWLAnnotation anno : ((HasAnnotations) value).getAnnotations()) {
         renderCellValue(subAnnotationPage, anno, foreground, background, isSelected);
       }
       subAnnotationPage.setMarginLeft(40);
       subAnnotationPage.setOpacity(0.6);
       page.add(subAnnotationPage);
     }
   }
   switch (annotationRenderingStyle) {
     case COMFORTABLE:
       page.setMargin(2);
       page.setMarginBottom(6);
       break;
     case COSY:
       page.setMargin(1);
       page.setMarginBottom(3);
       break;
     case COMPACT:
       page.setMargin(0);
       page.setMarginBottom(1);
   }
 }