/**
   * Creates a new Assertion with the supplied principal, Assertion attributes, and start and valid
   * until dates.
   *
   * @param principal the Principal to associate with the Assertion.
   * @param validFromDate when the assertion is valid from.
   * @param validUntilDate when the assertion is valid to.
   * @param attributes the key/value pairs for this attribute.
   */
  public AssertionImpl(
      final AttributePrincipal principal,
      final Date validFromDate,
      final Date validUntilDate,
      final Date authenticationDate,
      final Map<String, Object> attributes) {
    this.principal = principal;
    this.validFromDate = validFromDate;
    this.validUntilDate = validUntilDate;
    this.attributes = attributes;
    this.authenticationDate = authenticationDate;

    CommonUtils.assertNotNull(this.principal, "principal cannot be null.");
    CommonUtils.assertNotNull(this.validFromDate, "validFromDate cannot be null.");
    CommonUtils.assertNotNull(this.attributes, "attributes cannot be null.");
  }
 public ProxyList(final List<String[]> proxyChains) {
   CommonUtils.assertNotNull(proxyChains, "List of proxy chains cannot be null.");
   this.proxyChains = proxyChains;
 }