/**
   * setArgStringValue purpose.
   *
   * <p>Stores a human friendly version. If this is a new Argument, then the type is String.
   *
   * @param name
   * @param value
   * @return
   */
  public boolean setArgStringValue(String name, String value) {
    ArgumentConfig ac = (ArgumentConfig) args.get(name);

    if ((value == null) || value.equals("")) {
      args.remove(name);

      return true;
    }

    if (ac == null) {
      return addArgStringValue(name, value);
    } else {
      if (ac.isFinal()) {
        throw new IllegalArgumentException("Cannot include final arguments as part of a test.");
      }

      StringReader sr = new StringReader(value);

      try {
        ac.setValue(ArgHelper.getArgumentInstance(ArgHelper.getArgumentType(ac.getValue()), value));

        return true;
      } catch (Exception e) {
        e.printStackTrace();

        // error, log it
        return false;
      }
    }
  }
  /**
   * getArgValue purpose.
   *
   * <p>Returns an Object version
   *
   * @param name
   * @return
   */
  public Object getArgValue(String name) {
    ArgumentConfig ac = (ArgumentConfig) args.get(name);

    if (ac == null) {
      return null;
    }

    return ac.getValue();
  }
  /**
   * getArgStringValue purpose.
   *
   * <p>Returns a human friendly version
   *
   * @param name
   * @return
   */
  public String getArgStringValue(String name) {
    ArgumentConfig ac = (ArgumentConfig) args.get(name);

    if (ac == null) {
      return null;
    }

    return ArgHelper.getArgumentStringEncoding(ac.getValue());
  }
  public boolean equals(Object obj) {
    boolean r = true;

    if ((obj == null) || !(obj instanceof ArgumentConfig)) {
      return false;
    }

    ArgumentConfig dto = (ArgumentConfig) obj;
    r = r && (dto.isFinal() == _final);

    if (name != null) {
      r = r && (name.equals(dto.getName()));
    } else if (dto.getName() != null) {
      return false;
    }

    if (value != null) {
      r = r && (value.equals(dto.getValue()));
    } else if (dto.getValue() != null) {
      return false;
    }

    return r;
  }
 public ArgumentConfig(ArgumentConfig dto) {
   name = dto.getName();
   _final = isFinal();
   value = dto.getValue();
 }