// Code generated by smithy-go-codegen DO NOT EDIT.

package s3

import (
	
	
	
	smithy 
	
)

type validateOpAbortMultipartUpload struct {
}

func (*validateOpAbortMultipartUpload) () string {
	return "OperationInputValidation"
}

func ( *validateOpAbortMultipartUpload) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*AbortMultipartUploadInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpAbortMultipartUploadInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpCompleteMultipartUpload struct {
}

func (*validateOpCompleteMultipartUpload) () string {
	return "OperationInputValidation"
}

func ( *validateOpCompleteMultipartUpload) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*CompleteMultipartUploadInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpCompleteMultipartUploadInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpCopyObject struct {
}

func (*validateOpCopyObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpCopyObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*CopyObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpCopyObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpCreateBucket struct {
}

func (*validateOpCreateBucket) () string {
	return "OperationInputValidation"
}

func ( *validateOpCreateBucket) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*CreateBucketInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpCreateBucketInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpCreateMultipartUpload struct {
}

func (*validateOpCreateMultipartUpload) () string {
	return "OperationInputValidation"
}

func ( *validateOpCreateMultipartUpload) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*CreateMultipartUploadInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpCreateMultipartUploadInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketAnalyticsConfiguration struct {
}

func (*validateOpDeleteBucketAnalyticsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketAnalyticsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketAnalyticsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketAnalyticsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketCors struct {
}

func (*validateOpDeleteBucketCors) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketCors) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketCorsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketCorsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketEncryption struct {
}

func (*validateOpDeleteBucketEncryption) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketEncryption) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketEncryptionInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketEncryptionInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucket struct {
}

func (*validateOpDeleteBucket) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucket) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketIntelligentTieringConfiguration struct {
}

func (*validateOpDeleteBucketIntelligentTieringConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketIntelligentTieringConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketIntelligentTieringConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketIntelligentTieringConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketInventoryConfiguration struct {
}

func (*validateOpDeleteBucketInventoryConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketInventoryConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketInventoryConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketInventoryConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketLifecycle struct {
}

func (*validateOpDeleteBucketLifecycle) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketLifecycle) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketLifecycleInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketLifecycleInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketMetricsConfiguration struct {
}

func (*validateOpDeleteBucketMetricsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketMetricsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketMetricsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketMetricsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketOwnershipControls struct {
}

func (*validateOpDeleteBucketOwnershipControls) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketOwnershipControls) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketOwnershipControlsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketOwnershipControlsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketPolicy struct {
}

func (*validateOpDeleteBucketPolicy) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketPolicy) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketPolicyInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketPolicyInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketReplication struct {
}

func (*validateOpDeleteBucketReplication) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketReplication) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketReplicationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketReplicationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketTagging struct {
}

func (*validateOpDeleteBucketTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteBucketWebsite struct {
}

func (*validateOpDeleteBucketWebsite) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteBucketWebsite) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteBucketWebsiteInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteBucketWebsiteInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteObject struct {
}

func (*validateOpDeleteObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteObjects struct {
}

func (*validateOpDeleteObjects) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteObjects) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteObjectsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteObjectsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeleteObjectTagging struct {
}

func (*validateOpDeleteObjectTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeleteObjectTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeleteObjectTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeleteObjectTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpDeletePublicAccessBlock struct {
}

func (*validateOpDeletePublicAccessBlock) () string {
	return "OperationInputValidation"
}

func ( *validateOpDeletePublicAccessBlock) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*DeletePublicAccessBlockInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpDeletePublicAccessBlockInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketAccelerateConfiguration struct {
}

func (*validateOpGetBucketAccelerateConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketAccelerateConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketAccelerateConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketAccelerateConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketAcl struct {
}

func (*validateOpGetBucketAcl) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketAcl) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketAclInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketAclInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketAnalyticsConfiguration struct {
}

func (*validateOpGetBucketAnalyticsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketAnalyticsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketAnalyticsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketAnalyticsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketCors struct {
}

func (*validateOpGetBucketCors) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketCors) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketCorsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketCorsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketEncryption struct {
}

func (*validateOpGetBucketEncryption) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketEncryption) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketEncryptionInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketEncryptionInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketIntelligentTieringConfiguration struct {
}

func (*validateOpGetBucketIntelligentTieringConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketIntelligentTieringConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketIntelligentTieringConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketIntelligentTieringConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketInventoryConfiguration struct {
}

func (*validateOpGetBucketInventoryConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketInventoryConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketInventoryConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketInventoryConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketLifecycleConfiguration struct {
}

func (*validateOpGetBucketLifecycleConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketLifecycleConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketLifecycleConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketLifecycleConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketLocation struct {
}

func (*validateOpGetBucketLocation) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketLocation) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketLocationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketLocationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketLogging struct {
}

func (*validateOpGetBucketLogging) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketLogging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketLoggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketLoggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketMetricsConfiguration struct {
}

func (*validateOpGetBucketMetricsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketMetricsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketMetricsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketMetricsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketNotificationConfiguration struct {
}

func (*validateOpGetBucketNotificationConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketNotificationConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketNotificationConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketNotificationConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketOwnershipControls struct {
}

func (*validateOpGetBucketOwnershipControls) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketOwnershipControls) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketOwnershipControlsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketOwnershipControlsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketPolicy struct {
}

func (*validateOpGetBucketPolicy) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketPolicy) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketPolicyInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketPolicyInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketPolicyStatus struct {
}

func (*validateOpGetBucketPolicyStatus) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketPolicyStatus) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketPolicyStatusInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketPolicyStatusInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketReplication struct {
}

func (*validateOpGetBucketReplication) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketReplication) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketReplicationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketReplicationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketRequestPayment struct {
}

func (*validateOpGetBucketRequestPayment) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketRequestPayment) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketRequestPaymentInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketRequestPaymentInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketTagging struct {
}

