public object Execute()

in modules/AWSPowerShell/Cmdlets/S3Control/Basic/New-S3CJob-Cmdlet.cs [1303:2440]


        public object Execute(ExecutorContext context)
        {
            var cmdletContext = context as CmdletContext;
            // create request
            var request = new Amazon.S3Control.Model.CreateJobRequest();
            
            if (cmdletContext.AccountId != null)
            {
                request.AccountId = cmdletContext.AccountId;
            }
            if (cmdletContext.ClientRequestToken != null)
            {
                request.ClientRequestToken = cmdletContext.ClientRequestToken;
            }
            if (cmdletContext.ConfirmationRequired != null)
            {
                request.ConfirmationRequired = cmdletContext.ConfirmationRequired.Value;
            }
            if (cmdletContext.Description != null)
            {
                request.Description = cmdletContext.Description;
            }
            
             // populate Manifest
            var requestManifestIsNull = true;
            request.Manifest = new Amazon.S3Control.Model.JobManifest();
            Amazon.S3Control.Model.JobManifestSpec requestManifest_manifest_Spec = null;
            
             // populate Spec
            var requestManifest_manifest_SpecIsNull = true;
            requestManifest_manifest_Spec = new Amazon.S3Control.Model.JobManifestSpec();
            List<System.String> requestManifest_manifest_Spec_spec_Field = null;
            if (cmdletContext.Spec_Field != null)
            {
                requestManifest_manifest_Spec_spec_Field = cmdletContext.Spec_Field;
            }
            if (requestManifest_manifest_Spec_spec_Field != null)
            {
                requestManifest_manifest_Spec.Fields = requestManifest_manifest_Spec_spec_Field;
                requestManifest_manifest_SpecIsNull = false;
            }
            Amazon.S3Control.JobManifestFormat requestManifest_manifest_Spec_spec_Format = null;
            if (cmdletContext.Spec_Format != null)
            {
                requestManifest_manifest_Spec_spec_Format = cmdletContext.Spec_Format;
            }
            if (requestManifest_manifest_Spec_spec_Format != null)
            {
                requestManifest_manifest_Spec.Format = requestManifest_manifest_Spec_spec_Format;
                requestManifest_manifest_SpecIsNull = false;
            }
             // determine if requestManifest_manifest_Spec should be set to null
            if (requestManifest_manifest_SpecIsNull)
            {
                requestManifest_manifest_Spec = null;
            }
            if (requestManifest_manifest_Spec != null)
            {
                request.Manifest.Spec = requestManifest_manifest_Spec;
                requestManifestIsNull = false;
            }
            Amazon.S3Control.Model.JobManifestLocation requestManifest_manifest_Location = null;
            
             // populate Location
            var requestManifest_manifest_LocationIsNull = true;
            requestManifest_manifest_Location = new Amazon.S3Control.Model.JobManifestLocation();
            System.String requestManifest_manifest_Location_location_ETag = null;
            if (cmdletContext.Location_ETag != null)
            {
                requestManifest_manifest_Location_location_ETag = cmdletContext.Location_ETag;
            }
            if (requestManifest_manifest_Location_location_ETag != null)
            {
                requestManifest_manifest_Location.ETag = requestManifest_manifest_Location_location_ETag;
                requestManifest_manifest_LocationIsNull = false;
            }
            System.String requestManifest_manifest_Location_location_ObjectArn = null;
            if (cmdletContext.Location_ObjectArn != null)
            {
                requestManifest_manifest_Location_location_ObjectArn = cmdletContext.Location_ObjectArn;
            }
            if (requestManifest_manifest_Location_location_ObjectArn != null)
            {
                requestManifest_manifest_Location.ObjectArn = requestManifest_manifest_Location_location_ObjectArn;
                requestManifest_manifest_LocationIsNull = false;
            }
            System.String requestManifest_manifest_Location_location_ObjectVersionId = null;
            if (cmdletContext.Location_ObjectVersionId != null)
            {
                requestManifest_manifest_Location_location_ObjectVersionId = cmdletContext.Location_ObjectVersionId;
            }
            if (requestManifest_manifest_Location_location_ObjectVersionId != null)
            {
                requestManifest_manifest_Location.ObjectVersionId = requestManifest_manifest_Location_location_ObjectVersionId;
                requestManifest_manifest_LocationIsNull = false;
            }
             // determine if requestManifest_manifest_Location should be set to null
            if (requestManifest_manifest_LocationIsNull)
            {
                requestManifest_manifest_Location = null;
            }
            if (requestManifest_manifest_Location != null)
            {
                request.Manifest.Location = requestManifest_manifest_Location;
                requestManifestIsNull = false;
            }
             // determine if request.Manifest should be set to null
            if (requestManifestIsNull)
            {
                request.Manifest = null;
            }
            
             // populate ManifestGenerator
            var requestManifestGeneratorIsNull = true;
            request.ManifestGenerator = new Amazon.S3Control.Model.JobManifestGenerator();
            Amazon.S3Control.Model.S3JobManifestGenerator requestManifestGenerator_manifestGenerator_S3JobManifestGenerator = null;
            
             // populate S3JobManifestGenerator
            var requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator = new Amazon.S3Control.Model.S3JobManifestGenerator();
            System.Boolean? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_EnableManifestOutput = null;
            if (cmdletContext.S3JobManifestGenerator_EnableManifestOutput != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_EnableManifestOutput = cmdletContext.S3JobManifestGenerator_EnableManifestOutput.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_EnableManifestOutput != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator.EnableManifestOutput = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_EnableManifestOutput.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = false;
            }
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_ExpectedBucketOwner = null;
            if (cmdletContext.S3JobManifestGenerator_ExpectedBucketOwner != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_ExpectedBucketOwner = cmdletContext.S3JobManifestGenerator_ExpectedBucketOwner;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_ExpectedBucketOwner != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator.ExpectedBucketOwner = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_ExpectedBucketOwner;
                requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = false;
            }
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_SourceBucket = null;
            if (cmdletContext.S3JobManifestGenerator_SourceBucket != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_SourceBucket = cmdletContext.S3JobManifestGenerator_SourceBucket;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_SourceBucket != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator.SourceBucket = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_s3JobManifestGenerator_SourceBucket;
                requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = false;
            }
            Amazon.S3Control.Model.S3ManifestOutputLocation requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation = null;
            
             // populate ManifestOutputLocation
            var requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation = new Amazon.S3Control.Model.S3ManifestOutputLocation();
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_Bucket = null;
            if (cmdletContext.ManifestOutputLocation_Bucket != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_Bucket = cmdletContext.ManifestOutputLocation_Bucket;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_Bucket != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation.Bucket = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_Bucket;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = false;
            }
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ExpectedManifestBucketOwner = null;
            if (cmdletContext.ManifestOutputLocation_ExpectedManifestBucketOwner != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ExpectedManifestBucketOwner = cmdletContext.ManifestOutputLocation_ExpectedManifestBucketOwner;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ExpectedManifestBucketOwner != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation.ExpectedManifestBucketOwner = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ExpectedManifestBucketOwner;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = false;
            }
            Amazon.S3Control.GeneratedManifestFormat requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestFormat = null;
            if (cmdletContext.ManifestOutputLocation_ManifestFormat != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestFormat = cmdletContext.ManifestOutputLocation_ManifestFormat;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestFormat != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation.ManifestFormat = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestFormat;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = false;
            }
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestPrefix = null;
            if (cmdletContext.ManifestOutputLocation_ManifestPrefix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestPrefix = cmdletContext.ManifestOutputLocation_ManifestPrefix;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestPrefix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation.ManifestPrefix = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestOutputLocation_ManifestPrefix;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = false;
            }
            Amazon.S3Control.Model.GeneratedManifestEncryption requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption = null;
            
             // populate ManifestEncryption
            var requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryptionIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption = new Amazon.S3Control.Model.GeneratedManifestEncryption();
            Amazon.S3Control.Model.SSES3Encryption requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestEncryption_SSES3 = null;
            if (cmdletContext.ManifestEncryption_SSES3 != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestEncryption_SSES3 = cmdletContext.ManifestEncryption_SSES3;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestEncryption_SSES3 != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption.SSES3 = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestEncryption_SSES3;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryptionIsNull = false;
            }
            Amazon.S3Control.Model.SSEKMSEncryption requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS = null;
            
             // populate SSEKMS
            var requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMSIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS = new Amazon.S3Control.Model.SSEKMSEncryption();
            System.String requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS_sSEKMS_KeyId = null;
            if (cmdletContext.SSEKMS_KeyId != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS_sSEKMS_KeyId = cmdletContext.SSEKMS_KeyId;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS_sSEKMS_KeyId != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS.KeyId = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS_sSEKMS_KeyId;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMSIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMSIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption.SSEKMS = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption_SSEKMS;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryptionIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryptionIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation.ManifestEncryption = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation_ManifestEncryption;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocationIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator.ManifestOutputLocation = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_ManifestOutputLocation;
                requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = false;
            }
            Amazon.S3Control.Model.JobManifestGeneratorFilter requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter = null;
            
             // populate Filter
            var requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter = new Amazon.S3Control.Model.JobManifestGeneratorFilter();
            System.DateTime? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedAfter = null;
            if (cmdletContext.Filter_CreatedAfter != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedAfter = cmdletContext.Filter_CreatedAfter.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedAfter != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.CreatedAfter = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedAfter.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            System.DateTime? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedBefore = null;
            if (cmdletContext.Filter_CreatedBefore != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedBefore = cmdletContext.Filter_CreatedBefore.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedBefore != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.CreatedBefore = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_CreatedBefore.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            System.Boolean? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_EligibleForReplication = null;
            if (cmdletContext.Filter_EligibleForReplication != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_EligibleForReplication = cmdletContext.Filter_EligibleForReplication.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_EligibleForReplication != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.EligibleForReplication = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_EligibleForReplication.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            List<System.String> requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_MatchAnyStorageClass = null;
            if (cmdletContext.Filter_MatchAnyStorageClass != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_MatchAnyStorageClass = cmdletContext.Filter_MatchAnyStorageClass;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_MatchAnyStorageClass != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.MatchAnyStorageClass = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_MatchAnyStorageClass;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            List<System.String> requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectReplicationStatus = null;
            if (cmdletContext.Filter_ObjectReplicationStatus != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectReplicationStatus = cmdletContext.Filter_ObjectReplicationStatus;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectReplicationStatus != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.ObjectReplicationStatuses = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectReplicationStatus;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            System.Int64? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeGreaterThanByte = null;
            if (cmdletContext.Filter_ObjectSizeGreaterThanByte != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeGreaterThanByte = cmdletContext.Filter_ObjectSizeGreaterThanByte.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeGreaterThanByte != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.ObjectSizeGreaterThanBytes = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeGreaterThanByte.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            System.Int64? requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeLessThanByte = null;
            if (cmdletContext.Filter_ObjectSizeLessThanByte != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeLessThanByte = cmdletContext.Filter_ObjectSizeLessThanByte.Value;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeLessThanByte != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.ObjectSizeLessThanBytes = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_filter_ObjectSizeLessThanByte.Value;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
            Amazon.S3Control.Model.KeyNameConstraint requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint = null;
            
             // populate KeyNameConstraint
            var requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraintIsNull = true;
            requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint = new Amazon.S3Control.Model.KeyNameConstraint();
            List<System.String> requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnyPrefix = null;
            if (cmdletContext.KeyNameConstraint_MatchAnyPrefix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnyPrefix = cmdletContext.KeyNameConstraint_MatchAnyPrefix;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnyPrefix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint.MatchAnyPrefix = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnyPrefix;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraintIsNull = false;
            }
            List<System.String> requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySubstring = null;
            if (cmdletContext.KeyNameConstraint_MatchAnySubstring != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySubstring = cmdletContext.KeyNameConstraint_MatchAnySubstring;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySubstring != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint.MatchAnySubstring = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySubstring;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraintIsNull = false;
            }
            List<System.String> requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySuffix = null;
            if (cmdletContext.KeyNameConstraint_MatchAnySuffix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySuffix = cmdletContext.KeyNameConstraint_MatchAnySuffix;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySuffix != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint.MatchAnySuffix = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint_keyNameConstraint_MatchAnySuffix;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraintIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraintIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter.KeyNameConstraint = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter_manifestGenerator_S3JobManifestGenerator_Filter_KeyNameConstraint;
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_FilterIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter != null)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator.Filter = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator_manifestGenerator_S3JobManifestGenerator_Filter;
                requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull = false;
            }
             // determine if requestManifestGenerator_manifestGenerator_S3JobManifestGenerator should be set to null
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGeneratorIsNull)
            {
                requestManifestGenerator_manifestGenerator_S3JobManifestGenerator = null;
            }
            if (requestManifestGenerator_manifestGenerator_S3JobManifestGenerator != null)
            {
                request.ManifestGenerator.S3JobManifestGenerator = requestManifestGenerator_manifestGenerator_S3JobManifestGenerator;
                requestManifestGeneratorIsNull = false;
            }
             // determine if request.ManifestGenerator should be set to null
            if (requestManifestGeneratorIsNull)
            {
                request.ManifestGenerator = null;
            }
            
             // populate Operation
            var requestOperationIsNull = true;
            request.Operation = new Amazon.S3Control.Model.JobOperation();
            Amazon.S3Control.Model.S3DeleteObjectTaggingOperation requestOperation_operation_S3DeleteObjectTagging = null;
            if (cmdletContext.Operation_S3DeleteObjectTagging != null)
            {
                requestOperation_operation_S3DeleteObjectTagging = cmdletContext.Operation_S3DeleteObjectTagging;
            }
            if (requestOperation_operation_S3DeleteObjectTagging != null)
            {
                request.Operation.S3DeleteObjectTagging = requestOperation_operation_S3DeleteObjectTagging;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3ReplicateObjectOperation requestOperation_operation_S3ReplicateObject = null;
            if (cmdletContext.Operation_S3ReplicateObject != null)
            {
                requestOperation_operation_S3ReplicateObject = cmdletContext.Operation_S3ReplicateObject;
            }
            if (requestOperation_operation_S3ReplicateObject != null)
            {
                request.Operation.S3ReplicateObject = requestOperation_operation_S3ReplicateObject;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3SetObjectAclOperation requestOperation_operation_S3PutObjectAcl = null;
            
             // populate S3PutObjectAcl
            var requestOperation_operation_S3PutObjectAclIsNull = true;
            requestOperation_operation_S3PutObjectAcl = new Amazon.S3Control.Model.S3SetObjectAclOperation();
            Amazon.S3Control.Model.S3AccessControlPolicy requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy = null;
            
             // populate AccessControlPolicy
            var requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicyIsNull = true;
            requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy = new Amazon.S3Control.Model.S3AccessControlPolicy();
            Amazon.S3Control.S3CannedAccessControlList requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_accessControlPolicy_CannedAccessControlList = null;
            if (cmdletContext.AccessControlPolicy_CannedAccessControlList != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_accessControlPolicy_CannedAccessControlList = cmdletContext.AccessControlPolicy_CannedAccessControlList;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_accessControlPolicy_CannedAccessControlList != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy.CannedAccessControlList = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_accessControlPolicy_CannedAccessControlList;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicyIsNull = false;
            }
            Amazon.S3Control.Model.S3AccessControlList requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList = null;
            
             // populate AccessControlList
            var requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlListIsNull = true;
            requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList = new Amazon.S3Control.Model.S3AccessControlList();
            List<Amazon.S3Control.Model.S3Grant> requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_accessControlList_Grant = null;
            if (cmdletContext.AccessControlList_Grant != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_accessControlList_Grant = cmdletContext.AccessControlList_Grant;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_accessControlList_Grant != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList.Grants = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_accessControlList_Grant;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlListIsNull = false;
            }
            Amazon.S3Control.Model.S3ObjectOwner requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner = null;
            
             // populate Owner
            var requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_OwnerIsNull = true;
            requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner = new Amazon.S3Control.Model.S3ObjectOwner();
            System.String requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_DisplayName = null;
            if (cmdletContext.Owner_DisplayName != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_DisplayName = cmdletContext.Owner_DisplayName;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_DisplayName != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner.DisplayName = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_DisplayName;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_OwnerIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_ID = null;
            if (cmdletContext.Owner_ID != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_ID = cmdletContext.Owner_ID;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_ID != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner.ID = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner_owner_ID;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_OwnerIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner should be set to null
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_OwnerIsNull)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner = null;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList.Owner = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList_Owner;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlListIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList should be set to null
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlListIsNull)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList = null;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList != null)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy.AccessControlList = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy_operation_S3PutObjectAcl_AccessControlPolicy_AccessControlList;
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicyIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy should be set to null
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicyIsNull)
            {
                requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy = null;
            }
            if (requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy != null)
            {
                requestOperation_operation_S3PutObjectAcl.AccessControlPolicy = requestOperation_operation_S3PutObjectAcl_operation_S3PutObjectAcl_AccessControlPolicy;
                requestOperation_operation_S3PutObjectAclIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectAcl should be set to null
            if (requestOperation_operation_S3PutObjectAclIsNull)
            {
                requestOperation_operation_S3PutObjectAcl = null;
            }
            if (requestOperation_operation_S3PutObjectAcl != null)
            {
                request.Operation.S3PutObjectAcl = requestOperation_operation_S3PutObjectAcl;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3SetObjectLegalHoldOperation requestOperation_operation_S3PutObjectLegalHold = null;
            
             // populate S3PutObjectLegalHold
            var requestOperation_operation_S3PutObjectLegalHoldIsNull = true;
            requestOperation_operation_S3PutObjectLegalHold = new Amazon.S3Control.Model.S3SetObjectLegalHoldOperation();
            Amazon.S3Control.Model.S3ObjectLockLegalHold requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold = null;
            
             // populate LegalHold
            var requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHoldIsNull = true;
            requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold = new Amazon.S3Control.Model.S3ObjectLockLegalHold();
            Amazon.S3Control.S3ObjectLockLegalHoldStatus requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold_legalHold_Status = null;
            if (cmdletContext.LegalHold_Status != null)
            {
                requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold_legalHold_Status = cmdletContext.LegalHold_Status;
            }
            if (requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold_legalHold_Status != null)
            {
                requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold.Status = requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold_legalHold_Status;
                requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHoldIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold should be set to null
            if (requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHoldIsNull)
            {
                requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold = null;
            }
            if (requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold != null)
            {
                requestOperation_operation_S3PutObjectLegalHold.LegalHold = requestOperation_operation_S3PutObjectLegalHold_operation_S3PutObjectLegalHold_LegalHold;
                requestOperation_operation_S3PutObjectLegalHoldIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectLegalHold should be set to null
            if (requestOperation_operation_S3PutObjectLegalHoldIsNull)
            {
                requestOperation_operation_S3PutObjectLegalHold = null;
            }
            if (requestOperation_operation_S3PutObjectLegalHold != null)
            {
                request.Operation.S3PutObjectLegalHold = requestOperation_operation_S3PutObjectLegalHold;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3SetObjectTaggingOperation requestOperation_operation_S3PutObjectTagging = null;
            
             // populate S3PutObjectTagging
            var requestOperation_operation_S3PutObjectTaggingIsNull = true;
            requestOperation_operation_S3PutObjectTagging = new Amazon.S3Control.Model.S3SetObjectTaggingOperation();
            List<Amazon.S3Control.Model.S3Tag> requestOperation_operation_S3PutObjectTagging_s3PutObjectTagging_TagSet = null;
            if (cmdletContext.S3PutObjectTagging_TagSet != null)
            {
                requestOperation_operation_S3PutObjectTagging_s3PutObjectTagging_TagSet = cmdletContext.S3PutObjectTagging_TagSet;
            }
            if (requestOperation_operation_S3PutObjectTagging_s3PutObjectTagging_TagSet != null)
            {
                requestOperation_operation_S3PutObjectTagging.TagSet = requestOperation_operation_S3PutObjectTagging_s3PutObjectTagging_TagSet;
                requestOperation_operation_S3PutObjectTaggingIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectTagging should be set to null
            if (requestOperation_operation_S3PutObjectTaggingIsNull)
            {
                requestOperation_operation_S3PutObjectTagging = null;
            }
            if (requestOperation_operation_S3PutObjectTagging != null)
            {
                request.Operation.S3PutObjectTagging = requestOperation_operation_S3PutObjectTagging;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3InitiateRestoreObjectOperation requestOperation_operation_S3InitiateRestoreObject = null;
            
             // populate S3InitiateRestoreObject
            var requestOperation_operation_S3InitiateRestoreObjectIsNull = true;
            requestOperation_operation_S3InitiateRestoreObject = new Amazon.S3Control.Model.S3InitiateRestoreObjectOperation();
            System.Int32? requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_ExpirationInDay = null;
            if (cmdletContext.S3InitiateRestoreObject_ExpirationInDay != null)
            {
                requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_ExpirationInDay = cmdletContext.S3InitiateRestoreObject_ExpirationInDay.Value;
            }
            if (requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_ExpirationInDay != null)
            {
                requestOperation_operation_S3InitiateRestoreObject.ExpirationInDays = requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_ExpirationInDay.Value;
                requestOperation_operation_S3InitiateRestoreObjectIsNull = false;
            }
            Amazon.S3Control.S3GlacierJobTier requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_GlacierJobTier = null;
            if (cmdletContext.S3InitiateRestoreObject_GlacierJobTier != null)
            {
                requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_GlacierJobTier = cmdletContext.S3InitiateRestoreObject_GlacierJobTier;
            }
            if (requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_GlacierJobTier != null)
            {
                requestOperation_operation_S3InitiateRestoreObject.GlacierJobTier = requestOperation_operation_S3InitiateRestoreObject_s3InitiateRestoreObject_GlacierJobTier;
                requestOperation_operation_S3InitiateRestoreObjectIsNull = false;
            }
             // determine if requestOperation_operation_S3InitiateRestoreObject should be set to null
            if (requestOperation_operation_S3InitiateRestoreObjectIsNull)
            {
                requestOperation_operation_S3InitiateRestoreObject = null;
            }
            if (requestOperation_operation_S3InitiateRestoreObject != null)
            {
                request.Operation.S3InitiateRestoreObject = requestOperation_operation_S3InitiateRestoreObject;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3SetObjectRetentionOperation requestOperation_operation_S3PutObjectRetention = null;
            
             // populate S3PutObjectRetention
            var requestOperation_operation_S3PutObjectRetentionIsNull = true;
            requestOperation_operation_S3PutObjectRetention = new Amazon.S3Control.Model.S3SetObjectRetentionOperation();
            System.Boolean? requestOperation_operation_S3PutObjectRetention_s3PutObjectRetention_BypassGovernanceRetention = null;
            if (cmdletContext.S3PutObjectRetention_BypassGovernanceRetention != null)
            {
                requestOperation_operation_S3PutObjectRetention_s3PutObjectRetention_BypassGovernanceRetention = cmdletContext.S3PutObjectRetention_BypassGovernanceRetention.Value;
            }
            if (requestOperation_operation_S3PutObjectRetention_s3PutObjectRetention_BypassGovernanceRetention != null)
            {
                requestOperation_operation_S3PutObjectRetention.BypassGovernanceRetention = requestOperation_operation_S3PutObjectRetention_s3PutObjectRetention_BypassGovernanceRetention.Value;
                requestOperation_operation_S3PutObjectRetentionIsNull = false;
            }
            Amazon.S3Control.Model.S3Retention requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention = null;
            
             // populate Retention
            var requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_RetentionIsNull = true;
            requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention = new Amazon.S3Control.Model.S3Retention();
            Amazon.S3Control.S3ObjectLockRetentionMode requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_Mode = null;
            if (cmdletContext.Retention_Mode != null)
            {
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_Mode = cmdletContext.Retention_Mode;
            }
            if (requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_Mode != null)
            {
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention.Mode = requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_Mode;
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_RetentionIsNull = false;
            }
            System.DateTime? requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_RetainUntilDate = null;
            if (cmdletContext.Retention_RetainUntilDate != null)
            {
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_RetainUntilDate = cmdletContext.Retention_RetainUntilDate.Value;
            }
            if (requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_RetainUntilDate != null)
            {
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention.RetainUntilDate = requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention_retention_RetainUntilDate.Value;
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_RetentionIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention should be set to null
            if (requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_RetentionIsNull)
            {
                requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention = null;
            }
            if (requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention != null)
            {
                requestOperation_operation_S3PutObjectRetention.Retention = requestOperation_operation_S3PutObjectRetention_operation_S3PutObjectRetention_Retention;
                requestOperation_operation_S3PutObjectRetentionIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectRetention should be set to null
            if (requestOperation_operation_S3PutObjectRetentionIsNull)
            {
                requestOperation_operation_S3PutObjectRetention = null;
            }
            if (requestOperation_operation_S3PutObjectRetention != null)
            {
                request.Operation.S3PutObjectRetention = requestOperation_operation_S3PutObjectRetention;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.LambdaInvokeOperation requestOperation_operation_LambdaInvoke = null;
            
             // populate LambdaInvoke
            var requestOperation_operation_LambdaInvokeIsNull = true;
            requestOperation_operation_LambdaInvoke = new Amazon.S3Control.Model.LambdaInvokeOperation();
            System.String requestOperation_operation_LambdaInvoke_lambdaInvoke_FunctionArn = null;
            if (cmdletContext.LambdaInvoke_FunctionArn != null)
            {
                requestOperation_operation_LambdaInvoke_lambdaInvoke_FunctionArn = cmdletContext.LambdaInvoke_FunctionArn;
            }
            if (requestOperation_operation_LambdaInvoke_lambdaInvoke_FunctionArn != null)
            {
                requestOperation_operation_LambdaInvoke.FunctionArn = requestOperation_operation_LambdaInvoke_lambdaInvoke_FunctionArn;
                requestOperation_operation_LambdaInvokeIsNull = false;
            }
            System.String requestOperation_operation_LambdaInvoke_lambdaInvoke_InvocationSchemaVersion = null;
            if (cmdletContext.LambdaInvoke_InvocationSchemaVersion != null)
            {
                requestOperation_operation_LambdaInvoke_lambdaInvoke_InvocationSchemaVersion = cmdletContext.LambdaInvoke_InvocationSchemaVersion;
            }
            if (requestOperation_operation_LambdaInvoke_lambdaInvoke_InvocationSchemaVersion != null)
            {
                requestOperation_operation_LambdaInvoke.InvocationSchemaVersion = requestOperation_operation_LambdaInvoke_lambdaInvoke_InvocationSchemaVersion;
                requestOperation_operation_LambdaInvokeIsNull = false;
            }
            Dictionary<System.String, System.String> requestOperation_operation_LambdaInvoke_lambdaInvoke_UserArgument = null;
            if (cmdletContext.LambdaInvoke_UserArgument != null)
            {
                requestOperation_operation_LambdaInvoke_lambdaInvoke_UserArgument = cmdletContext.LambdaInvoke_UserArgument;
            }
            if (requestOperation_operation_LambdaInvoke_lambdaInvoke_UserArgument != null)
            {
                requestOperation_operation_LambdaInvoke.UserArguments = requestOperation_operation_LambdaInvoke_lambdaInvoke_UserArgument;
                requestOperation_operation_LambdaInvokeIsNull = false;
            }
             // determine if requestOperation_operation_LambdaInvoke should be set to null
            if (requestOperation_operation_LambdaInvokeIsNull)
            {
                requestOperation_operation_LambdaInvoke = null;
            }
            if (requestOperation_operation_LambdaInvoke != null)
            {
                request.Operation.LambdaInvoke = requestOperation_operation_LambdaInvoke;
                requestOperationIsNull = false;
            }
            Amazon.S3Control.Model.S3CopyObjectOperation requestOperation_operation_S3PutObjectCopy = null;
            
             // populate S3PutObjectCopy
            var requestOperation_operation_S3PutObjectCopyIsNull = true;
            requestOperation_operation_S3PutObjectCopy = new Amazon.S3Control.Model.S3CopyObjectOperation();
            List<Amazon.S3Control.Model.S3Grant> requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_AccessControlGrant = null;
            if (cmdletContext.S3PutObjectCopy_AccessControlGrant != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_AccessControlGrant = cmdletContext.S3PutObjectCopy_AccessControlGrant;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_AccessControlGrant != null)
            {
                requestOperation_operation_S3PutObjectCopy.AccessControlGrants = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_AccessControlGrant;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.Boolean? requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_BucketKeyEnabled = null;
            if (cmdletContext.S3PutObjectCopy_BucketKeyEnabled != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_BucketKeyEnabled = cmdletContext.S3PutObjectCopy_BucketKeyEnabled.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_BucketKeyEnabled != null)
            {
                requestOperation_operation_S3PutObjectCopy.BucketKeyEnabled = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_BucketKeyEnabled.Value;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3CannedAccessControlList requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_CannedAccessControlList = null;
            if (cmdletContext.S3PutObjectCopy_CannedAccessControlList != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_CannedAccessControlList = cmdletContext.S3PutObjectCopy_CannedAccessControlList;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_CannedAccessControlList != null)
            {
                requestOperation_operation_S3PutObjectCopy.CannedAccessControlList = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_CannedAccessControlList;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3ChecksumAlgorithm requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ChecksumAlgorithm = null;
            if (cmdletContext.S3PutObjectCopy_ChecksumAlgorithm != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ChecksumAlgorithm = cmdletContext.S3PutObjectCopy_ChecksumAlgorithm;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ChecksumAlgorithm != null)
            {
                requestOperation_operation_S3PutObjectCopy.ChecksumAlgorithm = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ChecksumAlgorithm;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3MetadataDirective requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_MetadataDirective = null;
            if (cmdletContext.S3PutObjectCopy_MetadataDirective != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_MetadataDirective = cmdletContext.S3PutObjectCopy_MetadataDirective;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_MetadataDirective != null)
            {
                requestOperation_operation_S3PutObjectCopy.MetadataDirective = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_MetadataDirective;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.DateTime? requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ModifiedSinceConstraint = null;
            if (cmdletContext.S3PutObjectCopy_ModifiedSinceConstraint != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ModifiedSinceConstraint = cmdletContext.S3PutObjectCopy_ModifiedSinceConstraint.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ModifiedSinceConstraint != null)
            {
                requestOperation_operation_S3PutObjectCopy.ModifiedSinceConstraint = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ModifiedSinceConstraint.Value;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            List<Amazon.S3Control.Model.S3Tag> requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_NewObjectTagging = null;
            if (cmdletContext.S3PutObjectCopy_NewObjectTagging != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_NewObjectTagging = cmdletContext.S3PutObjectCopy_NewObjectTagging;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_NewObjectTagging != null)
            {
                requestOperation_operation_S3PutObjectCopy.NewObjectTagging = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_NewObjectTagging;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3ObjectLockLegalHoldStatus requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockLegalHoldStatus = null;
            if (cmdletContext.S3PutObjectCopy_ObjectLockLegalHoldStatus != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockLegalHoldStatus = cmdletContext.S3PutObjectCopy_ObjectLockLegalHoldStatus;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockLegalHoldStatus != null)
            {
                requestOperation_operation_S3PutObjectCopy.ObjectLockLegalHoldStatus = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockLegalHoldStatus;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3ObjectLockMode requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockMode = null;
            if (cmdletContext.S3PutObjectCopy_ObjectLockMode != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockMode = cmdletContext.S3PutObjectCopy_ObjectLockMode;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockMode != null)
            {
                requestOperation_operation_S3PutObjectCopy.ObjectLockMode = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockMode;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.DateTime? requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockRetainUntilDate = null;
            if (cmdletContext.S3PutObjectCopy_ObjectLockRetainUntilDate != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockRetainUntilDate = cmdletContext.S3PutObjectCopy_ObjectLockRetainUntilDate.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockRetainUntilDate != null)
            {
                requestOperation_operation_S3PutObjectCopy.ObjectLockRetainUntilDate = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_ObjectLockRetainUntilDate.Value;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RedirectLocation = null;
            if (cmdletContext.S3PutObjectCopy_RedirectLocation != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RedirectLocation = cmdletContext.S3PutObjectCopy_RedirectLocation;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RedirectLocation != null)
            {
                requestOperation_operation_S3PutObjectCopy.RedirectLocation = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RedirectLocation;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.Boolean? requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RequesterPay = null;
            if (cmdletContext.S3PutObjectCopy_RequesterPay != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RequesterPay = cmdletContext.S3PutObjectCopy_RequesterPay.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RequesterPay != null)
            {
                requestOperation_operation_S3PutObjectCopy.RequesterPays = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_RequesterPay.Value;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_SSEAwsKmsKeyId = null;
            if (cmdletContext.S3PutObjectCopy_SSEAwsKmsKeyId != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_SSEAwsKmsKeyId = cmdletContext.S3PutObjectCopy_SSEAwsKmsKeyId;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_SSEAwsKmsKeyId != null)
            {
                requestOperation_operation_S3PutObjectCopy.SSEAwsKmsKeyId = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_SSEAwsKmsKeyId;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.S3StorageClass requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_StorageClass = null;
            if (cmdletContext.S3PutObjectCopy_StorageClass != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_StorageClass = cmdletContext.S3PutObjectCopy_StorageClass;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_StorageClass != null)
            {
                requestOperation_operation_S3PutObjectCopy.StorageClass = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_StorageClass;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetKeyPrefix = null;
            if (cmdletContext.S3PutObjectCopy_TargetKeyPrefix != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetKeyPrefix = cmdletContext.S3PutObjectCopy_TargetKeyPrefix;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetKeyPrefix != null)
            {
                requestOperation_operation_S3PutObjectCopy.TargetKeyPrefix = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetKeyPrefix;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetResource = null;
            if (cmdletContext.S3PutObjectCopy_TargetResource != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetResource = cmdletContext.S3PutObjectCopy_TargetResource;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetResource != null)
            {
                requestOperation_operation_S3PutObjectCopy.TargetResource = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_TargetResource;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            System.DateTime? requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_UnModifiedSinceConstraint = null;
            if (cmdletContext.S3PutObjectCopy_UnModifiedSinceConstraint != null)
            {
                requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_UnModifiedSinceConstraint = cmdletContext.S3PutObjectCopy_UnModifiedSinceConstraint.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_UnModifiedSinceConstraint != null)
            {
                requestOperation_operation_S3PutObjectCopy.UnModifiedSinceConstraint = requestOperation_operation_S3PutObjectCopy_s3PutObjectCopy_UnModifiedSinceConstraint.Value;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
            Amazon.S3Control.Model.S3ObjectMetadata requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata = null;
            
             // populate NewObjectMetadata
            var requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = true;
            requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata = new Amazon.S3Control.Model.S3ObjectMetadata();
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_CacheControl = null;
            if (cmdletContext.NewObjectMetadata_CacheControl != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_CacheControl = cmdletContext.NewObjectMetadata_CacheControl;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_CacheControl != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.CacheControl = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_CacheControl;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentDisposition = null;
            if (cmdletContext.NewObjectMetadata_ContentDisposition != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentDisposition = cmdletContext.NewObjectMetadata_ContentDisposition;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentDisposition != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentDisposition = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentDisposition;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentEncoding = null;
            if (cmdletContext.NewObjectMetadata_ContentEncoding != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentEncoding = cmdletContext.NewObjectMetadata_ContentEncoding;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentEncoding != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentEncoding = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentEncoding;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLanguage = null;
            if (cmdletContext.NewObjectMetadata_ContentLanguage != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLanguage = cmdletContext.NewObjectMetadata_ContentLanguage;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLanguage != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentLanguage = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLanguage;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.Int64? requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLength = null;
            if (cmdletContext.NewObjectMetadata_ContentLength != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLength = cmdletContext.NewObjectMetadata_ContentLength.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLength != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentLength = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentLength.Value;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentMD5 = null;
            if (cmdletContext.NewObjectMetadata_ContentMD5 != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentMD5 = cmdletContext.NewObjectMetadata_ContentMD5;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentMD5 != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentMD5 = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentMD5;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.String requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentType = null;
            if (cmdletContext.NewObjectMetadata_ContentType != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentType = cmdletContext.NewObjectMetadata_ContentType;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentType != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.ContentType = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_ContentType;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.DateTime? requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_HttpExpiresDate = null;
            if (cmdletContext.NewObjectMetadata_HttpExpiresDate != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_HttpExpiresDate = cmdletContext.NewObjectMetadata_HttpExpiresDate.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_HttpExpiresDate != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.HttpExpiresDate = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_HttpExpiresDate.Value;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            System.Boolean? requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_RequesterCharged = null;
            if (cmdletContext.NewObjectMetadata_RequesterCharged != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_RequesterCharged = cmdletContext.NewObjectMetadata_RequesterCharged.Value;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_RequesterCharged != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.RequesterCharged = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_RequesterCharged.Value;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            Amazon.S3Control.S3SSEAlgorithm requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_SSEAlgorithm = null;
            if (cmdletContext.NewObjectMetadata_SSEAlgorithm != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_SSEAlgorithm = cmdletContext.NewObjectMetadata_SSEAlgorithm;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_SSEAlgorithm != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.SSEAlgorithm = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_SSEAlgorithm;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
            Dictionary<System.String, System.String> requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_UserMetadata = null;
            if (cmdletContext.NewObjectMetadata_UserMetadata != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_UserMetadata = cmdletContext.NewObjectMetadata_UserMetadata;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_UserMetadata != null)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata.UserMetadata = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata_newObjectMetadata_UserMetadata;
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata should be set to null
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadataIsNull)
            {
                requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata = null;
            }
            if (requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata != null)
            {
                requestOperation_operation_S3PutObjectCopy.NewObjectMetadata = requestOperation_operation_S3PutObjectCopy_operation_S3PutObjectCopy_NewObjectMetadata;
                requestOperation_operation_S3PutObjectCopyIsNull = false;
            }
             // determine if requestOperation_operation_S3PutObjectCopy should be set to null
            if (requestOperation_operation_S3PutObjectCopyIsNull)
            {
                requestOperation_operation_S3PutObjectCopy = null;
            }
            if (requestOperation_operation_S3PutObjectCopy != null)
            {
                request.Operation.S3PutObjectCopy = requestOperation_operation_S3PutObjectCopy;
                requestOperationIsNull = false;
            }
             // determine if request.Operation should be set to null
            if (requestOperationIsNull)
            {
                request.Operation = null;
            }
            if (cmdletContext.Priority != null)
            {
                request.Priority = cmdletContext.Priority.Value;
            }
            
             // populate Report
            var requestReportIsNull = true;
            request.Report = new Amazon.S3Control.Model.JobReport();
            System.String requestReport_report_Bucket = null;
            if (cmdletContext.Report_Bucket != null)
            {
                requestReport_report_Bucket = cmdletContext.Report_Bucket;
            }
            if (requestReport_report_Bucket != null)
            {
                request.Report.Bucket = requestReport_report_Bucket;
                requestReportIsNull = false;
            }
            System.Boolean? requestReport_report_Enabled = null;
            if (cmdletContext.Report_Enabled != null)
            {
                requestReport_report_Enabled = cmdletContext.Report_Enabled.Value;
            }
            if (requestReport_report_Enabled != null)
            {
                request.Report.Enabled = requestReport_report_Enabled.Value;
                requestReportIsNull = false;
            }
            Amazon.S3Control.JobReportFormat requestReport_report_Format = null;
            if (cmdletContext.Report_Format != null)
            {
                requestReport_report_Format = cmdletContext.Report_Format;
            }
            if (requestReport_report_Format != null)
            {
                request.Report.Format = requestReport_report_Format;
                requestReportIsNull = false;
            }
            System.String requestReport_report_Prefix = null;
            if (cmdletContext.Report_Prefix != null)
            {
                requestReport_report_Prefix = cmdletContext.Report_Prefix;
            }
            if (requestReport_report_Prefix != null)
            {
                request.Report.Prefix = requestReport_report_Prefix;
                requestReportIsNull = false;
            }
            Amazon.S3Control.JobReportScope requestReport_report_ReportScope = null;
            if (cmdletContext.Report_ReportScope != null)
            {
                requestReport_report_ReportScope = cmdletContext.Report_ReportScope;
            }
            if (requestReport_report_ReportScope != null)
            {
                request.Report.ReportScope = requestReport_report_ReportScope;
                requestReportIsNull = false;
            }
             // determine if request.Report should be set to null
            if (requestReportIsNull)
            {
                request.Report = null;
            }
            if (cmdletContext.RoleArn != null)
            {
                request.RoleArn = cmdletContext.RoleArn;
            }
            if (cmdletContext.Tag != null)
            {
                request.Tags = cmdletContext.Tag;
            }
            
            CmdletOutput output;
            
            // issue call
            var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
            try
            {
                var response = CallAWSServiceOperation(client, request);
                object pipelineOutput = null;
                pipelineOutput = cmdletContext.Select(response, this);
                output = new CmdletOutput
                {
                    PipelineOutput = pipelineOutput,
                    ServiceResponse = response
                };
            }
            catch (Exception e)
            {
                output = new CmdletOutput { ErrorResponse = e };
            }
            
            return output;
        }