/**
  * Get the {@link SiriusFormatDataManager} found applicable for the given {@link DDiagram}.
  *
  * <p>The default manager (based on semantic elements) will always be the last returned manager.
  *
  * @param diagram the diagram which needs a format data manager.
  * @return a list of {@link SiriusFormatDataManager} instances.
  */
 public static List<SiriusFormatDataManager> getSiriusFormatDataManagers(DDiagram diagram) {
   List<SiriusFormatDataManager> applicableManagers = Lists.newArrayList();
   for (FormatDataManagerDescriptor descriptor : getRegisteredExtensions()) {
     IFormatDataManagerProvider provider = descriptor.getFormatDataManagerProvider();
     if (provider != null && provider.provides(diagram)) {
       SiriusFormatDataManager formatDataManager = EXTENSIONS.get(descriptor);
       if (formatDataManager == null) {
         formatDataManager = provider.getFormatDataManager();
         EXTENSIONS.put(descriptor, formatDataManager);
       }
       applicableManagers.add(formatDataManager);
     }
   }
   applicableManagers.add(
       SiriusFormatDataManagerForSemanticElementsFactory.getInstance()
           .getSiriusFormatDataManager());
   return applicableManagers;
 }