                       (= number :sing))
                (string/replace infinitive #"zar$" "c")
                stem)
-        
+
         last-stem-char-is-i (re-find #"ir$" infinitive)
         last-stem-char-is-e (re-find #"er$" infinitive)
         is-care-or-gare? (re-find #"[cg]ar$" infinitive)
         vosotros (if vosotros vosotros true)
         ustedes (if ustedes ustedes false)]
-    
+
     (cond
      (and (= person :1st) (= number :sing) ar-type)
      (str stem "é")
-     
+
      (and (= person :1st) (= number :sing) (or ir-type er-type))
      (str stem "í")
-     
+
      (and (= person :2nd) (= number :sing) ar-type (= usted false))
      (str stem "aste")
-     
+
      (and (= person :2nd) (= number :sing) (or ir-type er-type) (= usted false))
      (str stem "iste")
-     
+
      (and (= person :2nd) (= number :sing) ar-type (= usted true))
      (str stem "ó")
-     
+
      (and (= person :2nd) (= number :sing) (or ir-type er-type) (= usted true))
      (str stem "ió")
 

        ir-type (re-find #"ir$" infinitive)

        zar-type (re-find #"zar$" infinitive)
        
        ;; default stem: will be used except under certain conditions, as described in next check.
        stem (string/replace infinitive #"[iae]r$" "")
        
        stem (if (get-in word [:preterito-stem])
               (get-in word [:preterito-stem])
               stem)

     (str stem "en")

     ;; </third person plural present>

     ;; agreement is underspecified, but an infinitive form (the :espanol key) exists, so just return that infinitive form.
     (and (= (get-in word [:agr]) :top)
          (string? (get-in word [:espanol])))
