If `listProtocols()` ultimately refers to https://wiki.openstack.org/wiki/Atlas-LB#List_Load_Balancing_Protocols then it would seem that the list might be dynamic for a particular installation, but it still bounded with HTTP, HTTPS and TCP being the maximum possible values.

Is the idea here that the user will run `listProtocols()` first and only use values from that set, so the call becomes effectively "self-limiting"? Because if not, an enum with `HTTP`, `HTTPS` and `TCP` would seem to be safer than allowing an arbitrary string.