Since 3.0
The RowStateMap object implements Map<Object, RowState>, where the Object is the same data object used to populate the row in question. Because of this, it is necessary to implement custom hashCode() and equals() methods in the data object class, so that the object can be used effectively as a key to retrieve its corresponding Rowstate object across multiple requests.
See the ICEfaces Showcase Live Demo of this component, complete with source code.