### Question:
AddressTemplate implements Iterable<String> { @JsProperty String getTemplate() { return template; } private  AddressTemplate(String template); @JsIgnore static AddressTemplate of(StatementContext.Expression placeholder); @JsIgnore static AddressTemplate of(StatementContext.Expression placeholder, String template); @JsIgnore static AddressTemplate of(StatementContext.Expression placeholder1,
            StatementContext.Expression placeholder2); @JsIgnore static AddressTemplate of(StatementContext.Expression placeholder1, StatementContext.Expression placeholder2,
            String template); static AddressTemplate of(String template); @JsIgnore static AddressTemplate of(ResourceAddress address); @JsIgnore static AddressTemplate of(ResourceAddress address, Unresolver unresolver); @Override @JsIgnore boolean equals(Object o); @Override @JsIgnore int hashCode(); @Override String toString(); @JsProperty boolean isEmpty(); @JsProperty(name = "size") int size(); @Override @JsIgnore Iterator<String> iterator(); @JsIgnore AddressTemplate append(String template); @JsIgnore AddressTemplate append(AddressTemplate template); @JsIgnore AddressTemplate subTemplate(int fromIndex, int toIndex); @JsProperty AddressTemplate getParent(); @JsIgnore AddressTemplate replaceWildcards(String wildcard, String... wildcards); @JsProperty(name = "firstName") String firstName(); @JsProperty(name = "firstValue") String firstValue(); @JsProperty(name = "lastName") String lastName(); @JsProperty(name = "lastValue") String lastValue(); @JsIgnore boolean isOptional(); ResourceAddress resolve(StatementContext context, @EsParam("...string") String... wildcards); @JsMethod(name = "append") AddressTemplate jsAppend(@EsParam("string|AddressTemplate") Object address); static final AddressTemplate ROOT; static final String EQUALS; @JsIgnore static final String OPTIONAL; }### Answer:
@Test public void root() { AddressTemplate at = AddressTemplate.ROOT; assertTrue(at.getTemplate().length() == 0); }