protected virtual XacmlContextResourceContent ReadContextResourceContent(XmlReader reader) {
            Contract.Requires<ArgumentNullException>(reader != null, "reader");
            Contract.Requires<XmlException>(reader.IsStartElement(XacmlConstants.ElementNames.ResourceContent, this.version.NamespaceContext));

            // UNDONE: Read attributes

            XacmlContextResourceContent result = new XacmlContextResourceContent();
            if (reader.IsEmptyElement) {
                reader.Read();
                return result;
            }

            reader.ReadStartElement(XacmlConstants.ElementNames.ResourceContent, this.version.NamespaceContext);
            // Read elements
            result.Value = reader.ReadOuterXml();

            reader.ReadEndElement();

            return result;
        }
        protected virtual void WriteContextResourceContent(XmlWriter writer, XacmlContextResourceContent xacmlContextResourceContent) {
            Contract.Requires<ArgumentNullException>(writer != null);
            Contract.Requires<ArgumentNullException>(xacmlContextResourceContent != null);

            writer.WriteStartElement(XacmlConstants.Prefixes.Context, XacmlConstants.ElementNames.ResourceContent, this.version.NamespaceContext);

            // UNDONE AnyAttribute

            writer.WriteRaw(xacmlContextResourceContent.Value);

            writer.WriteEndElement();
        }