/// <summary>
        ///     Constructs the modifications associated with this request.
        /// </summary>
        /// <returns>
        ///     an array of LdapModification objects.
        /// </returns>
        public LdapModification[] GetModifications()
        {
            // Get the RFC request object for this request
            var req = (RfcModifyRequest)Asn1Object.GetRequest();

            // get beginning sequenceOf modifications
            var seqof         = req.Modifications;
            var mods          = seqof.ToArray();
            var modifications = new LdapModification[mods.Length];

            // Process each modification
            for (var m = 0; m < mods.Length; m++)
            {
                // Each modification consists of a mod type and a sequence
                // containing the attr name and a set of values
                var opSeq = (Asn1Sequence)mods[m];
                if (opSeq.Size() != 2)
                {
                    throw new Exception("LdapModifyRequest: modification " + m + " is wrong size: " + opSeq.Size());
                }

                // Contains operation and sequence for the attribute
                var opArray = opSeq.ToArray();
                var asn1Op  = (Asn1Enumerated)opArray[0];

                // get the operation
                var op         = asn1Op.IntValue();
                var attrSeq    = (Asn1Sequence)opArray[1];
                var attrArray  = attrSeq.ToArray();
                var aname      = (RfcAttributeDescription)attrArray[0];
                var name       = aname.StringValue();
                var avalue     = (Asn1SetOf)attrArray[1];
                var valueArray = avalue.ToArray();
                var attr       = new LdapAttribute(name);

                for (var v = 0; v < valueArray.Length; v++)
                {
                    var rfcV = (RfcAttributeValue)valueArray[v];
                    attr.AddValue(rfcV.ByteValue());
                }

                modifications[m] = new LdapModification(op, attr);
            }

            return(modifications);
        }