diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index 980ef82..190c0ed 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -498,28 +498,24 @@
     // Get the max allowed stream ID, this should succeed.
     EXPECT_NE(nullptr,
               session_.GetOrCreateDynamicStream(
-                  QuicSessionPeer::v99_streamid_manager(
-                      dynamic_cast<QuicSession*>(&session_))
+                  QuicSessionPeer::v99_streamid_manager(&session_)
                       ->actual_max_allowed_incoming_bidirectional_stream_id()));
     EXPECT_NE(
         nullptr,
         session_.GetOrCreateDynamicStream(
-            QuicSessionPeer::v99_streamid_manager(
-                dynamic_cast<QuicSession*>(&session_))
+            QuicSessionPeer::v99_streamid_manager(&session_)
                 ->actual_max_allowed_incoming_unidirectional_stream_id()));
     EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1);
     // Get the (max allowed stream ID)++, this should fail.
     EXPECT_EQ(nullptr,
               session_.GetOrCreateDynamicStream(
-                  QuicSessionPeer::v99_streamid_manager(
-                      dynamic_cast<QuicSession*>(&session_))
+                  QuicSessionPeer::v99_streamid_manager(&session_)
                       ->actual_max_allowed_incoming_bidirectional_stream_id() +
                   IdDelta()));
     EXPECT_CALL(*connection_, CloseConnection(_, _, _)).Times(1);
     EXPECT_EQ(nullptr,
               session_.GetOrCreateDynamicStream(
-                  QuicSessionPeer::v99_streamid_manager(
-                      dynamic_cast<QuicSession*>(&session_))
+                  QuicSessionPeer::v99_streamid_manager(&session_)
                       ->actual_max_allowed_incoming_unidirectional_stream_id() +
                   IdDelta()));
   } else {
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 89757de..f227190 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -84,11 +84,7 @@
       debug_delegate_(nullptr),
       network_change_visitor_(nullptr),
       initial_congestion_window_(kInitialCongestionWindow),
-      loss_algorithm_(
-          unacked_packets_.use_uber_loss_algorithm()
-              ? dynamic_cast<LossDetectionInterface*>(&uber_loss_algorithm_)
-              : dynamic_cast<LossDetectionInterface*>(
-                    &general_loss_algorithm_)),
+      loss_algorithm_(GetInitialLossAlgorithm()),
       general_loss_algorithm_(loss_type),
       uber_loss_algorithm_(loss_type),
       consecutive_rto_count_(0),
@@ -120,6 +116,13 @@
   SetSendAlgorithm(congestion_control_type);
 }
 
+LossDetectionInterface* QuicSentPacketManager::GetInitialLossAlgorithm() {
+  if (unacked_packets_.use_uber_loss_algorithm()) {
+    return &uber_loss_algorithm_;
+  }
+  return &general_loss_algorithm_;
+}
+
 QuicSentPacketManager::~QuicSentPacketManager() {}
 
 void QuicSentPacketManager::SetFromConfig(const QuicConfig& config) {
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index c3c227e..c892126 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -502,6 +502,9 @@
   // Sets the initial RTT of the connection.
   void SetInitialRtt(QuicTime::Delta rtt);
 
+  // Should only be called from constructor.
+  LossDetectionInterface* GetInitialLossAlgorithm();
+
   // Called when handshake is confirmed to remove the retransmittable frames
   // from all packets of HANDSHAKE_DATA packet number space to ensure they don't
   // get retransmitted and will eventually be removed from unacked packets map.
