I wonder if we even need this kind of flexibility. I think it would also be fine to just allow the user to pass in a varargs of IpFilterRule and remove all of these methods and so also the CopyOnWriteArray. 

Why would a user want to add rules on the fly ? If so he/she could just replace the instance with a new IpFilterRuleHandler.