func (*validateOpGetBucketTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketVersioning struct {
}

func (*validateOpGetBucketVersioning) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketVersioning) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketVersioningInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketVersioningInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetBucketWebsite struct {
}

func (*validateOpGetBucketWebsite) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetBucketWebsite) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetBucketWebsiteInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetBucketWebsiteInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectAcl struct {
}

func (*validateOpGetObjectAcl) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectAcl) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectAclInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectAclInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectAttributes struct {
}

func (*validateOpGetObjectAttributes) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectAttributes) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectAttributesInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectAttributesInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObject struct {
}

func (*validateOpGetObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectLegalHold struct {
}

func (*validateOpGetObjectLegalHold) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectLegalHold) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectLegalHoldInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectLegalHoldInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectLockConfiguration struct {
}

func (*validateOpGetObjectLockConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectLockConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectLockConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectLockConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectRetention struct {
}

func (*validateOpGetObjectRetention) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectRetention) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectRetentionInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectRetentionInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectTagging struct {
}

func (*validateOpGetObjectTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetObjectTorrent struct {
}

func (*validateOpGetObjectTorrent) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetObjectTorrent) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetObjectTorrentInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetObjectTorrentInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpGetPublicAccessBlock struct {
}

func (*validateOpGetPublicAccessBlock) () string {
	return "OperationInputValidation"
}

func ( *validateOpGetPublicAccessBlock) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*GetPublicAccessBlockInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpGetPublicAccessBlockInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpHeadBucket struct {
}

func (*validateOpHeadBucket) () string {
	return "OperationInputValidation"
}

func ( *validateOpHeadBucket) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*HeadBucketInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpHeadBucketInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpHeadObject struct {
}

func (*validateOpHeadObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpHeadObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*HeadObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpHeadObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListBucketAnalyticsConfigurations struct {
}

func (*validateOpListBucketAnalyticsConfigurations) () string {
	return "OperationInputValidation"
}

func ( *validateOpListBucketAnalyticsConfigurations) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListBucketAnalyticsConfigurationsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListBucketAnalyticsConfigurationsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListBucketIntelligentTieringConfigurations struct {
}

func (*validateOpListBucketIntelligentTieringConfigurations) () string {
	return "OperationInputValidation"
}

func ( *validateOpListBucketIntelligentTieringConfigurations) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListBucketIntelligentTieringConfigurationsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListBucketIntelligentTieringConfigurationsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListBucketInventoryConfigurations struct {
}

func (*validateOpListBucketInventoryConfigurations) () string {
	return "OperationInputValidation"
}

func ( *validateOpListBucketInventoryConfigurations) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListBucketInventoryConfigurationsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListBucketInventoryConfigurationsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListBucketMetricsConfigurations struct {
}

func (*validateOpListBucketMetricsConfigurations) () string {
	return "OperationInputValidation"
}

func ( *validateOpListBucketMetricsConfigurations) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListBucketMetricsConfigurationsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListBucketMetricsConfigurationsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListMultipartUploads struct {
}

func (*validateOpListMultipartUploads) () string {
	return "OperationInputValidation"
}

func ( *validateOpListMultipartUploads) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListMultipartUploadsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListMultipartUploadsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListObjects struct {
}

func (*validateOpListObjects) () string {
	return "OperationInputValidation"
}

func ( *validateOpListObjects) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListObjectsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListObjectsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListObjectsV2 struct {
}

func (*validateOpListObjectsV2) () string {
	return "OperationInputValidation"
}

func ( *validateOpListObjectsV2) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListObjectsV2Input)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListObjectsV2Input();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListObjectVersions struct {
}

func (*validateOpListObjectVersions) () string {
	return "OperationInputValidation"
}

func ( *validateOpListObjectVersions) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListObjectVersionsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListObjectVersionsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpListParts struct {
}

func (*validateOpListParts) () string {
	return "OperationInputValidation"
}

func ( *validateOpListParts) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*ListPartsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpListPartsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketAccelerateConfiguration struct {
}

func (*validateOpPutBucketAccelerateConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketAccelerateConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketAccelerateConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketAccelerateConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketAcl struct {
}

func (*validateOpPutBucketAcl) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketAcl) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketAclInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketAclInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketAnalyticsConfiguration struct {
}

func (*validateOpPutBucketAnalyticsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketAnalyticsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketAnalyticsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketAnalyticsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketCors struct {
}

func (*validateOpPutBucketCors) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketCors) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketCorsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketCorsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketEncryption struct {
}

func (*validateOpPutBucketEncryption) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketEncryption) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketEncryptionInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketEncryptionInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketIntelligentTieringConfiguration struct {
}

func (*validateOpPutBucketIntelligentTieringConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketIntelligentTieringConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketIntelligentTieringConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketIntelligentTieringConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketInventoryConfiguration struct {
}

func (*validateOpPutBucketInventoryConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketInventoryConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketInventoryConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketInventoryConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketLifecycleConfiguration struct {
}

func (*validateOpPutBucketLifecycleConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketLifecycleConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketLifecycleConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketLifecycleConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketLogging struct {
}

func (*validateOpPutBucketLogging) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketLogging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketLoggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketLoggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketMetricsConfiguration struct {
}

func (*validateOpPutBucketMetricsConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketMetricsConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketMetricsConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketMetricsConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketNotificationConfiguration struct {
}

func (*validateOpPutBucketNotificationConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketNotificationConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketNotificationConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketNotificationConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketOwnershipControls struct {
}

func (*validateOpPutBucketOwnershipControls) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketOwnershipControls) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketOwnershipControlsInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketOwnershipControlsInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketPolicy struct {
}

func (*validateOpPutBucketPolicy) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketPolicy) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketPolicyInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketPolicyInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketReplication struct {
}

func (*validateOpPutBucketReplication) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketReplication) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketReplicationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketReplicationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketRequestPayment struct {
}

func (*validateOpPutBucketRequestPayment) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketRequestPayment) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketRequestPaymentInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketRequestPaymentInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketTagging struct {
}

func (*validateOpPutBucketTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketVersioning struct {
}

func (*validateOpPutBucketVersioning) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketVersioning) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketVersioningInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketVersioningInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutBucketWebsite struct {
}

func (*validateOpPutBucketWebsite) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutBucketWebsite) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutBucketWebsiteInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutBucketWebsiteInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObjectAcl struct {
}

