code: public void add(Feature feature)
      {
          if (!isAnnotated(feature))
          {
              throw new LionEngineException(ERROR_FEATURE_NOT_ANNOTATED + feature.getClass());
          }
          final Feature old;
          // CHECKSTYLE IGNORE LINE: InnerAssignment
          if ((old = typeToFeature.put(feature.getClass(), feature)) != null)
          {
              throw new LionEngineException(ERROR_FEATURE_EXISTS + feature.getClass() + WITH + old.getClass());
          }
          checkTypeDepth(feature, feature.getClass());
      }
docs: Add a feature. Stores its interface, and all sub interfaces which describe also a {@link Feature} annotated by
  {@link FeatureInterface}.
  
  @param feature The feature to add.
  @throws LionEngineException If feature is not annotated by {@link FeatureInterface} or already referenced.