Could you explain me what this method does? You are creating a new object with this function because it is defined inside _insertAtDesiredPosition, could we move it outside and receive iconLst?

Furthermore, an icon object shouldn't move other icons in the list, it should ask to the page object caller I think IMHO