diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h
index d65e360..0eecfc8 100644
--- a/quic/core/quic_session.h
+++ b/quic/core/quic_session.h
@@ -664,8 +664,6 @@
     return write_blocked_streams_.GetSpdyPriorityofStream(stream_id);
   }
 
-  StreamMap& stream_map() { return stream_map_; }
-
   size_t pending_streams_size() const { return pending_stream_map_.size(); }
 
   ClosedStreams* closed_streams() { return &closed_streams_; }
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc
index 16b7720..13b0a8d 100644
--- a/quic/core/quic_session_test.cc
+++ b/quic/core/quic_session_test.cc
@@ -19,7 +19,6 @@
 #include "net/third_party/quiche/src/quic/core/frames/quic_max_streams_frame.h"
 #include "net/third_party/quiche/src/quic/core/quic_crypto_stream.h"
 #include "net/third_party/quiche/src/quic/core/quic_data_writer.h"
-#include "net/third_party/quiche/src/quic/core/quic_error_codes.h"
 #include "net/third_party/quiche/src/quic/core/quic_packets.h"
 #include "net/third_party/quiche/src/quic/core/quic_stream.h"
 #include "net/third_party/quiche/src/quic/core/quic_utils.h"
@@ -387,7 +386,6 @@
   using QuicSession::closed_streams;
   using QuicSession::GetNextOutgoingBidirectionalStreamId;
   using QuicSession::GetNextOutgoingUnidirectionalStreamId;
-  using QuicSession::stream_map;
 
  private:
   StrictMock<TestCryptoStream> crypto_stream_;
@@ -2652,8 +2650,9 @@
   stream2->WriteOrBufferData(body, true, nullptr);
   EXPECT_TRUE(stream2->IsWaitingForAcks());
   // Verify stream2 is a zombie streams.
-  ASSERT_TRUE(QuicContainsKey(session_.stream_map(), stream2->id()));
-  auto* stream = session_.stream_map().find(stream2->id())->second.get();
+  auto& stream_map = QuicSessionPeer::stream_map(&session_);
+  ASSERT_TRUE(QuicContainsKey(stream_map, stream2->id()));
+  auto* stream = stream_map.find(stream2->id())->second.get();
   EXPECT_TRUE(stream->IsZombie());
 
   QuicStreamFrame frame(stream2->id(), true, 0, 100);
@@ -2700,8 +2699,9 @@
   std::string body(100, '.');
   stream4->WriteOrBufferData(body, false, nullptr);
   stream4->WriteOrBufferData(body, true, nullptr);
-  ASSERT_TRUE(QuicContainsKey(session_.stream_map(), stream4->id()));
-  auto* stream = session_.stream_map().find(stream4->id())->second.get();
+  auto& stream_map = QuicSessionPeer::stream_map(&session_);
+  ASSERT_TRUE(QuicContainsKey(stream_map, stream4->id()));
+  auto* stream = stream_map.find(stream4->id())->second.get();
   EXPECT_TRUE(stream->IsZombie());
 }
 
diff --git a/quic/test_tools/quic_session_peer.cc b/quic/test_tools/quic_session_peer.cc
index a57840e..4b6ffb2 100644
--- a/quic/test_tools/quic_session_peer.cc
+++ b/quic/test_tools/quic_session_peer.cc
@@ -127,7 +127,7 @@
 
 // static
 QuicSession::StreamMap& QuicSessionPeer::stream_map(QuicSession* session) {
-  return session->stream_map();
+  return session->stream_map_;
 }
 
 // static
@@ -149,7 +149,7 @@
 
 // static
 bool QuicSessionPeer::IsStreamCreated(QuicSession* session, QuicStreamId id) {
-  return QuicContainsKey(session->stream_map(), id);
+  return QuicContainsKey(session->stream_map_, id);
 }
 
 // static
diff --git a/quic/test_tools/quic_spdy_session_peer.cc b/quic/test_tools/quic_spdy_session_peer.cc
index 4730ef9..e8dbf71 100644
--- a/quic/test_tools/quic_spdy_session_peer.cc
+++ b/quic/test_tools/quic_spdy_session_peer.cc
@@ -7,6 +7,7 @@
 #include "net/third_party/quiche/src/quic/core/http/quic_spdy_session.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_receive_stream.h"
 #include "net/third_party/quiche/src/quic/core/quic_utils.h"
+#include "net/third_party/quiche/src/quic/test_tools/quic_session_peer.h"
 
 namespace quic {
 namespace test {
@@ -21,7 +22,7 @@
 void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session,
                                            QuicHeadersStream* headers_stream) {
   DCHECK(!VersionUsesHttp3(session->transport_version()));
-  for (auto& it : session->stream_map()) {
+  for (auto& it : QuicSessionPeer::stream_map(session)) {
     if (it.first ==
         QuicUtils::GetHeadersStreamId(session->transport_version())) {
       it.second.reset(headers_stream);
