diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
index a2ffc0c3c5065f4013f4a7beb6d6736a80efc97b..a3f797007b1e17918ff40a7e84cc4d4598cb8aec 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
@@ -48,7 +48,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
               mBigramListPolicy(mBuffer), mShortcutListPolicy(mBuffer),
               mPtNodeReader(mBuffer.data(), mBuffer.size(), &mBigramListPolicy,
                       &mShortcutListPolicy),
-              mPtNodeArrayReader(mBuffer.data(), mBuffer.size()),
+              mPtNodeArrayReader(mBuffer),
               mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {}
 
     AK_FORCE_INLINE int getRootPosition() const {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp
index b46617d96f0f3a95ffd730de7e10236fc772cf5f..72ad1eb668944e5ce60b1349159f48eab90eb492 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp
@@ -22,16 +22,16 @@ namespace latinime {
 
 bool Ver2PtNodeArrayReader::readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
         int *const outPtNodeCount, int *const outFirstPtNodePos) const {
-    if (ptNodeArrayPos < 0 || ptNodeArrayPos >= mDictSize) {
+    if (ptNodeArrayPos < 0 || ptNodeArrayPos >= static_cast<int>(mBuffer.size())) {
         // Reading invalid position because of a bug or a broken dictionary.
-        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %d",
-                ptNodeArrayPos, mDictSize);
+        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %zd",
+                ptNodeArrayPos, mBuffer.size());
         ASSERT(false);
         return false;
     }
     int readingPos = ptNodeArrayPos;
     const int ptNodeCountInArray = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
-            mDictBuffer, &readingPos);
+            mBuffer.data(), &readingPos);
     *outPtNodeCount = ptNodeCountInArray;
     *outFirstPtNodePos = readingPos;
     return true;
@@ -39,10 +39,10 @@ bool Ver2PtNodeArrayReader::readPtNodeArrayInfoAndReturnIfValid(const int ptNode
 
 bool Ver2PtNodeArrayReader::readForwardLinkAndReturnIfValid(const int forwordLinkPos,
         int *const outNextPtNodeArrayPos) const {
-    if (forwordLinkPos < 0 || forwordLinkPos >= mDictSize) {
+    if (forwordLinkPos < 0 || forwordLinkPos >=  static_cast<int>(mBuffer.size())) {
         // Reading invalid position because of bug or broken dictionary.
-        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %d",
-                forwordLinkPos, mDictSize);
+        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %zd",
+                forwordLinkPos, mBuffer.size());
         ASSERT(false);
         return false;
     }
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h
index 548272148b15e712b45595f7e026986796827b3d..548f36bf3843ab2e5ebc2bb2c74624b3db33e363 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h
@@ -21,13 +21,13 @@
 
 #include "defines.h"
 #include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h"
+#include "utils/byte_array_view.h"
 
 namespace latinime {
 
 class Ver2PtNodeArrayReader : public PtNodeArrayReader {
  public:
-    Ver2PtNodeArrayReader(const uint8_t *const dictBuffer, const int dictSize)
-            : mDictBuffer(dictBuffer), mDictSize(dictSize) {};
+    Ver2PtNodeArrayReader(const ReadOnlyByteArrayView buffer) : mBuffer(buffer) {};
 
     virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
             int *const outPtNodeCount, int *const outFirstPtNodePos) const;
@@ -37,8 +37,7 @@ class Ver2PtNodeArrayReader : public PtNodeArrayReader {
  private:
     DISALLOW_COPY_AND_ASSIGN(Ver2PtNodeArrayReader);
 
-    const uint8_t *const mDictBuffer;
-    const int mDictSize;
+    const ReadOnlyByteArrayView mBuffer;
 };
 } // namespace latinime
 #endif /* LATINIME_VER2_PT_NODE_ARRAY_READER_H */