@Override
    public synchronized boolean matches(@NotNull String what) {
      final Boolean o = myCache.get(what);
      if (o != null) {
        return o;
      }
      final boolean b = myTarget.matches(what);
      myCache.put(what, b);
      return b;
    }
@Override
    public synchronized boolean matches(@NotNull String what)