boolean containsColumn(String columnName);
boolean containsColumnAll(Collection<String> columnNames);
void renameColumn(String columnName, String newColumnName);
void renameColumn(Map<String, String> oldNewNames);
void renameColumn(String columnName, Function<String, String> func);
<BUG>void renameColumn(Collection<String> columnNames, Function<String, String> func);
<T> T get(int rowIndex, int columnIndex);</BUG>
<T> T get(Class<T> targetClass, int rowIndex, int columnIndex);
void set(int rowIndex, int columnIndex, Object element);
boolean isNull(int rowIndex, int columnIndex);

boolean containsColumn(String columnName);
boolean containsColumnAll(Collection<String> columnNames);
void renameColumn(String columnName, String newColumnName);
void renameColumn(Map<String, String> oldNewNames);
void renameColumn(String columnName, Function<String, String> func);
void renameColumn(Collection<String> columnNames, Function<String, String> func);
void moveColumn(String columnName, int newPosition);
void moveColumn(Map<String, Integer> columnNameNewPositionMap);
<T> T get(int rowIndex, int columnIndex);
<T> T get(Class<T> targetClass, int rowIndex, int columnIndex);
void set(int rowIndex, int columnIndex, Object element);
boolean isNull(int rowIndex, int columnIndex);
