public Index(IMap map, ICollection<IColumn> columns, string name = null, bool isUnique = false) {
if (map == null) {
throw new ArgumentNullException("map");
}
if (columns == null) {
throw new ArgumentNullException("columns");
}
this.Map = map;
this.Columns = columns;
this.IsUnique = isUnique;
this.Name = !string.IsNullOrWhiteSpace(name) ? name : this.GenerateName();
}