One workaround is using ```type:array``` with:
```puppet
if is_array($server_git_branch_map) {
    $real_server_git_branch_map = hash($server_git_branch_map)
} else {
    validate_hash($server_git_branch_map)
    $real_server_git_branch_map = $server_git_branch_map
}
```

That would introduce a weird API though.