code: @SuppressWarnings("unchecked")
      public <O extends Featurable> O create(Media media)
      {
          if (cache.containsKey(media) && !cache.get(media).isEmpty())
          {
              final Featurable featurable = cache.get(media).poll();
              featurable.getFeature(Recycler.class).recycle();
              return (O) featurable;
          }
          final Setup setup = getSetup(media);
          final Class<O> type = setup.getConfigClass(classLoader);
          try
          {
              return createFeaturable(type, setup);
          }
          catch (final NoSuchMethodException exception)
          {
              throw new LionEngineException(exception, ERROR_CONSTRUCTOR_MISSING + media);
          }
      }
docs: Create a {@link Featurable} from its {@link Media} using a generic way. The concerned class to instantiate and
  its constructor must be public, and can have the following parameter: ({@link Setup}).
  <p>
  Automatically add {@link IdentifiableModel} if feature does not have {@link Identifiable} feature.
  </p>
  <p>
  Destroyed {@link Featurable} can be cached to avoid {@link Featurable} creation if has {@link Recycler} and
  {@link Recyclable} {@link Feature}s. If cache associated to media is available, it is
  {@link Recyclable#recycle()} and then returned.
  </p>
  
  @param <O> The featurable type.
  @param media The featurable media.
  @return The featurable instance.
  @throws LionEngineException If {@link Media} is <code>null</code> or {@link Setup} not found.