### Question:
Index implements Iterable<String> { public static <E extends Enum<E>> Index forLabels(Class<E> columns) { E[] enumValues = columns.getEnumConstants(); String[] labels = new String[enumValues.length]; for (int i = 0; i < enumValues.length; i++) { labels[i] = enumValues[i].name(); } return forLabels(labels); } protected  Index(String... labels); static Index forLabels(Class<E> columns); static Index forLabels(String... labels); static Index forLabels(Series<String> labels); static Index forLabelsDeduplicate(String... labels); @Override Iterator<String> iterator(); Index rename(UnaryOperator<String> renameFunction); Index rename(Map<String, String> oldToNewLabels); Index rename(String... newLabels); Index addLabels(String... extraLabels); Index selectPositions(IntSeries positions); Index selectPositions(int... positions); Index rangeOpenClosed(int fromInclusive, int toExclusive); Index selectLabels(String... labels); Index selectLabels(Predicate<String> includeCondition); Index dropLabels(String... labels); Index dropLabels(Predicate<String> labelCondition); String[] getLabels(); String getLabel(int pos); int size(); int position(String label); boolean hasLabel(String label); @Override boolean equals(Object obj); Index sample(int size); Index sample(int size, Random random); Series<String> toSeries(); @Override String toString();  }### Answer:
@Test public void testWithNames_Enum() { Index i = Index.forLabels(E1.class); IndexAsserts.expect(i, "a", "b", "c"); }