### Question:
TableIdentifier { public TableIdentifier toLowerCase() { String[] newLevels = Arrays.stream(namespace().levels()) .map(String::toLowerCase) .toArray(String[]::new); String newName = name().toLowerCase(); return TableIdentifier.of(Namespace.of(newLevels), newName); } private  TableIdentifier(Namespace namespace, String name); static TableIdentifier of(String... names); static TableIdentifier of(Namespace namespace, String name); static TableIdentifier parse(String identifier); boolean hasNamespace(); Namespace namespace(); String name(); TableIdentifier toLowerCase(); @Override boolean equals(Object other); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testToLowerCase() { Assert.assertEquals( TableIdentifier.of("Tbl").toLowerCase(), TableIdentifier.of("tbl")); Assert.assertEquals( TableIdentifier.of("dB", "TBL").toLowerCase(), TableIdentifier.of("db", "tbl")); Assert.assertEquals( TableIdentifier.of("Catalog", "dB", "TBL").toLowerCase(), TableIdentifier.of("catalog", "db", "tbl")); }