diff --git a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingQueue.java b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingQueue.java
index d6e3d12..3c7b422 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingQueue.java
@@ -143,26 +143,21 @@
   }
 
   public void scheduleArtcCreation(GitReferenceUpdatedListener.Event event) {
-    scheduleArtcCreation(
-        event.getProjectName(),
-        event.getRefName().substring(RefNames.REFS_TAGS.length()),
-        TimeUtil.nowMs(),
-        false);
+    scheduleArtcCreation(event.getProjectName(), event.getRefName(), TimeUtil.nowMs(), false);
   }
 
   public void scheduleArtcCreation(TagResource resource, boolean force) {
     String tagRef = resource.getRef();
     scheduleArtcCreation(
-        resource.getName(),
-        tagRef.startsWith(RefNames.REFS_TAGS)
-            ? tagRef.substring(RefNames.REFS_TAGS.length())
-            : tagRef,
-        resource.getTagInfo().created.getTime(),
-        force);
+        resource.getName(), tagRef, resource.getTagInfo().created.getTime(), force);
   }
 
   public void scheduleArtcCreation(
-      String projectName, String tagName, Long creationTime, boolean force) {
+      String projectName, String tagRefOrName, Long creationTime, boolean force) {
+    String tagName =
+        tagRefOrName.startsWith(RefNames.REFS_TAGS)
+            ? tagRefOrName.substring(RefNames.REFS_TAGS.length())
+            : tagRefOrName;
     schedule(
         new EventParsingWorker(ARTC, projectName, tagName) {
 
