/// <summary>
        /// <para>Initializes a new instance of the <see cref="SharedLinkMetadata" />
        /// class.</para>
        /// </summary>
        /// <param name="url">URL of the shared link.</param>
        /// <param name="name">The linked file name (including extension). This never contains
        /// a slash.</param>
        /// <param name="linkPermissions">The link's access permissions.</param>
        /// <param name="id">A unique identifier for the linked file.</param>
        /// <param name="expires">Expiration time, if set. By default the link won't
        /// expire.</param>
        /// <param name="pathLower">The lowercased full path in the user's Dropbox. This always
        /// starts with a slash. This field will only be present only if the linked file is in
        /// the authenticated user's  dropbox.</param>
        /// <param name="teamMemberInfo">The team membership information of the link's owner.
        /// This field will only be present  if the link's owner is a team member.</param>
        /// <param name="contentOwnerTeamInfo">The team information of the content's owner.
        /// This field will only be present if the content's owner is a team member and the
        /// content's owner team is different from the link's owner team.</param>
        protected SharedLinkMetadata(string url,
                                     string name,
                                     LinkPermissions linkPermissions,
                                     string id                     = null,
                                     sys.DateTime?expires          = null,
                                     string pathLower              = null,
                                     TeamMemberInfo teamMemberInfo = null,
                                     Dropbox.Api.Users.Team contentOwnerTeamInfo = null)
        {
            if (url == null)
            {
                throw new sys.ArgumentNullException("url");
            }

            if (name == null)
            {
                throw new sys.ArgumentNullException("name");
            }

            if (linkPermissions == null)
            {
                throw new sys.ArgumentNullException("linkPermissions");
            }

            if (id != null)
            {
                if (id.Length < 1)
                {
                    throw new sys.ArgumentOutOfRangeException("id", "Length should be at least 1");
                }
            }

            this.Url             = url;
            this.Name            = name;
            this.LinkPermissions = linkPermissions;
            this.Id                   = id;
            this.Expires              = expires;
            this.PathLower            = pathLower;
            this.TeamMemberInfo       = teamMemberInfo;
            this.ContentOwnerTeamInfo = contentOwnerTeamInfo;
        }