diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index a07e11b..bc53af5 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -823,7 +823,7 @@
   }
 
   public InstructionIterator instructionIterator() {
-    return new IRCodeInstructionsIterator(this);
+    return new IRCodeInstructionListIterator(this);
   }
 
   public List<BasicBlock> computeNormalExitBlocks() {
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
similarity index 61%
rename from src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java
rename to src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
index 21bb7e9..c7f8414 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
@@ -4,23 +4,70 @@
 
 package com.android.tools.r8.ir.code;
 
+import com.android.tools.r8.errors.Unimplemented;
+import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppView;
+import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.utils.InternalOptions;
 import java.util.ListIterator;
 import java.util.NoSuchElementException;
+import java.util.Set;
 
-public class IRCodeInstructionsIterator implements InstructionIterator {
+public class IRCodeInstructionListIterator implements InstructionListIterator {
 
   private final ListIterator<BasicBlock> blockIterator;
   private InstructionListIterator instructionIterator;
 
   private IRMetadata metadata;
 
-  public IRCodeInstructionsIterator(IRCode code) {
+  public IRCodeInstructionListIterator(IRCode code) {
     blockIterator = code.listIterator();
     instructionIterator = blockIterator.next().listIterator();
   }
 
   @Override
-  public IRCodeInstructionsIterator recordChangesToMetadata(IRMetadata metadata) {
+  public Value insertConstNullInstruction(IRCode code, InternalOptions options) {
+    return instructionIterator.insertConstNullInstruction(code, options);
+  }
+
+  @Override
+  public Value insertConstIntInstruction(IRCode code, InternalOptions options, int value) {
+    return instructionIterator.insertConstIntInstruction(code, options, value);
+  }
+
+  @Override
+  public void replaceCurrentInstructionWithThrowNull(
+      AppView<? extends AppInfoWithSubtyping> appView,
+      IRCode code,
+      ListIterator<BasicBlock> blockIterator,
+      Set<BasicBlock> blocksToRemove,
+      Set<Value> affectedValues) {
+    throw new Unimplemented();
+  }
+
+  @Override
+  public BasicBlock split(IRCode code, ListIterator<BasicBlock> blockIterator) {
+    throw new Unimplemented();
+  }
+
+  @Override
+  public BasicBlock split(IRCode code, int instructions, ListIterator<BasicBlock> blockIterator) {
+    throw new Unimplemented();
+  }
+
+  @Override
+  public BasicBlock inlineInvoke(
+      AppView<?> appView,
+      IRCode code,
+      IRCode inlinee,
+      ListIterator<BasicBlock> blockIterator,
+      Set<BasicBlock> blocksToRemove,
+      DexType downcast) {
+    throw new Unimplemented();
+  }
+
+  @Override
+  public IRCodeInstructionListIterator recordChangesToMetadata(IRMetadata metadata) {
     this.metadata = metadata;
     return this;
   }
