public static void ConfigureRussianPartyInfo <TSecondContract, TData, TSG2, TSG3, TPartyInfo>(
            this ConverterConfigurator <TSecondContract, TSG2, TData, TPartyInfo, TPartyInfo> configurator)
            where TSG2 : IReferenceArrayContainer <TSG3>, INameAndAddressContainer
            where TSG3 : IReferenceContainer
            where TPartyInfo : IContainsRussianPartyInfo
        {
            configurator.ConfigurePartyName();

            configurator.Target(party => party.RussianPartyInfo.RussianPartyType)
            .Set(sg2 => new
            {
                sg2.NameAndAddress.PartyNameType.PartyNameFormatCode,
                sg2.References.First(sg3 => sg3.Reference.ReferenceGroup.ReferenceCodeQualifier == "FC").Reference.ReferenceGroup.ReferenceIdentifier
            }, o => GetRussianPartyType(o.PartyNameFormatCode, o.ReferenceIdentifier));
            configurator.Target(party => party.RussianPartyInfo.IPInfo.Inn)
            .Set(sg2 => sg2.References.First(sg3 => sg3.Reference.ReferenceGroup.ReferenceCodeQualifier == "FC").Reference.ReferenceGroup.ReferenceIdentifier)
            .NullifyIf(party => party.RussianPartyInfo.RussianPartyType != RussianPartyType.IP);
            configurator.Target(party => party.RussianPartyInfo.ULInfo.Inn)
            .Set(sg2 => sg2.References.First(sg3 => sg3.Reference.ReferenceGroup.ReferenceCodeQualifier == "FC").Reference.ReferenceGroup.ReferenceIdentifier)
            .NullifyIf(party => party.RussianPartyInfo.RussianPartyType != RussianPartyType.UL);
        }