diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 60da1a0..bfadd2c 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.4.68";
+  public static final String LABEL = "1.4.69";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index a27f4b0..5fa6d1c 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -1338,7 +1338,7 @@
     }
 
     private boolean isOptionalArgumentGiven() {
-      return !eof() && !hasNextChar('-');
+      return !eof() && !hasNextChar('-') && !hasNextChar('@');
     }
 
     private boolean acceptChar(char c) {
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
index cac6dd3..2171cc4 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -2086,6 +2086,25 @@
     }
   }
 
+  @Test
+  public void parseOptionalArgumentsFollowedByArobaseInclude() throws Exception {
+    Path includeFile = writeTextToTempFile(
+        "-renamesourcefileattribute SRC"
+    );
+    Path proguardConfig = writeTextToTempFile(
+        "-printconfiguration",
+        "@" + includeFile.toAbsolutePath()
+    );
+    ProguardConfigurationParser parser =
+        new ProguardConfigurationParser(new DexItemFactory(), reporter);
+    parser.parse(proguardConfig);
+    verifyParserEndsCleanly();
+    ProguardConfiguration config = parser.getConfig();
+    assertTrue(config.isPrintConfiguration());
+    assertNull(config.getPrintConfigurationFile());
+    assertEquals("SRC", config.getRenameSourceFileAttribute());
+  }
+
   private void testFlagWithFilenames(
       String flag,
       List<String> values,
@@ -2101,7 +2120,7 @@
   }
 
   @Test
-  public void parseSingleFleNameOptions() {
+  public void parseSingleFileNameOptions() {
     List<String> fileNames = ImmutableList.of(
         "xxx",
         "xxx" + File.pathSeparatorChar + "xxx");
