@Override
  public <ArgumentType> void addArguments(final IArgumentContext<ArgumentType> context) {
    if (!context.addDataType(this)) return;

    addEAnnotationArguments(context);
    if (context.isResultFound()) return;

    /*
     * Avoid recursion when resolving the "type" argument!!!
     */
    if (!Constants.ARG_TYPE.equals(context.getName())) {
      final String type = context.getType();
      if (type != null && type.length() > 0) {
        IManager.Factory.getManager()
            .addArgumentProviderArguments(this.getArgumentProvider(type), context);
        if (context.isResultFound()) return;
      }
    }
    IManager.Factory.getManager()
        .addArgumentProviderArguments(this.getArgumentProvider(null), context);
  }