/// <summary>
        /// Converts to serializable.
        /// </summary>
        /// <param name="memberMemberBinding">The memberMemberBindingRepresentation.</param>
        /// <returns>
        /// Serializable version.
        /// </returns>
        public static MemberMemberBindingRepresentation ToRepresentation(
            this MemberMemberBinding memberMemberBinding)
        {
            if (memberMemberBinding == null)
            {
                throw new ArgumentNullException(nameof(memberMemberBinding));
            }

            var type = memberMemberBinding.Member.DeclaringType.ToRepresentation();

            var memberInfoRepresentation = memberMemberBinding.Member.ToRepresentation();

            var bindings = memberMemberBinding.Bindings.ToRepresentation();

            var result = new MemberMemberBindingRepresentation(type, memberInfoRepresentation, bindings);

            return(result);
        }
        /// <summary>
        /// From the serializable.
        /// </summary>
        /// <param name="memberMemberBindingRepresentation">The memberMemberBindingRepresentation.</param>
        /// <returns>
        /// Converted version.
        /// </returns>
        public static MemberMemberBinding FromRepresentation(
            this MemberMemberBindingRepresentation memberMemberBindingRepresentation)
        {
            if (memberMemberBindingRepresentation == null)
            {
                throw new ArgumentNullException(nameof(memberMemberBindingRepresentation));
            }

            var type = memberMemberBindingRepresentation.Type.ResolveFromLoadedTypes();

            var member = type.GetMembers().Single(_ => _.ToRepresentation().Equals(memberMemberBindingRepresentation.MemberInfo));

            var bindings = memberMemberBindingRepresentation.Bindings.FromRepresentation();

            var result = Expression.MemberBind(member, bindings);

            return(result);
        }