diff --git a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
index 879343a..1ea976b 100644
--- a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
+++ b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp
@@ -17,31 +17,24 @@
 
 ByteStream::ByteStream() {}
 
-ByteStream::ByteStream(MutableArrayRef<uint8_t> Bytes) { initialize(Bytes); }
+ByteStream::ByteStream(MutableArrayRef<uint8_t> Data) : Data(Data) {}
 
-ByteStream::ByteStream(uint32_t Length) { initialize(Length); }
-
-ByteStream::~ByteStream() { reset(); }
+ByteStream::~ByteStream() {}
 
 void ByteStream::reset() {
   Ownership.reset();
   Data = MutableArrayRef<uint8_t>();
 }
 
-void ByteStream::initialize(MutableArrayRef<uint8_t> Bytes) {
-  reset();
-  Data = Bytes;
-}
-
-void ByteStream::initialize(uint32_t Length) {
+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::initialize(StreamReader &Reader, uint32_t Length) {
-  initialize(Length);
+Error ByteStream::load(StreamReader &Reader, uint32_t Length) {
+  load(Length);
   auto EC = Reader.readBytes(Data);
   if (EC)
     reset();
@@ -52,15 +45,15 @@
                             MutableArrayRef<uint8_t> Buffer) const {
   if (Data.size() < Buffer.size() + Offset)
     return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
-  ::memcpy(Buffer.data(), Data.data() + Offset, Buffer.size());
+  ::memcpy(Buffer.data() + Offset, Data.data(), Buffer.size());
   return Error::success();
 }
 
-Error ByteStream::getArrayRef(uint32_t Offset, ArrayRef<uint8_t> &Buffer,
-                              uint32_t Length) const {
-  if (Data.size() < Length + Offset)
+Error ByteStream::readBytes(uint32_t Offset, uint32_t Size,
+                            ArrayRef<uint8_t> &Buffer) const {
+  if (Data.size() < Buffer.size() + Offset)
     return make_error<CodeViewError>(cv_error_code::insufficient_buffer);
-  Buffer = Data.slice(Offset, Length);
+  Buffer = Data.slice(Offset, Size);
   return Error::success();
 }
 
