public int this [int index] { get { if (!owner.is_selection_available || index < 0 || index >= List.Count) throw new ArgumentOutOfRangeException ("index"); return (int) List [index]; } }