question: public static Table < URI , String , List < Volume > > groupVPlexVolumesByRG ( List < Volume > vplexVolumes , List < Volume > volumesNotInRG , List < Volume > volumesInRG , DbClient dbClient ) { Table < URI , String , List < Volume > > groupVolumes = HashBasedTable . create ( ) ; for ( Volume volume : vplexVolumes ) { Volume backedVol = VPlexUtil . getVPLEXBackendVolume ( volume , true , dbClient ) ; if ( backedVol != null ) { URI backStorage = backedVol . getStorageController ( ) ; String replicaGroup = backedVol . getReplicationGroupInstance ( ) ; if ( NullColumnValueGetter . isNotNullValue ( replicaGroup ) ) { List < Volume > volumeList = groupVolumes . get ( backStorage , replicaGroup ) ; if ( volumeList == null ) { volumeList = new ArrayList < Volume > ( ) ; groupVolumes . put ( backStorage , replicaGroup , volumeList ) ; } volumeList . add ( volume ) ; if ( volumesInRG != null ) { volumesInRG . add ( volume ) ; } } else { if ( volumesNotInRG != null ) { volumesNotInRG . add ( volume ) ; } } } } return groupVolumes ; }
target:  Groups VPLEX volumes into a Table indexed by: 1. The backend Storage Controller of the VPLEX backend volume  2. The backend replica group of the VPLEX backend volume 3. and a list of all VPLEX volumes that have backend volumes in that backend replica group Optional: Will also populate two lists dividing the volumes in an RG and not in an RG if those lists are passed in as not null.     