class TableSchema {

  @Override
  public boolean equals(Object other) {
    if (this == other) {
      return true;
    }
    if (!(other instanceof TableSchema)) {
      return false;
    }
    TableSchema that = (TableSchema) other;
    return Objects.equals(columns, that.getColumns())
        && Objects.equals(maxRows, that.getMaxRows())
        && Objects.equals(isRoot, that.getIsRoot())
        && Objects.equals(indexes, that.getIndexes());
  }

  @JsonCreator public  TableSchema(
      @JsonProperty(value = "columns", required = true) Map<String,
          ColumnSchema> columns,
      @JsonProperty(value = "maxRows") Long maxRows,
      @JsonProperty(value = "isRoot") Boolean isRoot,
      @JsonProperty(value = "indexes") List<Set<String>> indexes
  );

}