func (*validateOpPutObjectAcl) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObjectAcl) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectAclInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectAclInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObject struct {
}

func (*validateOpPutObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObjectLegalHold struct {
}

func (*validateOpPutObjectLegalHold) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObjectLegalHold) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectLegalHoldInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectLegalHoldInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObjectLockConfiguration struct {
}

func (*validateOpPutObjectLockConfiguration) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObjectLockConfiguration) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectLockConfigurationInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectLockConfigurationInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObjectRetention struct {
}

func (*validateOpPutObjectRetention) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObjectRetention) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectRetentionInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectRetentionInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutObjectTagging struct {
}

func (*validateOpPutObjectTagging) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutObjectTagging) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutObjectTaggingInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutObjectTaggingInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpPutPublicAccessBlock struct {
}

func (*validateOpPutPublicAccessBlock) () string {
	return "OperationInputValidation"
}

func ( *validateOpPutPublicAccessBlock) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*PutPublicAccessBlockInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpPutPublicAccessBlockInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpRestoreObject struct {
}

func (*validateOpRestoreObject) () string {
	return "OperationInputValidation"
}

func ( *validateOpRestoreObject) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*RestoreObjectInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpRestoreObjectInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpSelectObjectContent struct {
}

func (*validateOpSelectObjectContent) () string {
	return "OperationInputValidation"
}

func ( *validateOpSelectObjectContent) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*SelectObjectContentInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpSelectObjectContentInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpUploadPartCopy struct {
}

func (*validateOpUploadPartCopy) () string {
	return "OperationInputValidation"
}

func ( *validateOpUploadPartCopy) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*UploadPartCopyInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpUploadPartCopyInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpUploadPart struct {
}

func (*validateOpUploadPart) () string {
	return "OperationInputValidation"
}

func ( *validateOpUploadPart) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*UploadPartInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpUploadPartInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

type validateOpWriteGetObjectResponse struct {
}

func (*validateOpWriteGetObjectResponse) () string {
	return "OperationInputValidation"
}

