# The collision the default key generator makes easy

countLetters(String) and countDigits(String) both write into cache "shared".

countLetters("a1b2") -> letters=2   (repository calls: letters=1 digits=0)
countDigits("a1b2")  -> letters=2   (repository calls: letters=1 digits=0)

countDigits never ran. It found the key "a1b2" already populated and
returned the answer to a different question.

  cache "shared":
    key a1b2                   [String]   ->  letters=2

--- no-argument methods collide even harder ---
currentBanner() -> banner-from-currentBanner
currentFooter() -> banner-from-currentBanner   <- both key on SimpleKey.EMPTY
  cache "noargs":
    key SimpleKey []           [SimpleKey]   ->  banner-from-currentBanner

--- the fix: put the method into the key ---
countLettersScoped("a1b2") -> letters=2
countDigitsScoped("a1b2")  -> digits=2
  cache "scoped":
    key digits:a1b2            [String]   ->  digits=2
    key letters:a1b2           [String]   ->  letters=2
