For null: tempted to leave as null to distinguish between "this hasn't been set yet; you're calling it too early" and "definitely no protocols are enabled". Whether callers appreciate that I'm not sure!

Order: good point. It's not used to say which protocol is preferred (see `inferBrooklynAccessibleRootUrl`) so I'll change it to set.