We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
AWS::ImageBuilder::* some wrong data types and attribut missing
In imagebuilder.py (2.6.1 release).

* In AWS::ImageBuilder::*
"Tags" are "json_checker" but should be dict
When encoded in the structure it becomes a string (validator.py, ligne 258,` json.dumps(prop)`) which is creating an issue with CloudFormation that expect a struct like : `"Tags" : {Key : Value, ...}`
* AWS::ImageBuilder::DistributionConfiguration::Distribution
"AmiDistributionConfiguration" is "json_checker" but should be dict.
For the same as above "Tags" 
* In AWS::ImageBuilder::Component
"Data" is missing. And should be "json_checker" in that case.
* In AWS::ImageBuilder::ImageRecipe::InstanceBlockDeviceMapping
"NoDevice" is boolean but should be a string


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `troposphere/imagebuilder.py`
Content:
```
1 # Copyright (c) 2020, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty
7 from .validators import (integer, boolean, json_checker,
8                          component_platforms, imagepipeline_status,
9                          schedule_pipelineexecutionstartcondition,
10                          ebsinstanceblockdevicespecification_volume_type)
11 
12 
13 class S3Logs(AWSProperty):
14     props = {
15         "S3BucketName": (basestring, False),
16         "S3KeyPrefix": (basestring, False),
17     }
18 
19 
20 class Logging(AWSProperty):
21     props = {
22         'S3Logs': (S3Logs, False),
23     }
24 
25 
26 class InfrastructureConfiguration(AWSObject):
27     resource_type = "AWS::ImageBuilder::InfrastructureConfiguration"
28 
29     props = {
30         'Description': (basestring, False),
31         'InstanceProfileName': (basestring, True),
32         'InstanceTypes': ([basestring], False),
33         'KeyPair': (basestring, False),
34         'Logging': (Logging, False),
35         'Name': (basestring, True),
36         'SecurityGroupIds': ([basestring], False),
37         'SnsTopicArn': (basestring, False),
38         'SubnetId': (basestring, False),
39         'Tags': (json_checker, False),
40         'TerminateInstanceOnFailure': (boolean, False)
41     }
42 
43 
44 class EbsInstanceBlockDeviceSpecification(AWSProperty):
45     props = {
46         'DeleteOnTermination': (boolean, False),
47         'Encrypted': (boolean, False),
48         'Iops': (integer, False),
49         'KmsKeyId': (basestring, False),
50         'SnapshotId': (basestring, False),
51         'VolumeSize': (integer, False),
52         'VolumeType': (ebsinstanceblockdevicespecification_volume_type, False),
53     }
54 
55 
56 class InstanceBlockDeviceMapping(AWSProperty):
57     props = {
58         'DeviceName': (basestring, False),
59         'Ebs': (EbsInstanceBlockDeviceSpecification, False),
60         'NoDevice': (boolean, False),
61         'VirtualName': (basestring, False),
62     }
63 
64 
65 class ComponentConfiguration(AWSProperty):
66     props = {
67         'ComponentArn': (basestring, False),
68     }
69 
70 
71 class ImageRecipe(AWSObject):
72     resource_type = "AWS::ImageBuilder::ImageRecipe"
73 
74     props = {
75         'BlockDeviceMappings': ([InstanceBlockDeviceMapping], False),
76         'Components': ([ComponentConfiguration], True),
77         'Description': (basestring, False),
78         'Name': (basestring, True),
79         'ParentImage': (basestring, True),
80         'Tags': (json_checker, False),
81         'Version': (basestring, True)
82     }
83 
84 
85 class ImageTestsConfiguration(AWSProperty):
86     props = {
87         'ImageTestsEnabled': (boolean, False),
88         'TimeoutMinutes': (integer, False),
89     }
90 
91 
92 class Schedule(AWSProperty):
93     props = {
94         'PipelineExecutionStartCondition': (schedule_pipelineexecutionstartcondition, False),  # NOQA
95         'ScheduleExpression': (basestring, False),
96     }
97 
98 
99 class ImagePipeline(AWSObject):
100     resource_type = "AWS::ImageBuilder::ImagePipeline"
101 
102     props = {
103         'Description': (basestring, False),
104         'DistributionConfigurationArn': (basestring, False),
105         'ImageRecipeArn': (basestring, True),
106         'ImageTestsConfiguration': (ImageTestsConfiguration, False),
107         'InfrastructureConfigurationArn': (basestring, True),
108         'Name': (basestring, True),
109         'Schedule': (Schedule, False),
110         'Status': (imagepipeline_status, False),
111         'Tags': (json_checker, False),
112     }
113 
114 
115 class Distribution(AWSProperty):
116     props = {
117         'AmiDistributionConfiguration': (json_checker, False),
118         'LicenseConfigurationArns': ([basestring], False),
119         'Region': (basestring, False),
120     }
121 
122 
123 class DistributionConfiguration(AWSObject):
124     resource_type = "AWS::ImageBuilder::DistributionConfiguration"
125 
126     props = {
127         'Description': (basestring, False),
128         'Distributions': ([Distribution], True),
129         'Name': (basestring, True),
130         'Tags': (json_checker, False),
131     }
132 
133 
134 class Component(AWSObject):
135     resource_type = "AWS::ImageBuilder::Component"
136 
137     props = {
138         'ChangeDescription': (basestring, False),
139         'Description': (basestring, False),
140         'KmsKeyId': (basestring, False),
141         'Name': (basestring, True),
142         'Platform': (component_platforms, True),
143         'Tags': (json_checker, False),
144         'Uri': (basestring, False),
145         'Version': (basestring, True),
146     }
147 
148 
149 class Image(AWSObject):
150     resource_type = "AWS::ImageBuilder::Image"
151 
152     props = {
153         'DistributionConfigurationArn': (basestring, False),
154         'ImageRecipeArn': (basestring, True),
155         'ImageTestsConfiguration': (ImageTestsConfiguration, True),
156         'InfrastructureConfigurationArn': (basestring, True),
157         'Tags': (json_checker, False),
158     }
159
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/troposphere/imagebuilder.py b/troposphere/imagebuilder.py
--- a/troposphere/imagebuilder.py
+++ b/troposphere/imagebuilder.py
@@ -4,8 +4,8 @@
 # See LICENSE file for full license.
 
 from . import AWSObject, AWSProperty
-from .validators import (integer, boolean, json_checker,
-                         component_platforms, imagepipeline_status,
+from .validators import (integer, boolean, component_platforms,
+                         imagepipeline_status,
                          schedule_pipelineexecutionstartcondition,
                          ebsinstanceblockdevicespecification_volume_type)
 
@@ -36,7 +36,7 @@
         'SecurityGroupIds': ([basestring], False),
         'SnsTopicArn': (basestring, False),
         'SubnetId': (basestring, False),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
         'TerminateInstanceOnFailure': (boolean, False)
     }
 
@@ -57,7 +57,7 @@
     props = {
         'DeviceName': (basestring, False),
         'Ebs': (EbsInstanceBlockDeviceSpecification, False),
-        'NoDevice': (boolean, False),
+        'NoDevice': (basestring, False),
         'VirtualName': (basestring, False),
     }
 
@@ -77,7 +77,7 @@
         'Description': (basestring, False),
         'Name': (basestring, True),
         'ParentImage': (basestring, True),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
         'Version': (basestring, True)
     }
 
@@ -108,13 +108,13 @@
         'Name': (basestring, True),
         'Schedule': (Schedule, False),
         'Status': (imagepipeline_status, False),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
     }
 
 
 class Distribution(AWSProperty):
     props = {
-        'AmiDistributionConfiguration': (json_checker, False),
+        'AmiDistributionConfiguration': (dict, False),
         'LicenseConfigurationArns': ([basestring], False),
         'Region': (basestring, False),
     }
@@ -127,7 +127,7 @@
         'Description': (basestring, False),
         'Distributions': ([Distribution], True),
         'Name': (basestring, True),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
     }
 
 
@@ -136,11 +136,12 @@
 
     props = {
         'ChangeDescription': (basestring, False),
+        'Data': (basestring, False),
         'Description': (basestring, False),
         'KmsKeyId': (basestring, False),
         'Name': (basestring, True),
         'Platform': (component_platforms, True),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
         'Uri': (basestring, False),
         'Version': (basestring, True),
     }
@@ -154,5 +155,5 @@
         'ImageRecipeArn': (basestring, True),
         'ImageTestsConfiguration': (ImageTestsConfiguration, True),
         'InfrastructureConfigurationArn': (basestring, True),
-        'Tags': (json_checker, False),
+        'Tags': (dict, False),
     }

{"golden_diff": "diff --git a/troposphere/imagebuilder.py b/troposphere/imagebuilder.py\n--- a/troposphere/imagebuilder.py\n+++ b/troposphere/imagebuilder.py\n@@ -4,8 +4,8 @@\n # See LICENSE file for full license.\n \n from . import AWSObject, AWSProperty\n-from .validators import (integer, boolean, json_checker,\n-                         component_platforms, imagepipeline_status,\n+from .validators import (integer, boolean, component_platforms,\n+                         imagepipeline_status,\n                          schedule_pipelineexecutionstartcondition,\n                          ebsinstanceblockdevicespecification_volume_type)\n \n@@ -36,7 +36,7 @@\n         'SecurityGroupIds': ([basestring], False),\n         'SnsTopicArn': (basestring, False),\n         'SubnetId': (basestring, False),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n         'TerminateInstanceOnFailure': (boolean, False)\n     }\n \n@@ -57,7 +57,7 @@\n     props = {\n         'DeviceName': (basestring, False),\n         'Ebs': (EbsInstanceBlockDeviceSpecification, False),\n-        'NoDevice': (boolean, False),\n+        'NoDevice': (basestring, False),\n         'VirtualName': (basestring, False),\n     }\n \n@@ -77,7 +77,7 @@\n         'Description': (basestring, False),\n         'Name': (basestring, True),\n         'ParentImage': (basestring, True),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n         'Version': (basestring, True)\n     }\n \n@@ -108,13 +108,13 @@\n         'Name': (basestring, True),\n         'Schedule': (Schedule, False),\n         'Status': (imagepipeline_status, False),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n     }\n \n \n class Distribution(AWSProperty):\n     props = {\n-        'AmiDistributionConfiguration': (json_checker, False),\n+        'AmiDistributionConfiguration': (dict, False),\n         'LicenseConfigurationArns': ([basestring], False),\n         'Region': (basestring, False),\n     }\n@@ -127,7 +127,7 @@\n         'Description': (basestring, False),\n         'Distributions': ([Distribution], True),\n         'Name': (basestring, True),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n     }\n \n \n@@ -136,11 +136,12 @@\n \n     props = {\n         'ChangeDescription': (basestring, False),\n+        'Data': (basestring, False),\n         'Description': (basestring, False),\n         'KmsKeyId': (basestring, False),\n         'Name': (basestring, True),\n         'Platform': (component_platforms, True),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n         'Uri': (basestring, False),\n         'Version': (basestring, True),\n     }\n@@ -154,5 +155,5 @@\n         'ImageRecipeArn': (basestring, True),\n         'ImageTestsConfiguration': (ImageTestsConfiguration, True),\n         'InfrastructureConfigurationArn': (basestring, True),\n-        'Tags': (json_checker, False),\n+        'Tags': (dict, False),\n     }\n", "issue": "AWS::ImageBuilder::* some wrong data types and attribut missing\nIn imagebuilder.py (2.6.1 release).\r\n\r\n* In AWS::ImageBuilder::*\r\n\"Tags\" are \"json_checker\" but should be dict\r\nWhen encoded in the structure it becomes a string (validator.py, ligne 258,` json.dumps(prop)`) which is creating an issue with CloudFormation that expect a struct like : `\"Tags\" : {Key : Value, ...}`\r\n* AWS::ImageBuilder::DistributionConfiguration::Distribution\r\n\"AmiDistributionConfiguration\" is \"json_checker\" but should be dict.\r\nFor the same as above \"Tags\" \r\n* In AWS::ImageBuilder::Component\r\n\"Data\" is missing. And should be \"json_checker\" in that case.\r\n* In AWS::ImageBuilder::ImageRecipe::InstanceBlockDeviceMapping\r\n\"NoDevice\" is boolean but should be a string\r\n\n", "before_files": [{"content": "# Copyright (c) 2020, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import (integer, boolean, json_checker,\n                         component_platforms, imagepipeline_status,\n                         schedule_pipelineexecutionstartcondition,\n                         ebsinstanceblockdevicespecification_volume_type)\n\n\nclass S3Logs(AWSProperty):\n    props = {\n        \"S3BucketName\": (basestring, False),\n        \"S3KeyPrefix\": (basestring, False),\n    }\n\n\nclass Logging(AWSProperty):\n    props = {\n        'S3Logs': (S3Logs, False),\n    }\n\n\nclass InfrastructureConfiguration(AWSObject):\n    resource_type = \"AWS::ImageBuilder::InfrastructureConfiguration\"\n\n    props = {\n        'Description': (basestring, False),\n        'InstanceProfileName': (basestring, True),\n        'InstanceTypes': ([basestring], False),\n        'KeyPair': (basestring, False),\n        'Logging': (Logging, False),\n        'Name': (basestring, True),\n        'SecurityGroupIds': ([basestring], False),\n        'SnsTopicArn': (basestring, False),\n        'SubnetId': (basestring, False),\n        'Tags': (json_checker, False),\n        'TerminateInstanceOnFailure': (boolean, False)\n    }\n\n\nclass EbsInstanceBlockDeviceSpecification(AWSProperty):\n    props = {\n        'DeleteOnTermination': (boolean, False),\n        'Encrypted': (boolean, False),\n        'Iops': (integer, False),\n        'KmsKeyId': (basestring, False),\n        'SnapshotId': (basestring, False),\n        'VolumeSize': (integer, False),\n        'VolumeType': (ebsinstanceblockdevicespecification_volume_type, False),\n    }\n\n\nclass InstanceBlockDeviceMapping(AWSProperty):\n    props = {\n        'DeviceName': (basestring, False),\n        'Ebs': (EbsInstanceBlockDeviceSpecification, False),\n        'NoDevice': (boolean, False),\n        'VirtualName': (basestring, False),\n    }\n\n\nclass ComponentConfiguration(AWSProperty):\n    props = {\n        'ComponentArn': (basestring, False),\n    }\n\n\nclass ImageRecipe(AWSObject):\n    resource_type = \"AWS::ImageBuilder::ImageRecipe\"\n\n    props = {\n        'BlockDeviceMappings': ([InstanceBlockDeviceMapping], False),\n        'Components': ([ComponentConfiguration], True),\n        'Description': (basestring, False),\n        'Name': (basestring, True),\n        'ParentImage': (basestring, True),\n        'Tags': (json_checker, False),\n        'Version': (basestring, True)\n    }\n\n\nclass ImageTestsConfiguration(AWSProperty):\n    props = {\n        'ImageTestsEnabled': (boolean, False),\n        'TimeoutMinutes': (integer, False),\n    }\n\n\nclass Schedule(AWSProperty):\n    props = {\n        'PipelineExecutionStartCondition': (schedule_pipelineexecutionstartcondition, False),  # NOQA\n        'ScheduleExpression': (basestring, False),\n    }\n\n\nclass ImagePipeline(AWSObject):\n    resource_type = \"AWS::ImageBuilder::ImagePipeline\"\n\n    props = {\n        'Description': (basestring, False),\n        'DistributionConfigurationArn': (basestring, False),\n        'ImageRecipeArn': (basestring, True),\n        'ImageTestsConfiguration': (ImageTestsConfiguration, False),\n        'InfrastructureConfigurationArn': (basestring, True),\n        'Name': (basestring, True),\n        'Schedule': (Schedule, False),\n        'Status': (imagepipeline_status, False),\n        'Tags': (json_checker, False),\n    }\n\n\nclass Distribution(AWSProperty):\n    props = {\n        'AmiDistributionConfiguration': (json_checker, False),\n        'LicenseConfigurationArns': ([basestring], False),\n        'Region': (basestring, False),\n    }\n\n\nclass DistributionConfiguration(AWSObject):\n    resource_type = \"AWS::ImageBuilder::DistributionConfiguration\"\n\n    props = {\n        'Description': (basestring, False),\n        'Distributions': ([Distribution], True),\n        'Name': (basestring, True),\n        'Tags': (json_checker, False),\n    }\n\n\nclass Component(AWSObject):\n    resource_type = \"AWS::ImageBuilder::Component\"\n\n    props = {\n        'ChangeDescription': (basestring, False),\n        'Description': (basestring, False),\n        'KmsKeyId': (basestring, False),\n        'Name': (basestring, True),\n        'Platform': (component_platforms, True),\n        'Tags': (json_checker, False),\n        'Uri': (basestring, False),\n        'Version': (basestring, True),\n    }\n\n\nclass Image(AWSObject):\n    resource_type = \"AWS::ImageBuilder::Image\"\n\n    props = {\n        'DistributionConfigurationArn': (basestring, False),\n        'ImageRecipeArn': (basestring, True),\n        'ImageTestsConfiguration': (ImageTestsConfiguration, True),\n        'InfrastructureConfigurationArn': (basestring, True),\n        'Tags': (json_checker, False),\n    }\n", "path": "troposphere/imagebuilder.py"}], "after_files": [{"content": "# Copyright (c) 2020, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import (integer, boolean, component_platforms,\n                         imagepipeline_status,\n                         schedule_pipelineexecutionstartcondition,\n                         ebsinstanceblockdevicespecification_volume_type)\n\n\nclass S3Logs(AWSProperty):\n    props = {\n        \"S3BucketName\": (basestring, False),\n        \"S3KeyPrefix\": (basestring, False),\n    }\n\n\nclass Logging(AWSProperty):\n    props = {\n        'S3Logs': (S3Logs, False),\n    }\n\n\nclass InfrastructureConfiguration(AWSObject):\n    resource_type = \"AWS::ImageBuilder::InfrastructureConfiguration\"\n\n    props = {\n        'Description': (basestring, False),\n        'InstanceProfileName': (basestring, True),\n        'InstanceTypes': ([basestring], False),\n        'KeyPair': (basestring, False),\n        'Logging': (Logging, False),\n        'Name': (basestring, True),\n        'SecurityGroupIds': ([basestring], False),\n        'SnsTopicArn': (basestring, False),\n        'SubnetId': (basestring, False),\n        'Tags': (dict, False),\n        'TerminateInstanceOnFailure': (boolean, False)\n    }\n\n\nclass EbsInstanceBlockDeviceSpecification(AWSProperty):\n    props = {\n        'DeleteOnTermination': (boolean, False),\n        'Encrypted': (boolean, False),\n        'Iops': (integer, False),\n        'KmsKeyId': (basestring, False),\n        'SnapshotId': (basestring, False),\n        'VolumeSize': (integer, False),\n        'VolumeType': (ebsinstanceblockdevicespecification_volume_type, False),\n    }\n\n\nclass InstanceBlockDeviceMapping(AWSProperty):\n    props = {\n        'DeviceName': (basestring, False),\n        'Ebs': (EbsInstanceBlockDeviceSpecification, False),\n        'NoDevice': (basestring, False),\n        'VirtualName': (basestring, False),\n    }\n\n\nclass ComponentConfiguration(AWSProperty):\n    props = {\n        'ComponentArn': (basestring, False),\n    }\n\n\nclass ImageRecipe(AWSObject):\n    resource_type = \"AWS::ImageBuilder::ImageRecipe\"\n\n    props = {\n        'BlockDeviceMappings': ([InstanceBlockDeviceMapping], False),\n        'Components': ([ComponentConfiguration], True),\n        'Description': (basestring, False),\n        'Name': (basestring, True),\n        'ParentImage': (basestring, True),\n        'Tags': (dict, False),\n        'Version': (basestring, True)\n    }\n\n\nclass ImageTestsConfiguration(AWSProperty):\n    props = {\n        'ImageTestsEnabled': (boolean, False),\n        'TimeoutMinutes': (integer, False),\n    }\n\n\nclass Schedule(AWSProperty):\n    props = {\n        'PipelineExecutionStartCondition': (schedule_pipelineexecutionstartcondition, False),  # NOQA\n        'ScheduleExpression': (basestring, False),\n    }\n\n\nclass ImagePipeline(AWSObject):\n    resource_type = \"AWS::ImageBuilder::ImagePipeline\"\n\n    props = {\n        'Description': (basestring, False),\n        'DistributionConfigurationArn': (basestring, False),\n        'ImageRecipeArn': (basestring, True),\n        'ImageTestsConfiguration': (ImageTestsConfiguration, False),\n        'InfrastructureConfigurationArn': (basestring, True),\n        'Name': (basestring, True),\n        'Schedule': (Schedule, False),\n        'Status': (imagepipeline_status, False),\n        'Tags': (dict, False),\n    }\n\n\nclass Distribution(AWSProperty):\n    props = {\n        'AmiDistributionConfiguration': (dict, False),\n        'LicenseConfigurationArns': ([basestring], False),\n        'Region': (basestring, False),\n    }\n\n\nclass DistributionConfiguration(AWSObject):\n    resource_type = \"AWS::ImageBuilder::DistributionConfiguration\"\n\n    props = {\n        'Description': (basestring, False),\n        'Distributions': ([Distribution], True),\n        'Name': (basestring, True),\n        'Tags': (dict, False),\n    }\n\n\nclass Component(AWSObject):\n    resource_type = \"AWS::ImageBuilder::Component\"\n\n    props = {\n        'ChangeDescription': (basestring, False),\n        'Data': (basestring, False),\n        'Description': (basestring, False),\n        'KmsKeyId': (basestring, False),\n        'Name': (basestring, True),\n        'Platform': (component_platforms, True),\n        'Tags': (dict, False),\n        'Uri': (basestring, False),\n        'Version': (basestring, True),\n    }\n\n\nclass Image(AWSObject):\n    resource_type = \"AWS::ImageBuilder::Image\"\n\n    props = {\n        'DistributionConfigurationArn': (basestring, False),\n        'ImageRecipeArn': (basestring, True),\n        'ImageTestsConfiguration': (ImageTestsConfiguration, True),\n        'InfrastructureConfigurationArn': (basestring, True),\n        'Tags': (dict, False),\n    }\n", "path": "troposphere/imagebuilder.py"}]}