public void CreateWithUser()
        {
            var serviceAccountCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer("MyId", "MyTokenServerUrl")
            {
                Clock             = new MockClock(),
                AccessMethod      = new DummyAccessMethod(),
                HttpClientFactory = new DummyHttpClientFactory(),
                DefaultExponentialBackOffPolicy = ExponentialBackOffPolicy.Exception, // This is not the default
                ProjectId = "a_project_id",
                User      = "******",
                Scopes    = new[] { "scope1" },
            }.FromPrivateKey(PrivateKey));
            var cred1 = GoogleCredential.FromCredential(serviceAccountCred);
            var cred2 = cred1.CreateWithUser("user2");

            var svc1 = (ServiceAccountCredential)cred1.UnderlyingCredential;
            var svc2 = (ServiceAccountCredential)cred2.UnderlyingCredential;

            Assert.Same(serviceAccountCred, svc1);
            Assert.NotSame(serviceAccountCred, svc2);

            Assert.Same(svc1.Id, svc2.Id);
            Assert.Same(svc1.TokenServerUrl, svc2.TokenServerUrl);
            Assert.Same(svc1.Clock, svc2.Clock);
            Assert.Same(svc1.AccessMethod, svc2.AccessMethod);
            Assert.Same(svc1.HttpClientFactory, svc2.HttpClientFactory);
            Assert.Equal(svc1.DefaultExponentialBackOffPolicy, svc2.DefaultExponentialBackOffPolicy);
            Assert.Same(svc1.ProjectId, svc2.ProjectId);
            Assert.NotSame(svc1.User, svc2.User);
            Assert.Same(svc1.Scopes, svc2.Scopes);
            Assert.Equal("user1", svc1.User);
            Assert.Equal("user2", svc2.User);
        }