public IColumn diff(IColumn column) { IColumn columnDiff = new SuperColumn(column.name()); Collection<IColumn> columns = column.getSubColumns(); for (IColumn subColumn : columns) { IColumn columnInternal = columns_.get(subColumn.name()); if (columnInternal == null) { columnDiff.addColumn(subColumn.name(), subColumn); } else { IColumn subColumnDiff = columnInternal.diff(subColumn); if (subColumnDiff != null) { columnDiff.addColumn(subColumn.name(), subColumnDiff); } } } if (columnDiff.getSubColumns().size() != 0) return columnDiff; else return null; }