/// <summary>
        /// Try to parse the given text as a remote party identification.
        /// </summary>
        /// <param name="Text">A text representation of a remote party identification.</param>
        /// <param name="RemotePartyId">The parsed remote party identification.</param>
        public static Boolean TryParse(String Text, out RemoteParty_Id RemotePartyId)
        {
            if (Text.IsNotNullOrEmpty())
            {
                try
                {
                    var MatchCollection = RemotePartyId_RegEx.Matches(Text);

                    if (MatchCollection.Count == 1 &&
                        CountryCode.TryParse(MatchCollection[0].Groups[1].Value, out CountryCode countryCode) &&
                        Party_Id.TryParse(MatchCollection[0].Groups[2].Value, out Party_Id partyId) &&
                        Enum.TryParse(MatchCollection[0].Groups[3].Value, out Roles role))
                    {
                        RemotePartyId = new RemoteParty_Id(countryCode,
                                                           partyId,
                                                           role);

                        return(true);
                    }
                }
                catch (Exception)
                { }
            }

            RemotePartyId = default;
            return(false);
        }