public void addArgument(DynamicInstantiationArgument argument) {
    if (instantiationTarget.getNature() == DynamicInstantiationTarget.Nature.LIST) {
      // really should not have an alias...
      if (argument.getAlias() != null) {
        log.debugf(
            "Argument [%s] for dynamic List instantiation declared an 'injection alias' [%s] "
                + "but such aliases are ignored for dynamic List instantiations",
            argument.getExpression().toString(), argument.getAlias());
      }
    } else if (instantiationTarget.getNature() == DynamicInstantiationTarget.Nature.MAP) {
      // must(?) have an alias...
      log.warnf(
          "Argument [%s] for dynamic Map instantiation did not declare an 'injection alias' [%s] "
              + "but such aliases are needed for dynamic Map instantiations; "
              + "will likely cause problems later translating query",
          argument.getExpression().toString(), argument.getAlias());
    }

    if (arguments == null) {
      arguments = new ArrayList<DynamicInstantiationArgument>();
    }
    arguments.add(argument);
  }
 @Override
 public Type getExpressionType() {
   return instantiationTarget.getTargetType();
 }