We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Security Hub tags not formatted correctly
Using the following code for a Security Hub resource results in tags that don't follow the structure of Security Hub Cloudformation:

```
hub = tpl.add_resource(Hub(
        title="ExampleHub",
        Tags=Tags(
            Tag("Test", "Test value")
        )
    ))
```

The resulting CF template is as follows:
```
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Security Hub configuration",
    "Resources": {
        "ExampleHub": {
            "Properties": {
                "Tags": [
                    {
                        "Key": "Test",
                        "Value": "Test value"
                    }
                ]
            },
            "Type": "AWS::SecurityHub::Hub"
        }
    }
}
```

Looking into the CF documentation for security hub, it looks as though the tag JSON is different:
```
{
    "Description": "Example Hub with Tags",
    "Resources": {
        "ExampleHubWithTags": {
            "Type": "AWS::SecurityHub::Hub",
            "Properties": {
                "Tags": {
                    "key1": "value1",
                    "key2": "value2"
                }
            }
        }
    }
}
```

Trying to apply the changeset from the generated TF template results in error `Property validation failure: [Value of property {/Tags} does not match type {Map}]`.

--- 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/securityhub.py`
Content:
```
1 # Copyright (c) 2012-2019, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 #
6 # *** Do not modify - this file is autogenerated ***
7 # Resource specification version: 4.1.0
8 
9 
10 from . import AWSObject
11 from troposphere import Tags
12 
13 
14 class Hub(AWSObject):
15     resource_type = "AWS::SecurityHub::Hub"
16 
17     props = {
18         'Tags': (Tags, False),
19     }
20
```
--- 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/securityhub.py b/troposphere/securityhub.py
--- a/troposphere/securityhub.py
+++ b/troposphere/securityhub.py
@@ -8,12 +8,12 @@
 
 
 from . import AWSObject
-from troposphere import Tags
+from .validators import json_checker
 
 
 class Hub(AWSObject):
     resource_type = "AWS::SecurityHub::Hub"
 
     props = {
-        'Tags': (Tags, False),
+        'Tags': (json_checker, False),
     }

{"golden_diff": "diff --git a/troposphere/securityhub.py b/troposphere/securityhub.py\n--- a/troposphere/securityhub.py\n+++ b/troposphere/securityhub.py\n@@ -8,12 +8,12 @@\n \n \n from . import AWSObject\n-from troposphere import Tags\n+from .validators import json_checker\n \n \n class Hub(AWSObject):\n     resource_type = \"AWS::SecurityHub::Hub\"\n \n     props = {\n-        'Tags': (Tags, False),\n+        'Tags': (json_checker, False),\n     }\n", "issue": "Security Hub tags not formatted correctly\nUsing the following code for a Security Hub resource results in tags that don't follow the structure of Security Hub Cloudformation:\r\n\r\n```\r\nhub = tpl.add_resource(Hub(\r\n        title=\"ExampleHub\",\r\n        Tags=Tags(\r\n            Tag(\"Test\", \"Test value\")\r\n        )\r\n    ))\r\n```\r\n\r\nThe resulting CF template is as follows:\r\n```\r\n    \"AWSTemplateFormatVersion\": \"2010-09-09\",\r\n    \"Description\": \"Security Hub configuration\",\r\n    \"Resources\": {\r\n        \"ExampleHub\": {\r\n            \"Properties\": {\r\n                \"Tags\": [\r\n                    {\r\n                        \"Key\": \"Test\",\r\n                        \"Value\": \"Test value\"\r\n                    }\r\n                ]\r\n            },\r\n            \"Type\": \"AWS::SecurityHub::Hub\"\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nLooking into the CF documentation for security hub, it looks as though the tag JSON is different:\r\n```\r\n{\r\n    \"Description\": \"Example Hub with Tags\",\r\n    \"Resources\": {\r\n        \"ExampleHubWithTags\": {\r\n            \"Type\": \"AWS::SecurityHub::Hub\",\r\n            \"Properties\": {\r\n                \"Tags\": {\r\n                    \"key1\": \"value1\",\r\n                    \"key2\": \"value2\"\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nTrying to apply the changeset from the generated TF template results in error `Property validation failure: [Value of property {/Tags} does not match type {Map}]`.\n", "before_files": [{"content": "# Copyright (c) 2012-2019, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n#\n# *** Do not modify - this file is autogenerated ***\n# Resource specification version: 4.1.0\n\n\nfrom . import AWSObject\nfrom troposphere import Tags\n\n\nclass Hub(AWSObject):\n    resource_type = \"AWS::SecurityHub::Hub\"\n\n    props = {\n        'Tags': (Tags, False),\n    }\n", "path": "troposphere/securityhub.py"}], "after_files": [{"content": "# Copyright (c) 2012-2019, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n#\n# *** Do not modify - this file is autogenerated ***\n# Resource specification version: 4.1.0\n\n\nfrom . import AWSObject\nfrom .validators import json_checker\n\n\nclass Hub(AWSObject):\n    resource_type = \"AWS::SecurityHub::Hub\"\n\n    props = {\n        'Tags': (json_checker, False),\n    }\n", "path": "troposphere/securityhub.py"}]}