code: public boolean add( Object o )
    {
      boolean result = false;
      if( o == null ) {
        throw new IllegalArgumentException("Address sets do not support null.");
      }
      else if( o instanceof String ) {
        result = super.add(convertAddress((String)o));
      }
      else if( o instanceof InternetAddress ) {
        result = super.add(o);
      }
      else {
        throw new IllegalArgumentException("Address sets cannot take objects of type '"+o.getClass().getName()+"'.");
      }
      return result;
    }
docs: Adds a specified address to this set.  If o is an instance of String, then a new InternetAddress is created and that
  object is added to the set.  If o is an instance of InternetAddress, then it is added to the set.  All other values of
  o, including null, throw an IllegalArgumentException.