### Question:
TagBuilder { public static <A> Tag<A> createTag(String name, Function<A, String> replacementFunction) { return new DependentTag<>(name, replacementFunction); } private  TagBuilder(); static Tag<A> createTag(String name, Function<A, String> replacementFunction); static Tag<A> createTag(String name, Supplier<String> replacementFunction);  }### Answer:
@Test public void shouldCreateNoArgsTag() { Supplier<String> supplier = () -> "hello"; Tag<String> tag = TagBuilder.createTag("hey", supplier); assertThat(tag, instanceOf(SimpleTag.class)); assertThat(tag.getValue(null), equalTo("hello")); }
@Test public void shouldCreateDependentTag() { Function<Double, String> function = d -> Double.toString(d + d/10); Tag<Double> tag = TagBuilder.createTag("%test", function); assertThat(tag, instanceOf(DependentTag.class)); assertThat(tag.getValue(24d), equalTo("26.4")); }