@Test
public void replaceTypeParameter2() throws Exception {

  String name = "java.util.function.Function<? super T, ? extends Stream<? extends R>>";
  Map<String, String> map = new HashMap<>();
  map.putIfAbsent("T", "java.lang.Integer");
  map.putIfAbsent("R", "java.lang.String");
  final String s = ClassNameUtils.replaceTypeParameter(name, map);
  assertEquals(
      "java.util.function.Function<? super java.lang.Integer, ? extends Stream<? extends java.lang.String>>",
      s);
}