I agree with this comment.  I find it hard to follow what is going on in this code.  There is a lot of "serverholderList.something().something().something()" going on which makes it difficult to really understand what the code is trying to do without knowing exactly which objects you are getting back at each point.

I also don't see a method that is clearly the "driver" of the logic, so it's hard to get the high level idea of how this object is actually getting used.  This could just be because of the code review going in github order, but I'm not sure.  I also generally don't like the init() method, it makes me wonder if this class isn't mixing concerns, there might be good reasons for that mix, but I'd like to know that we've explored perhaps separating this logic out.