public void WorkaroundCrm15815()
        {
            using (var client = TestHelper.ClientGet())
            {
                // Create a contact, chain phone and website.
                var myPhone = new PhoneRequest { PhoneNumber = "03-100 20 00" };
                var myWebsite1 = new WebsiteRequest { Url = "http://smurf.com" };
                var myWebsite2 = new WebsiteRequest { Url = "http://smurf.org" };
                const string myExternalId = "Test_External_Smurf";

                client.ContactSaveWorkaroundCrm15815(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        ContactType = ContactType.Individual,
                        LastName = "Smurf",
                        FirstName = "Smul",
                        ExternalIdentifier = myExternalId,
                        ApiOptions = new ApiOptions { Match = "external_identifier" },
                        WebsiteSaveRequest = new List<WebsiteRequest> { myWebsite1, myWebsite2 },
                        PhoneSaveRequest = new List<PhoneRequest> { myPhone },
                    });

                // Get contact with websites
                var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        ExternalIdentifier = myExternalId,
                        PhoneGetRequest = new PhoneRequest(),
                        WebsiteGetRequest = new WebsiteRequest(),
                    });

                // Delete contact before doing assertions.
                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(contact.Id), 1);

                Assert.AreEqual(1, contact.PhoneResult.Count);
                Assert.AreEqual(myPhone.PhoneNumber, contact.PhoneResult.Values.First().PhoneNumber);
                Assert.AreEqual(2, contact.WebsiteResult.Count);
                Assert.AreEqual(myWebsite1.Url, contact.WebsiteResult.Values.First().Url);
                Assert.AreEqual(myWebsite2.Url, contact.WebsiteResult.Values.Last().Url);
            }
        }
        public void ChainedPhoneAnd2WebsitesCreate()
        {
            using (var client = TestHelper.ClientGet())
            {
                // Create a contact, chain phone and website.
                var myPhone1 = new PhoneRequest { PhoneNumber = "03-100 20 00" }; 
                var myPhone2 = new PhoneRequest { PhoneNumber = "03-100 20 01" };
                var myWebsite1 = new WebsiteRequest { Url = "http://smurf.com" };
                var myWebsite2 = new WebsiteRequest { Url = "http://smurf.org" };

                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        ContactType = ContactType.Individual,
                        LastName = "Smurf",
                        FirstName = "Smul",
                        ExternalIdentifier = "Test_External_Smurf",
                        ApiOptions = new ApiOptions {Match = "external_identifier"},
                        WebsiteSaveRequest = new List<WebsiteRequest> {myWebsite1, myWebsite2},
                        PhoneSaveRequest = new List<PhoneRequest> {myPhone1, myPhone2},
                    });

                // This crashes because of upstream issue CRM-15815:
                Assert.IsNotNull(result.Id);

                // Get contact with websites
                var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        Id = result.Id.Value,
                        PhoneGetRequest = new PhoneRequest(),
                        WebsiteGetRequest = new WebsiteRequest(),
                    });

                // Delete contact before doing assertions.
                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(result.Id.Value), 1);

                Assert.AreEqual(result.Id, contact.Id);
                Assert.AreEqual(2, contact.PhoneResult.Count);
                Assert.AreEqual(myPhone1.PhoneNumber, contact.PhoneResult.Values.First().PhoneNumber);
                Assert.AreEqual(myPhone2.PhoneNumber, contact.PhoneResult.Values.Last().PhoneNumber);
                Assert.AreEqual(2, contact.WebsiteResult.Count);
                Assert.AreEqual(myWebsite1.Url, contact.WebsiteResult.Values.First().Url);
                Assert.AreEqual(myWebsite2.Url, contact.WebsiteResult.Values.Last().Url);
            }
        }