func ( *validateOpWriteGetObjectResponse) ( context.Context,  middleware.InitializeInput,  middleware.InitializeHandler) (
	 middleware.InitializeOutput,  middleware.Metadata,  error,
) {
	,  := .Parameters.(*WriteGetObjectResponseInput)
	if ! {
		return , , fmt.Errorf("unknown input parameters type %T", .Parameters)
	}
	if  := validateOpWriteGetObjectResponseInput();  != nil {
		return , , 
	}
	return .HandleInitialize(, )
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpAbortMultipartUpload{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpCompleteMultipartUpload{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpCopyObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpCreateBucket{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpCreateMultipartUpload{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketAnalyticsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketCors{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketEncryption{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucket{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketIntelligentTieringConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketInventoryConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketLifecycle{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketMetricsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketOwnershipControls{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketPolicy{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketReplication{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteBucketWebsite{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteObjects{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeleteObjectTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpDeletePublicAccessBlock{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketAccelerateConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketAcl{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketAnalyticsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketCors{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketEncryption{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketIntelligentTieringConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketInventoryConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketLifecycleConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketLocation{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketLogging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketMetricsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketNotificationConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketOwnershipControls{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketPolicy{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketPolicyStatus{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketReplication{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketRequestPayment{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketVersioning{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetBucketWebsite{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectAcl{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectAttributes{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectLegalHold{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectLockConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectRetention{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetObjectTorrent{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpGetPublicAccessBlock{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpHeadBucket{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpHeadObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListBucketAnalyticsConfigurations{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListBucketIntelligentTieringConfigurations{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListBucketInventoryConfigurations{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListBucketMetricsConfigurations{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListMultipartUploads{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListObjects{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListObjectsV2{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListObjectVersions{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpListParts{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketAccelerateConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketAcl{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketAnalyticsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketCors{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketEncryption{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketIntelligentTieringConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketInventoryConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketLifecycleConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketLogging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketMetricsConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketNotificationConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketOwnershipControls{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketPolicy{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketReplication{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketRequestPayment{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketVersioning{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutBucketWebsite{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObjectAcl{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObjectLegalHold{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObjectLockConfiguration{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObjectRetention{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutObjectTagging{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpPutPublicAccessBlock{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpRestoreObject{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpSelectObjectContent{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpUploadPartCopy{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpUploadPart{}, middleware.After)
}

func ( *middleware.Stack) error {
	return .Initialize.Add(&validateOpWriteGetObjectResponse{}, middleware.After)
}

func ( *types.AccessControlPolicy) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AccessControlPolicy"}
	if .Grants != nil {
		if  := validateGrants(.Grants);  != nil {
			.AddNested("Grants", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.AccessControlTranslation) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AccessControlTranslation"}
	if len(.Owner) == 0 {
		.Add(smithy.NewErrParamRequired("Owner"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.AnalyticsAndOperator) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AnalyticsAndOperator"}
	if .Tags != nil {
		if  := validateTagSet(.Tags);  != nil {
			.AddNested("Tags", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.AnalyticsConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AnalyticsConfiguration"}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Filter != nil {
		if  := validateAnalyticsFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if .StorageClassAnalysis == nil {
		.Add(smithy.NewErrParamRequired("StorageClassAnalysis"))
	} else if .StorageClassAnalysis != nil {
		if  := validateStorageClassAnalysis(.StorageClassAnalysis);  != nil {
			.AddNested("StorageClassAnalysis", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.AnalyticsExportDestination) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AnalyticsExportDestination"}
	if .S3BucketDestination == nil {
		.Add(smithy.NewErrParamRequired("S3BucketDestination"))
	} else if .S3BucketDestination != nil {
		if  := validateAnalyticsS3BucketDestination(.S3BucketDestination);  != nil {
			.AddNested("S3BucketDestination", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( types.AnalyticsFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AnalyticsFilter"}
	switch uv := .(type) {
	case *types.AnalyticsFilterMemberAnd:
		if  := validateAnalyticsAndOperator(&.Value);  != nil {
			.AddNested("[And]", .(smithy.InvalidParamsError))
		}

	case *types.AnalyticsFilterMemberTag:
		if  := validateTag(&.Value);  != nil {
			.AddNested("[Tag]", .(smithy.InvalidParamsError))
		}

	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.AnalyticsS3BucketDestination) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AnalyticsS3BucketDestination"}
	if len(.Format) == 0 {
		.Add(smithy.NewErrParamRequired("Format"))
	}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.BucketLifecycleConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "BucketLifecycleConfiguration"}
	if .Rules == nil {
		.Add(smithy.NewErrParamRequired("Rules"))
	} else if .Rules != nil {
		if  := validateLifecycleRules(.Rules);  != nil {
			.AddNested("Rules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.BucketLoggingStatus) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "BucketLoggingStatus"}
	if .LoggingEnabled != nil {
		if  := validateLoggingEnabled(.LoggingEnabled);  != nil {
			.AddNested("LoggingEnabled", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.CORSConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CORSConfiguration"}
	if .CORSRules == nil {
		.Add(smithy.NewErrParamRequired("CORSRules"))
	} else if .CORSRules != nil {
		if  := validateCORSRules(.CORSRules);  != nil {
			.AddNested("CORSRules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.CORSRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CORSRule"}
	if .AllowedMethods == nil {
		.Add(smithy.NewErrParamRequired("AllowedMethods"))
	}
	if .AllowedOrigins == nil {
		.Add(smithy.NewErrParamRequired("AllowedOrigins"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.CORSRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CORSRules"}
	for  := range  {
		if  := validateCORSRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Delete) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Delete"}
	if .Objects == nil {
		.Add(smithy.NewErrParamRequired("Objects"))
	} else if .Objects != nil {
		if  := validateObjectIdentifierList(.Objects);  != nil {
			.AddNested("Objects", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Destination) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Destination"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .AccessControlTranslation != nil {
		if  := validateAccessControlTranslation(.AccessControlTranslation);  != nil {
			.AddNested("AccessControlTranslation", .(smithy.InvalidParamsError))
		}
	}
	if .ReplicationTime != nil {
		if  := validateReplicationTime(.ReplicationTime);  != nil {
			.AddNested("ReplicationTime", .(smithy.InvalidParamsError))
		}
	}
	if .Metrics != nil {
		if  := validateMetrics(.Metrics);  != nil {
			.AddNested("Metrics", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Encryption) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Encryption"}
	if len(.EncryptionType) == 0 {
		.Add(smithy.NewErrParamRequired("EncryptionType"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ErrorDocument) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ErrorDocument"}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ExistingObjectReplication) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ExistingObjectReplication"}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.GlacierJobParameters) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GlacierJobParameters"}
	if len(.Tier) == 0 {
		.Add(smithy.NewErrParamRequired("Tier"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Grant) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Grant"}
	if .Grantee != nil {
		if  := validateGrantee(.Grantee);  != nil {
			.AddNested("Grantee", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Grantee) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Grantee"}
	if len(.Type) == 0 {
		.Add(smithy.NewErrParamRequired("Type"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.Grant) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Grants"}
	for  := range  {
		if  := validateGrant(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.IndexDocument) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "IndexDocument"}
	if .Suffix == nil {
		.Add(smithy.NewErrParamRequired("Suffix"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.IntelligentTieringAndOperator) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "IntelligentTieringAndOperator"}
	if .Tags != nil {
		if  := validateTagSet(.Tags);  != nil {
			.AddNested("Tags", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.IntelligentTieringConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "IntelligentTieringConfiguration"}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Filter != nil {
		if  := validateIntelligentTieringFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Tierings == nil {
		.Add(smithy.NewErrParamRequired("Tierings"))
	} else if .Tierings != nil {
		if  := validateTieringList(.Tierings);  != nil {
			.AddNested("Tierings", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.IntelligentTieringFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "IntelligentTieringFilter"}
	if .Tag != nil {
		if  := validateTag(.Tag);  != nil {
			.AddNested("Tag", .(smithy.InvalidParamsError))
		}
	}
	if .And != nil {
		if  := validateIntelligentTieringAndOperator(.And);  != nil {
			.AddNested("And", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventoryConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventoryConfiguration"}
	if .Destination == nil {
		.Add(smithy.NewErrParamRequired("Destination"))
	} else if .Destination != nil {
		if  := validateInventoryDestination(.Destination);  != nil {
			.AddNested("Destination", .(smithy.InvalidParamsError))
		}
	}
	if .Filter != nil {
		if  := validateInventoryFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if len(.IncludedObjectVersions) == 0 {
		.Add(smithy.NewErrParamRequired("IncludedObjectVersions"))
	}
	if .Schedule == nil {
		.Add(smithy.NewErrParamRequired("Schedule"))
	} else if .Schedule != nil {
		if  := validateInventorySchedule(.Schedule);  != nil {
			.AddNested("Schedule", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventoryDestination) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventoryDestination"}
	if .S3BucketDestination == nil {
		.Add(smithy.NewErrParamRequired("S3BucketDestination"))
	} else if .S3BucketDestination != nil {
		if  := validateInventoryS3BucketDestination(.S3BucketDestination);  != nil {
			.AddNested("S3BucketDestination", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventoryEncryption) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventoryEncryption"}
	if .SSEKMS != nil {
		if  := validateSSEKMS(.SSEKMS);  != nil {
			.AddNested("SSEKMS", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventoryFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventoryFilter"}
	if .Prefix == nil {
		.Add(smithy.NewErrParamRequired("Prefix"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventoryS3BucketDestination) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventoryS3BucketDestination"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if len(.Format) == 0 {
		.Add(smithy.NewErrParamRequired("Format"))
	}
	if .Encryption != nil {
		if  := validateInventoryEncryption(.Encryption);  != nil {
			.AddNested("Encryption", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.InventorySchedule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "InventorySchedule"}
	if len(.Frequency) == 0 {
		.Add(smithy.NewErrParamRequired("Frequency"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.LambdaFunctionConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LambdaFunctionConfiguration"}
	if .LambdaFunctionArn == nil {
		.Add(smithy.NewErrParamRequired("LambdaFunctionArn"))
	}
	if .Events == nil {
		.Add(smithy.NewErrParamRequired("Events"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.LambdaFunctionConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LambdaFunctionConfigurationList"}
	for  := range  {
		if  := validateLambdaFunctionConfiguration(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.LifecycleRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LifecycleRule"}
	if .Filter != nil {
		if  := validateLifecycleRuleFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.LifecycleRuleAndOperator) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LifecycleRuleAndOperator"}
	if .Tags != nil {
		if  := validateTagSet(.Tags);  != nil {
			.AddNested("Tags", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( types.LifecycleRuleFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LifecycleRuleFilter"}
	switch uv := .(type) {
	case *types.LifecycleRuleFilterMemberAnd:
		if  := validateLifecycleRuleAndOperator(&.Value);  != nil {
			.AddNested("[And]", .(smithy.InvalidParamsError))
		}

	case *types.LifecycleRuleFilterMemberTag:
		if  := validateTag(&.Value);  != nil {
			.AddNested("[Tag]", .(smithy.InvalidParamsError))
		}

	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.LifecycleRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LifecycleRules"}
	for  := range  {
		if  := validateLifecycleRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.LoggingEnabled) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "LoggingEnabled"}
	if .TargetBucket == nil {
		.Add(smithy.NewErrParamRequired("TargetBucket"))
	}
	if .TargetGrants != nil {
		if  := validateTargetGrants(.TargetGrants);  != nil {
			.AddNested("TargetGrants", .(smithy.InvalidParamsError))
		}
	}
	if .TargetPrefix == nil {
		.Add(smithy.NewErrParamRequired("TargetPrefix"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Metrics) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Metrics"}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.MetricsAndOperator) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "MetricsAndOperator"}
	if .Tags != nil {
		if  := validateTagSet(.Tags);  != nil {
			.AddNested("Tags", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.MetricsConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "MetricsConfiguration"}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Filter != nil {
		if  := validateMetricsFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( types.MetricsFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "MetricsFilter"}
	switch uv := .(type) {
	case *types.MetricsFilterMemberAnd:
		if  := validateMetricsAndOperator(&.Value);  != nil {
			.AddNested("[And]", .(smithy.InvalidParamsError))
		}

	case *types.MetricsFilterMemberTag:
		if  := validateTag(&.Value);  != nil {
			.AddNested("[Tag]", .(smithy.InvalidParamsError))
		}

	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.NotificationConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "NotificationConfiguration"}
	if .TopicConfigurations != nil {
		if  := validateTopicConfigurationList(.TopicConfigurations);  != nil {
			.AddNested("TopicConfigurations", .(smithy.InvalidParamsError))
		}
	}
	if .QueueConfigurations != nil {
		if  := validateQueueConfigurationList(.QueueConfigurations);  != nil {
			.AddNested("QueueConfigurations", .(smithy.InvalidParamsError))
		}
	}
	if .LambdaFunctionConfigurations != nil {
		if  := validateLambdaFunctionConfigurationList(.LambdaFunctionConfigurations);  != nil {
			.AddNested("LambdaFunctionConfigurations", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ObjectIdentifier) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ObjectIdentifier"}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.ObjectIdentifier) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ObjectIdentifierList"}
	for  := range  {
		if  := validateObjectIdentifier(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.OutputLocation) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "OutputLocation"}
	if .S3 != nil {
		if  := validateS3Location(.S3);  != nil {
			.AddNested("S3", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.OwnershipControls) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "OwnershipControls"}
	if .Rules == nil {
		.Add(smithy.NewErrParamRequired("Rules"))
	} else if .Rules != nil {
		if  := validateOwnershipControlsRules(.Rules);  != nil {
			.AddNested("Rules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.OwnershipControlsRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "OwnershipControlsRule"}
	if len(.ObjectOwnership) == 0 {
		.Add(smithy.NewErrParamRequired("ObjectOwnership"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.OwnershipControlsRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "OwnershipControlsRules"}
	for  := range  {
		if  := validateOwnershipControlsRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.QueueConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "QueueConfiguration"}
	if .QueueArn == nil {
		.Add(smithy.NewErrParamRequired("QueueArn"))
	}
	if .Events == nil {
		.Add(smithy.NewErrParamRequired("Events"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.QueueConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "QueueConfigurationList"}
	for  := range  {
		if  := validateQueueConfiguration(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.RedirectAllRequestsTo) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RedirectAllRequestsTo"}
	if .HostName == nil {
		.Add(smithy.NewErrParamRequired("HostName"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ReplicaModifications) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicaModifications"}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ReplicationConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationConfiguration"}
	if .Role == nil {
		.Add(smithy.NewErrParamRequired("Role"))
	}
	if .Rules == nil {
		.Add(smithy.NewErrParamRequired("Rules"))
	} else if .Rules != nil {
		if  := validateReplicationRules(.Rules);  != nil {
			.AddNested("Rules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ReplicationRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationRule"}
	if .Filter != nil {
		if  := validateReplicationRuleFilter(.Filter);  != nil {
			.AddNested("Filter", .(smithy.InvalidParamsError))
		}
	}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .SourceSelectionCriteria != nil {
		if  := validateSourceSelectionCriteria(.SourceSelectionCriteria);  != nil {
			.AddNested("SourceSelectionCriteria", .(smithy.InvalidParamsError))
		}
	}
	if .ExistingObjectReplication != nil {
		if  := validateExistingObjectReplication(.ExistingObjectReplication);  != nil {
			.AddNested("ExistingObjectReplication", .(smithy.InvalidParamsError))
		}
	}
	if .Destination == nil {
		.Add(smithy.NewErrParamRequired("Destination"))
	} else if .Destination != nil {
		if  := validateDestination(.Destination);  != nil {
			.AddNested("Destination", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ReplicationRuleAndOperator) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationRuleAndOperator"}
	if .Tags != nil {
		if  := validateTagSet(.Tags);  != nil {
			.AddNested("Tags", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( types.ReplicationRuleFilter) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationRuleFilter"}
	switch uv := .(type) {
	case *types.ReplicationRuleFilterMemberAnd:
		if  := validateReplicationRuleAndOperator(&.Value);  != nil {
			.AddNested("[And]", .(smithy.InvalidParamsError))
		}

	case *types.ReplicationRuleFilterMemberTag:
		if  := validateTag(&.Value);  != nil {
			.AddNested("[Tag]", .(smithy.InvalidParamsError))
		}

	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.ReplicationRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationRules"}
	for  := range  {
		if  := validateReplicationRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ReplicationTime) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ReplicationTime"}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Time == nil {
		.Add(smithy.NewErrParamRequired("Time"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.RequestPaymentConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RequestPaymentConfiguration"}
	if len(.Payer) == 0 {
		.Add(smithy.NewErrParamRequired("Payer"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.RestoreRequest) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RestoreRequest"}
	if .GlacierJobParameters != nil {
		if  := validateGlacierJobParameters(.GlacierJobParameters);  != nil {
			.AddNested("GlacierJobParameters", .(smithy.InvalidParamsError))
		}
	}
	if .SelectParameters != nil {
		if  := validateSelectParameters(.SelectParameters);  != nil {
			.AddNested("SelectParameters", .(smithy.InvalidParamsError))
		}
	}
	if .OutputLocation != nil {
		if  := validateOutputLocation(.OutputLocation);  != nil {
			.AddNested("OutputLocation", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.RoutingRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RoutingRule"}
	if .Redirect == nil {
		.Add(smithy.NewErrParamRequired("Redirect"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.RoutingRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RoutingRules"}
	for  := range  {
		if  := validateRoutingRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.S3Location) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "S3Location"}
	if .BucketName == nil {
		.Add(smithy.NewErrParamRequired("BucketName"))
	}
	if .Prefix == nil {
		.Add(smithy.NewErrParamRequired("Prefix"))
	}
	if .Encryption != nil {
		if  := validateEncryption(.Encryption);  != nil {
			.AddNested("Encryption", .(smithy.InvalidParamsError))
		}
	}
	if .AccessControlList != nil {
		if  := validateGrants(.AccessControlList);  != nil {
			.AddNested("AccessControlList", .(smithy.InvalidParamsError))
		}
	}
	if .Tagging != nil {
		if  := validateTagging(.Tagging);  != nil {
			.AddNested("Tagging", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.SelectParameters) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "SelectParameters"}
	if .InputSerialization == nil {
		.Add(smithy.NewErrParamRequired("InputSerialization"))
	}
	if len(.ExpressionType) == 0 {
		.Add(smithy.NewErrParamRequired("ExpressionType"))
	}
	if .Expression == nil {
		.Add(smithy.NewErrParamRequired("Expression"))
	}
	if .OutputSerialization == nil {
		.Add(smithy.NewErrParamRequired("OutputSerialization"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ServerSideEncryptionByDefault) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ServerSideEncryptionByDefault"}
	if len(.SSEAlgorithm) == 0 {
		.Add(smithy.NewErrParamRequired("SSEAlgorithm"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ServerSideEncryptionConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ServerSideEncryptionConfiguration"}
	if .Rules == nil {
		.Add(smithy.NewErrParamRequired("Rules"))
	} else if .Rules != nil {
		if  := validateServerSideEncryptionRules(.Rules);  != nil {
			.AddNested("Rules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.ServerSideEncryptionRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ServerSideEncryptionRule"}
	if .ApplyServerSideEncryptionByDefault != nil {
		if  := validateServerSideEncryptionByDefault(.ApplyServerSideEncryptionByDefault);  != nil {
			.AddNested("ApplyServerSideEncryptionByDefault", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.ServerSideEncryptionRule) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ServerSideEncryptionRules"}
	for  := range  {
		if  := validateServerSideEncryptionRule(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.SourceSelectionCriteria) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "SourceSelectionCriteria"}
	if .SseKmsEncryptedObjects != nil {
		if  := validateSseKmsEncryptedObjects(.SseKmsEncryptedObjects);  != nil {
			.AddNested("SseKmsEncryptedObjects", .(smithy.InvalidParamsError))
		}
	}
	if .ReplicaModifications != nil {
		if  := validateReplicaModifications(.ReplicaModifications);  != nil {
			.AddNested("ReplicaModifications", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.SSEKMS) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "SSEKMS"}
	if .KeyId == nil {
		.Add(smithy.NewErrParamRequired("KeyId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.SseKmsEncryptedObjects) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "SseKmsEncryptedObjects"}
	if len(.Status) == 0 {
		.Add(smithy.NewErrParamRequired("Status"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.StorageClassAnalysis) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "StorageClassAnalysis"}
	if .DataExport != nil {
		if  := validateStorageClassAnalysisDataExport(.DataExport);  != nil {
			.AddNested("DataExport", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.StorageClassAnalysisDataExport) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "StorageClassAnalysisDataExport"}
	if len(.OutputSchemaVersion) == 0 {
		.Add(smithy.NewErrParamRequired("OutputSchemaVersion"))
	}
	if .Destination == nil {
		.Add(smithy.NewErrParamRequired("Destination"))
	} else if .Destination != nil {
		if  := validateAnalyticsExportDestination(.Destination);  != nil {
			.AddNested("Destination", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Tag) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Tag"}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Value == nil {
		.Add(smithy.NewErrParamRequired("Value"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Tagging) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Tagging"}
	if .TagSet == nil {
		.Add(smithy.NewErrParamRequired("TagSet"))
	} else if .TagSet != nil {
		if  := validateTagSet(.TagSet);  != nil {
			.AddNested("TagSet", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.Tag) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TagSet"}
	for  := range  {
		if  := validateTag(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.TargetGrant) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TargetGrant"}
	if .Grantee != nil {
		if  := validateGrantee(.Grantee);  != nil {
			.AddNested("Grantee", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.TargetGrant) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TargetGrants"}
	for  := range  {
		if  := validateTargetGrant(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.Tiering) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "Tiering"}
	if len(.AccessTier) == 0 {
		.Add(smithy.NewErrParamRequired("AccessTier"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.Tiering) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TieringList"}
	for  := range  {
		if  := validateTiering(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.TopicConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TopicConfiguration"}
	if .TopicArn == nil {
		.Add(smithy.NewErrParamRequired("TopicArn"))
	}
	if .Events == nil {
		.Add(smithy.NewErrParamRequired("Events"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( []types.TopicConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "TopicConfigurationList"}
	for  := range  {
		if  := validateTopicConfiguration(&[]);  != nil {
			.AddNested(fmt.Sprintf("[%d]", ), .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *types.WebsiteConfiguration) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "WebsiteConfiguration"}
	if .ErrorDocument != nil {
		if  := validateErrorDocument(.ErrorDocument);  != nil {
			.AddNested("ErrorDocument", .(smithy.InvalidParamsError))
		}
	}
	if .IndexDocument != nil {
		if  := validateIndexDocument(.IndexDocument);  != nil {
			.AddNested("IndexDocument", .(smithy.InvalidParamsError))
		}
	}
	if .RedirectAllRequestsTo != nil {
		if  := validateRedirectAllRequestsTo(.RedirectAllRequestsTo);  != nil {
			.AddNested("RedirectAllRequestsTo", .(smithy.InvalidParamsError))
		}
	}
	if .RoutingRules != nil {
		if  := validateRoutingRules(.RoutingRules);  != nil {
			.AddNested("RoutingRules", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *AbortMultipartUploadInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "AbortMultipartUploadInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .UploadId == nil {
		.Add(smithy.NewErrParamRequired("UploadId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *CompleteMultipartUploadInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CompleteMultipartUploadInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .UploadId == nil {
		.Add(smithy.NewErrParamRequired("UploadId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *CopyObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CopyObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .CopySource == nil {
		.Add(smithy.NewErrParamRequired("CopySource"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *CreateBucketInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CreateBucketInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *CreateMultipartUploadInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "CreateMultipartUploadInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketAnalyticsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketAnalyticsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketCorsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketCorsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketEncryptionInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketEncryptionInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketIntelligentTieringConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketIntelligentTieringConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketInventoryConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketInventoryConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketLifecycleInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketLifecycleInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketMetricsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketMetricsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketOwnershipControlsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketOwnershipControlsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketPolicyInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketPolicyInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketReplicationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketReplicationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteBucketWebsiteInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteBucketWebsiteInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteObjectsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteObjectsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Delete == nil {
		.Add(smithy.NewErrParamRequired("Delete"))
	} else if .Delete != nil {
		if  := validateDelete(.Delete);  != nil {
			.AddNested("Delete", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeleteObjectTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeleteObjectTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *DeletePublicAccessBlockInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "DeletePublicAccessBlockInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketAccelerateConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketAccelerateConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketAclInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketAclInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketAnalyticsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketAnalyticsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketCorsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketCorsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketEncryptionInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketEncryptionInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketIntelligentTieringConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketIntelligentTieringConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketInventoryConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketInventoryConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketLifecycleConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketLifecycleConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketLocationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketLocationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketLoggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketLoggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketMetricsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketMetricsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketNotificationConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketNotificationConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketOwnershipControlsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketOwnershipControlsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketPolicyInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketPolicyInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketPolicyStatusInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketPolicyStatusInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketReplicationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketReplicationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketRequestPaymentInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketRequestPaymentInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketVersioningInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketVersioningInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetBucketWebsiteInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetBucketWebsiteInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectAclInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectAclInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectAttributesInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectAttributesInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .ObjectAttributes == nil {
		.Add(smithy.NewErrParamRequired("ObjectAttributes"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectLegalHoldInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectLegalHoldInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectLockConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectLockConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectRetentionInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectRetentionInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetObjectTorrentInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetObjectTorrentInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *GetPublicAccessBlockInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "GetPublicAccessBlockInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *HeadBucketInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "HeadBucketInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *HeadObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "HeadObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListBucketAnalyticsConfigurationsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListBucketAnalyticsConfigurationsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListBucketIntelligentTieringConfigurationsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListBucketIntelligentTieringConfigurationsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListBucketInventoryConfigurationsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListBucketInventoryConfigurationsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListBucketMetricsConfigurationsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListBucketMetricsConfigurationsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListMultipartUploadsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListMultipartUploadsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListObjectsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListObjectsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListObjectsV2Input) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListObjectsV2Input"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListObjectVersionsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListObjectVersionsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *ListPartsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "ListPartsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .UploadId == nil {
		.Add(smithy.NewErrParamRequired("UploadId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketAccelerateConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketAccelerateConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .AccelerateConfiguration == nil {
		.Add(smithy.NewErrParamRequired("AccelerateConfiguration"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketAclInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketAclInput"}
	if .AccessControlPolicy != nil {
		if  := validateAccessControlPolicy(.AccessControlPolicy);  != nil {
			.AddNested("AccessControlPolicy", .(smithy.InvalidParamsError))
		}
	}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketAnalyticsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketAnalyticsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .AnalyticsConfiguration == nil {
		.Add(smithy.NewErrParamRequired("AnalyticsConfiguration"))
	} else if .AnalyticsConfiguration != nil {
		if  := validateAnalyticsConfiguration(.AnalyticsConfiguration);  != nil {
			.AddNested("AnalyticsConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketCorsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketCorsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .CORSConfiguration == nil {
		.Add(smithy.NewErrParamRequired("CORSConfiguration"))
	} else if .CORSConfiguration != nil {
		if  := validateCORSConfiguration(.CORSConfiguration);  != nil {
			.AddNested("CORSConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketEncryptionInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketEncryptionInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .ServerSideEncryptionConfiguration == nil {
		.Add(smithy.NewErrParamRequired("ServerSideEncryptionConfiguration"))
	} else if .ServerSideEncryptionConfiguration != nil {
		if  := validateServerSideEncryptionConfiguration(.ServerSideEncryptionConfiguration);  != nil {
			.AddNested("ServerSideEncryptionConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketIntelligentTieringConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketIntelligentTieringConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .IntelligentTieringConfiguration == nil {
		.Add(smithy.NewErrParamRequired("IntelligentTieringConfiguration"))
	} else if .IntelligentTieringConfiguration != nil {
		if  := validateIntelligentTieringConfiguration(.IntelligentTieringConfiguration);  != nil {
			.AddNested("IntelligentTieringConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketInventoryConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketInventoryConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .InventoryConfiguration == nil {
		.Add(smithy.NewErrParamRequired("InventoryConfiguration"))
	} else if .InventoryConfiguration != nil {
		if  := validateInventoryConfiguration(.InventoryConfiguration);  != nil {
			.AddNested("InventoryConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketLifecycleConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketLifecycleConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .LifecycleConfiguration != nil {
		if  := validateBucketLifecycleConfiguration(.LifecycleConfiguration);  != nil {
			.AddNested("LifecycleConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketLoggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketLoggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .BucketLoggingStatus == nil {
		.Add(smithy.NewErrParamRequired("BucketLoggingStatus"))
	} else if .BucketLoggingStatus != nil {
		if  := validateBucketLoggingStatus(.BucketLoggingStatus);  != nil {
			.AddNested("BucketLoggingStatus", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketMetricsConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketMetricsConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Id == nil {
		.Add(smithy.NewErrParamRequired("Id"))
	}
	if .MetricsConfiguration == nil {
		.Add(smithy.NewErrParamRequired("MetricsConfiguration"))
	} else if .MetricsConfiguration != nil {
		if  := validateMetricsConfiguration(.MetricsConfiguration);  != nil {
			.AddNested("MetricsConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketNotificationConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketNotificationConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .NotificationConfiguration == nil {
		.Add(smithy.NewErrParamRequired("NotificationConfiguration"))
	} else if .NotificationConfiguration != nil {
		if  := validateNotificationConfiguration(.NotificationConfiguration);  != nil {
			.AddNested("NotificationConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketOwnershipControlsInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketOwnershipControlsInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .OwnershipControls == nil {
		.Add(smithy.NewErrParamRequired("OwnershipControls"))
	} else if .OwnershipControls != nil {
		if  := validateOwnershipControls(.OwnershipControls);  != nil {
			.AddNested("OwnershipControls", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketPolicyInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketPolicyInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Policy == nil {
		.Add(smithy.NewErrParamRequired("Policy"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketReplicationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketReplicationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .ReplicationConfiguration == nil {
		.Add(smithy.NewErrParamRequired("ReplicationConfiguration"))
	} else if .ReplicationConfiguration != nil {
		if  := validateReplicationConfiguration(.ReplicationConfiguration);  != nil {
			.AddNested("ReplicationConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketRequestPaymentInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketRequestPaymentInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .RequestPaymentConfiguration == nil {
		.Add(smithy.NewErrParamRequired("RequestPaymentConfiguration"))
	} else if .RequestPaymentConfiguration != nil {
		if  := validateRequestPaymentConfiguration(.RequestPaymentConfiguration);  != nil {
			.AddNested("RequestPaymentConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Tagging == nil {
		.Add(smithy.NewErrParamRequired("Tagging"))
	} else if .Tagging != nil {
		if  := validateTagging(.Tagging);  != nil {
			.AddNested("Tagging", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketVersioningInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketVersioningInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .VersioningConfiguration == nil {
		.Add(smithy.NewErrParamRequired("VersioningConfiguration"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutBucketWebsiteInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutBucketWebsiteInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .WebsiteConfiguration == nil {
		.Add(smithy.NewErrParamRequired("WebsiteConfiguration"))
	} else if .WebsiteConfiguration != nil {
		if  := validateWebsiteConfiguration(.WebsiteConfiguration);  != nil {
			.AddNested("WebsiteConfiguration", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectAclInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectAclInput"}
	if .AccessControlPolicy != nil {
		if  := validateAccessControlPolicy(.AccessControlPolicy);  != nil {
			.AddNested("AccessControlPolicy", .(smithy.InvalidParamsError))
		}
	}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectLegalHoldInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectLegalHoldInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectLockConfigurationInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectLockConfigurationInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectRetentionInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectRetentionInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutObjectTaggingInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutObjectTaggingInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Tagging == nil {
		.Add(smithy.NewErrParamRequired("Tagging"))
	} else if .Tagging != nil {
		if  := validateTagging(.Tagging);  != nil {
			.AddNested("Tagging", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *PutPublicAccessBlockInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "PutPublicAccessBlockInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .PublicAccessBlockConfiguration == nil {
		.Add(smithy.NewErrParamRequired("PublicAccessBlockConfiguration"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *RestoreObjectInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "RestoreObjectInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .RestoreRequest != nil {
		if  := validateRestoreRequest(.RestoreRequest);  != nil {
			.AddNested("RestoreRequest", .(smithy.InvalidParamsError))
		}
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *SelectObjectContentInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "SelectObjectContentInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .Expression == nil {
		.Add(smithy.NewErrParamRequired("Expression"))
	}
	if len(.ExpressionType) == 0 {
		.Add(smithy.NewErrParamRequired("ExpressionType"))
	}
	if .InputSerialization == nil {
		.Add(smithy.NewErrParamRequired("InputSerialization"))
	}
	if .OutputSerialization == nil {
		.Add(smithy.NewErrParamRequired("OutputSerialization"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *UploadPartCopyInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "UploadPartCopyInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .CopySource == nil {
		.Add(smithy.NewErrParamRequired("CopySource"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .UploadId == nil {
		.Add(smithy.NewErrParamRequired("UploadId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *UploadPartInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "UploadPartInput"}
	if .Bucket == nil {
		.Add(smithy.NewErrParamRequired("Bucket"))
	}
	if .Key == nil {
		.Add(smithy.NewErrParamRequired("Key"))
	}
	if .UploadId == nil {
		.Add(smithy.NewErrParamRequired("UploadId"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}

func ( *WriteGetObjectResponseInput) error {
	if  == nil {
		return nil
	}
	 := smithy.InvalidParamsError{Context: "WriteGetObjectResponseInput"}
	if .RequestRoute == nil {
		.Add(smithy.NewErrParamRequired("RequestRoute"))
	}
	if .RequestToken == nil {
		.Add(smithy.NewErrParamRequired("RequestToken"))
	}
	if .Len() > 0 {
		return 
	} else {
		return nil
	}
}