internal override RamDiskReplicaTracker.RamDiskReplica DequeueNextReplicaToPersist
     ()
 {
     lock (this)
     {
         while (replicasNotPersisted.Count != 0)
         {
             RamDiskReplicaLruTracker.RamDiskReplicaLru ramDiskReplicaLru = replicasNotPersisted
                                                                            .Remove();
             IDictionary <long, RamDiskReplicaLruTracker.RamDiskReplicaLru> replicaMap = replicaMaps
                                                                                         [ramDiskReplicaLru.GetBlockPoolId()];
             if (replicaMap != null && replicaMap[ramDiskReplicaLru.GetBlockId()] != null)
             {
                 return(ramDiskReplicaLru);
             }
         }
         // The replica no longer exists, look for the next one.
         return(null);
     }
 }
 internal override RamDiskReplicaTracker.RamDiskReplica GetNextCandidateForEviction
     ()
 {
     lock (this)
     {
         IEnumerator <RamDiskReplicaLruTracker.RamDiskReplicaLru> it = replicasPersisted.Values
                                                                           ().GetEnumerator();
         while (it.HasNext())
         {
             RamDiskReplicaLruTracker.RamDiskReplicaLru ramDiskReplicaLru = it.Next();
             it.Remove();
             IDictionary <long, RamDiskReplicaLruTracker.RamDiskReplicaLru> replicaMap = replicaMaps
                                                                                         [ramDiskReplicaLru.GetBlockPoolId()];
             if (replicaMap != null && replicaMap[ramDiskReplicaLru.GetBlockId()] != null)
             {
                 return(ramDiskReplicaLru);
             }
         }
         // The replica no longer exists, look for the next one.
         return(null);
     }
 }