//*************************************************************************
        // Constructors for MatchingRuleAssertion
        //*************************************************************************

        /// <summary> Creates a MatchingRuleAssertion with the only required parameter.
        ///
        /// </summary>
        /// <param name="matchValue">The assertion value.
        /// </param>
        public RfcMatchingRuleAssertion(RfcAssertionValue matchValue) : this(null, null, matchValue, null)
        {
        }
        /// <summary> Creates a MatchingRuleAssertion.
        ///
        /// The value null may be passed for an optional value that is not used.
        ///
        /// </summary>
        /// <param name="matchValue">The assertion value.
        /// </param>
        /// <param name="matchingRule">Optional matching rule.
        /// </param>
        /// <param name="type">Optional attribute description.
        /// </param>
        /// <param name="dnAttributes">Asn1Boolean value. (default false)
        /// </param>
        public RfcMatchingRuleAssertion(RfcMatchingRuleId matchingRule, RfcAttributeDescription type, RfcAssertionValue matchValue, Asn1Boolean dnAttributes) : base(4)
        {
            if (matchingRule != null)
            {
                add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 1), matchingRule, false));
            }

            if (type != null)
            {
                add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 2), type, false));
            }

            add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 3), matchValue, false));

            // if dnAttributes if false, that is the default value and we must not
            // encode it. (See RFC 2251 5.1 number 4)
            if (dnAttributes != null && dnAttributes.booleanValue())
            {
                add(new Asn1Tagged(new Asn1Identifier(Asn1Identifier.CONTEXT, false, 4), dnAttributes, false));
            }
            return;
        }
 /// <summary> Creates an Attribute Value Assertion.
 ///
 /// </summary>
 /// <param name="ad">The assertion description
 ///
 /// </param>
 /// <param name="av">The assertion value
 /// </param>
 public RfcAttributeValueAssertion(RfcAttributeDescription ad, RfcAssertionValue av) : base(2)
 {
     add(ad);
     add(av);
 }