diff --git a/nullability_verification/pointer_nullability_lattice.h b/nullability_verification/pointer_nullability_lattice.h
index 506e2c0..67e4d3a 100644
--- a/nullability_verification/pointer_nullability_lattice.h
+++ b/nullability_verification/pointer_nullability_lattice.h
@@ -7,6 +7,7 @@
 
 #include <ostream>
 
+#include "absl/container/flat_hash_map.h"
 #include "clang/Analysis/FlowSensitive/DataflowAnalysis.h"
 #include "clang/Analysis/FlowSensitive/DataflowLattice.h"
 
@@ -15,7 +16,38 @@
 namespace nullability {
 
 class PointerNullabilityLattice {
+ private:
+  // Owned by the PointerNullabilityAnalysis object, shared by all lattice
+  // elements within one analysis run.
+  absl::flat_hash_map<const Expr *, std::vector<NullabilityKind>>
+      *ExprToNullability;
+
  public:
+  PointerNullabilityLattice(
+      absl::flat_hash_map<const Expr *, std::vector<NullabilityKind>>
+          *ExprToNullability)
+      : ExprToNullability(ExprToNullability) {}
+
+  Optional<ArrayRef<NullabilityKind>> getExprNullability(const Expr *E) {
+    auto I = ExprToNullability->find(E);
+    return I == ExprToNullability->end()
+               ? std::nullopt
+               : Optional<ArrayRef<NullabilityKind>>(I->second);
+  }
+
+  // If the `ExprToNullability` map already contains an entry for `E`, does
+  // nothing. Otherwise, inserts a new entry with key `E` and value computed by
+  // the provided GetNullability.
+  void insertExprNullabilityIfAbsent(
+      const Expr *E,
+      const std::function<std::vector<NullabilityKind>()> &GetNullability) {
+    auto [Iterator, Inserted] =
+        ExprToNullability->insert({E, std::vector<NullabilityKind>()});
+    if (Inserted) {
+      Iterator->second = GetNullability();
+    }
+  }
+
   bool operator==(const PointerNullabilityLattice &Other) const { return true; }
 
   dataflow::LatticeJoinEffect join(const PointerNullabilityLattice &Other) {
