### Question:
TableImpl implements Table { public boolean deepEquals(TableImpl<T> obj) { if (obj == null) { return false; } return !(this.store != obj.store && (this.store == null || !this.store.deepEquals(obj.store))); } TableImpl(Class<T> elementType, boolean indexed);  TableImpl(GraphStore graphStore, Class<T> elementType, boolean indexed); @Override Column addColumn(String id, Class type); @Override Column addColumn(String id, Class type, Origin origin); @Override Column addColumn(String id, String title, Class type, Object defaultValue); @Override Column addColumn(String id, String title, Class type, Origin origin, Object defaultValue, boolean indexed); @Override int countColumns(); @Override Iterator<Column> iterator(); @Override void doBreak(); @Override Column[] toArray(); @Override List<Column> toList(); @Override Column getColumn(int index); @Override Column getColumn(String id); @Override boolean hasColumn(String id); @Override void removeColumn(Column column); @Override void removeColumn(String id); @Override TableObserver createTableObserver(boolean withDiff); @Override Class getElementClass(); @Override Graph getGraph(); void destroyTableObserver(TableObserver observer); boolean deepEquals(TableImpl<T> obj); int deepHashCode();  }### Answer:
@Test public void testDeepEquals() { TableImpl<Node> table1 = new TableImpl<Node>(Node.class, false); table1.addColumn("Id", Integer.class); TableImpl<Node> table2 = new TableImpl<Node>(Node.class, false); table2.addColumn("Id", Integer.class); Assert.assertTrue(table1.deepEquals(table2)); }