/// <summary>
        /// Users the shared types service to determine whether the given property is shared.
        /// </summary>
        /// <remarks>Derived classes can override this to insert extra behavior.</remarks>
        /// <param name="pd">The property descriptor that could be shared.</param>
        /// <returns>Returns true if the property is shared.</returns>
        protected virtual bool IsPropertyShared(PropertyDescriptor pd)
        {
            // If this property is visible to the client already because of partial types,
            // do not generate it again, or we will get a compile error
            CodeMemberShareKind shareKind = ClientProxyGenerator.GetPropertyShareKind(Type, pd.Name);

            return((shareKind & CodeMemberShareKind.Shared) != 0);
        }