@Override
          public boolean value(TT e) {
            if (visited == null) visited = new java.util.HashSet<>();
            //noinspection unchecked
            return visited.add(((Function<TT, Object>)inner).fun(e));
          }
@Override
          public boolean value(TT e)