code: public static Matcher getMatcher(String pattern, CharSequence input) {
          if (pattern == null) {
              throw new IllegalArgumentException("String 'pattern' must not be null");
          }
          input = new InterruptibleCharSequence(input);
          final Map<String,Matcher> matchers = TL_MATCHER_MAP.get();
          Matcher m = (Matcher)matchers.get(pattern);
          if(m == null) {
              m = PATTERNS.getUnchecked(pattern).matcher(input);
          } else {
              matchers.put(pattern,null);
              m.reset(input);
          }
          return m;
      }
docs: Get a matcher object for a precompiled regex pattern.
  
  This method tries to reuse Matcher objects for efficiency.
  It can hold for recycling one Matcher per pattern per thread.
  
  Matchers retrieved should be returned for reuse via the
  recycleMatcher() method, but no errors will occur if they
  are not.
  
  This method is a hotspot frequently accessed.
  
  @param pattern the string pattern to use
  @param input the character sequence the matcher should be using
  @return a matcher object loaded with the submitted character sequence