docs: func (s *S3CopyObjectOperation) Validate() error {
  	invalidParams := request.ErrInvalidParams{Context: "S3CopyObjectOperation"}
  	if s.RedirectLocation != nil && len(*s.RedirectLocation) < 1 {
  		invalidParams.Add(request.NewErrParamMinLen("RedirectLocation", 1))
  	}
  	if s.SSEAwsKmsKeyId != nil && len(*s.SSEAwsKmsKeyId) < 1 {
  		invalidParams.Add(request.NewErrParamMinLen("SSEAwsKmsKeyId", 1))
  	}
  	if s.TargetKeyPrefix != nil && len(*s.TargetKeyPrefix) < 1 {
  		invalidParams.Add(request.NewErrParamMinLen("TargetKeyPrefix", 1))
  	}
  	if s.TargetResource != nil && len(*s.TargetResource) < 1 {
  		invalidParams.Add(request.NewErrParamMinLen("TargetResource", 1))
  	}
  	if s.AccessControlGrants != nil {
  		for i, v := range s.AccessControlGrants {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlGrants", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  	if s.NewObjectMetadata != nil {
  		if err := s.NewObjectMetadata.Validate(); err != nil {
  			invalidParams.AddNested("NewObjectMetadata", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.NewObjectTagging != nil {
  		for i, v := range s.NewObjectTagging {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NewObjectTagging", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  
  	if invalidParams.Len() > 0 {
  		return invalidParams
  	}
  	return nil
  }