Tag { public static Tag valueOf(String tagName) { Validate.notNull(tagName); Tag tag = tags.get(tagName); if (tag == null) { tagName = tagName.trim().toLowerCase(); Validate.notEmpty(tagName); tag = tags.get(tagName); if (tag == null) { tag = new Tag(tagName); tag.isBlock = false; tag.canContainBlock = true; } } return tag; } private  Tag(String tagName); String getName(); static Tag valueOf(String tagName); boolean isBlock(); boolean formatAsBlock(); boolean canContainBlock(); boolean isInline(); boolean isData(); boolean isEmpty(); boolean isSelfClosing(); boolean isKnownTag(); static boolean isKnownTag(String tagName); boolean preserveWhitespace(); boolean isFormListed(); boolean isFormSubmittable(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test public void isCaseInsensitive() { Tag p1 = Tag.valueOf("P"); Tag p2 = Tag.valueOf("p"); assertEquals(p1, p2); }
@Test public void trims() { Tag p1 = Tag.valueOf("p"); Tag p2 = Tag.valueOf(" p "); assertEquals(p1, p2); }