diff --git a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
index 1ea976b..c0ac0b7 100644
--- a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
+++ b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
@@ -17,41 +17,13 @@
 
 ByteStream::ByteStream() {}
 
-ByteStream::ByteStream(MutableArrayRef<uint8_t> Data) : Data(Data) {}
+ByteStream::ByteStream(ArrayRef<uint8_t> Data) : Data(Data) {}
 
 ByteStream::~ByteStream() {}
 
-void ByteStream::reset() {
-  Ownership.reset();
-  Data = MutableArrayRef<uint8_t>();
-}
-
-void ByteStream::load(uint32_t Length) {
-  reset();
-  if (Length > 0)
-    Data = MutableArrayRef<uint8_t>(new uint8_t[Length], Length);
-  Ownership.reset(Data.data());
-}
-
-Error ByteStream::load(StreamReader &Reader, uint32_t Length) {
-  load(Length);
-  auto EC = Reader.readBytes(Data);
-  if (EC)
-    reset();
-  return EC;
-}
-
-Error ByteStream::readBytes(uint32_t Offset,
-                            MutableArrayRef<uint8_t> Buffer) const {
-  if (Data.size() < Buffer.size() + Offset)
-    return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
-  ::memcpy(Buffer.data() + Offset, Data.data(), Buffer.size());
-  return Error::success();
-}
-
 Error ByteStream::readBytes(uint32_t Offset, uint32_t Size,
                             ArrayRef<uint8_t> &Buffer) const {
-  if (Data.size() < Buffer.size() + Offset)
+  if (Data.size() < Size + Offset)
     return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
   Buffer = Data.slice(Offset, Size);
   return Error::success();
