Because currently you can write something like:
```python
KwargInfo('capture', bool)
```
Which proclaims "this must be bool", but the default is then not valid.
# conversion if necessary). This allows mutable types to
# be used safely as default values
ifisinstance(info.types,ContainerTypeInfo):
assertisinstance(info.default,info.types.container),f'In function {name} default value of {info.name} is not a valid type, got {type(info.default)}, expected {info.types.container}[{info.types.contains}]'
foritemininfo.default:
assertisinstance(item,info.types.contains),f'In function {name} default value of {info.name}, container has invalid value of {item}, which is of type {type(item)}, but should be {info.types.contains}'
assertisinstance(info.default,info.types),f'In funcion {name} default value of {info.name} is not a valid type, got {type(info.default)} expected {info.types}'