   ([^String s ^String prefix ignore-case]
    (if-not ignore-case
      (starts-with? s prefix)
-     (let [beg (.substring s 0 (.length prefix))]
+     (let [beg (substring s 0 (.length prefix))]
        (when (.equalsIgnoreCase beg prefix)
          s)))))
 

  ([^String s ^String suffix ignore-case]
   (if-not ignore-case
     (ends-with? s suffix)
     (let [end (.substring s (max 0 (- (.length s) (.length suffix))))]
       (when (.equalsIgnoreCase end suffix)
         s)))))


   :post [(string? %)]}
  (let [first-char (first s)
        start (if (upper-exists? first-char) (upper-case first-char) first-char)]
    (str start (lower-case (substring s 1)))))

(defn ^String upper-case?
  "Return s if s is all upper case.
