base.List[E]

imm .get(i: imm base.Nat): imm E,
read .get(i: imm base.Nat): read/imm E,
mut .get(i: imm base.Nat): E,
mut .addAll(other: mut base.List[E]): imm base.Void -> …,
imm .tryGet(i: imm base.Nat): mut base.Opt[imm E],
read .tryGet(i: imm base.Nat): mut base.Opt[read/imm E],
mut .tryGet(i: imm base.Nat): mut base.Opt[E],
imm .iter: mut base.iter.Iter[imm E] -> …,
read .iter: mut base.iter.Iter[read/imm E] -> …,
mut .iter: mut base.iter.Iter[E] -> …,
imm .flow: mut base.flows.Flow[imm E] -> …,
read .flow: mut base.flows.Flow[read/imm E] -> …,
mut .flow: mut base.flows.Flow[E] -> …,
read .isEmpty: imm base.Bool, // from base.Collection/0
mut .clear: imm base.Void,
read .size: imm base.Nat, // from base.Collection/0
mut +(e: E): mut base.List[E] -> …,
mut .add(e: E): imm base.Void,
imm .get(i: imm base.Nat): imm E,
read .get(i: imm base.Nat): read/imm E,
mut .get(i: imm base.Nat): E,
mut .addAll(other: mut base.List[E]): imm base.Void -> …,
imm .tryGet(i: imm base.Nat): mut base.Opt[imm E],
read .tryGet(i: imm base.Nat): mut base.Opt[read/imm E],
mut .tryGet(i: imm base.Nat): mut base.Opt[E],
imm .iter: mut base.iter.Iter[imm E] -> …,
read .iter: mut base.iter.Iter[read/imm E] -> …,
mut .iter: mut base.iter.Iter[E] -> …,
imm .flow: mut base.flows.Flow[imm E] -> …,
read .flow: mut base.flows.Flow[read/imm E] -> …,
mut .flow: mut base.flows.Flow[E] -> …,
read .isEmpty: imm base.Bool, // from base.Collection/0
mut .clear: imm base.Void,
read .size: imm base.Nat, // from base.Collection/0
mut +(e: E): mut base.List[E] -> …,
mut .add(e: E): imm base.Void,