abstract class ItemOption<T> { T operator[](int i); operator[]=(int i, T v); }
ItemDefault<T>, ItemSome<T>