private XElement CreateMemberElement(InvolvedTypeMember member)
        {
            MemberInfo memberInfo = member.MemberInfo;

            var memberModifier = _memberModifierUtility.GetMemberModifiers(memberInfo);

            if (memberModifier.Contains("private")) // memberModifier.Contains ("internal")
            {
                return(null);
            }

            var memberName = GetMemberName(memberInfo);

            var attributes = new StringBuilder();

            XElement overridesElement  = null;
            XElement overriddenElement = null;

            if (_involvedType != null)
            {
                if (HasOverrideMixinAttribute(memberInfo))
                {
                    attributes.Append("OverrideMixin ");
                }
                if (HasOverrideTargetAttribute(memberInfo))
                {
                    attributes.Append("OverrideTarget ");
                }

                overridesElement  = CreateOverridesElement(member);
                overriddenElement = CreateOverriddenElement(member.MemberInfo);
            }

            if (memberInfo.DeclaringType != _type &&
                overridesElement == null && overriddenElement == null)
            {
                return(null);
            }

            var element = new XElement("Member", new XAttribute("id", _memberIdentifierGenerator.GetIdentifier(memberInfo)),
                                       new XAttribute("metadataToken", GetMetadataToken(memberInfo)),
                                       new XAttribute("type", memberInfo.MemberType),
                                       new XAttribute("name", memberName),
                                       new XAttribute("is-declared-by-this-class", memberInfo.DeclaringType == _type),
                                       _outputFormatter.CreateModifierMarkup(attributes.ToString(), memberModifier),
                                       _memberSignatureUtility.GetMemberSignature(memberInfo),
                                       member.SubMemberInfos.Select(CreateSubMemberElement),
                                       overridesElement,
                                       overriddenElement);

            return(element);
        }
        private XElement CreateOverridesElement(InvolvedTypeMember member)
        {
            var overridesElement = new XElement("Overrides");

            var overridingMixinTypes  = member.OverridingMixinTypes;
            var overridingTargetTypes = member.OverridingTargetTypes;

            if (!overridingMixinTypes.Any() && !overridingTargetTypes.Any())
            {
                return(null);
            }

            foreach (var overridingType in overridingMixinTypes)
            {
                overridesElement.Add(CreateInvolvedTypeReferenceElement("Mixin-Reference", overridingType));
            }

            foreach (var overridingType in overridingTargetTypes)
            {
                overridesElement.Add(CreateInvolvedTypeReferenceElement("Target-Reference", overridingType));
            }

            return(overridesElement);
        }
        private XElement CreateMemberElement(InvolvedTypeMember member)
        {
            MemberInfo memberInfo = member.MemberInfo;

              var memberModifier = _memberModifierUtility.GetMemberModifiers (memberInfo);
              if (memberModifier.Contains ("private")) // memberModifier.Contains ("internal")
            return null;

              var memberName = GetMemberName(memberInfo);

              var attributes = new StringBuilder ();

              XElement overridesElement = null;
              XElement overriddenElement = null;
              if (_involvedType != null)
              {
            if (HasOverrideMixinAttribute (memberInfo))
              attributes.Append ("OverrideMixin ");
            if (HasOverrideTargetAttribute (memberInfo))
              attributes.Append ("OverrideTarget ");

            overridesElement = CreateOverridesElement (member);
            overriddenElement = CreateOverriddenElement (member.MemberInfo);
              }

              if (memberInfo.DeclaringType != _type &&
              overridesElement == null && overriddenElement == null)
            return null;

              var element = new XElement("Member", new XAttribute("id", _memberIdentifierGenerator.GetIdentifier(memberInfo)),
                                 new XAttribute("metadataToken", GetMetadataToken(memberInfo)),
                                 new XAttribute("type", memberInfo.MemberType),
                                 new XAttribute("name", memberName),
                                 new XAttribute("is-declared-by-this-class", memberInfo.DeclaringType == _type),
                                 _outputFormatter.CreateModifierMarkup(attributes.ToString(), memberModifier),
                                 _memberSignatureUtility.GetMemberSignature(memberInfo),
                                 member.SubMemberInfos.Select(CreateSubMemberElement),
                                 overridesElement,
                                 overriddenElement);
              return element;
        }
        private XElement CreateOverridesElement(InvolvedTypeMember member)
        {
            var overridesElement = new XElement ("Overrides");

              var overridingMixinTypes = member.OverridingMixinTypes;
              var overridingTargetTypes = member.OverridingTargetTypes;

              if (!overridingMixinTypes.Any () && !overridingTargetTypes.Any ())
            return null;

              foreach (var overridingType in overridingMixinTypes)
            overridesElement.Add (CreateInvolvedTypeReferenceElement ("Mixin-Reference", overridingType));

              foreach (var overridingType in overridingTargetTypes)
            overridesElement.Add (CreateInvolvedTypeReferenceElement ("Target-Reference", overridingType));

              return overridesElement;
        }