base.List[E:imm,mut,read]

imm .get(i: imm base.Nat): imm E,
read .get(i: imm base.Nat): read/imm E,
mut .get(i: imm base.Nat): E,
imm ==(eq: imm base.F[imm E,imm E,imm base.Bool], other: imm base.List[E]): imm base.Bool -> …,
read ==(eq: read base.F[read/imm E,read/imm E,imm base.Bool], other: read base.List[E]): imm base.Bool -> …,
mut ==(eq: read base.F[E,E,imm base.Bool], other: mut base.List[E]): imm base.Bool -> …,
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,
imm ==(eq: imm base.F[imm E,imm E,imm base.Bool], other: imm base.List[E]): imm base.Bool -> …,
read ==(eq: read base.F[read/imm E,read/imm E,imm base.Bool], other: read base.List[E]): imm base.Bool -> …,
mut ==(eq: read base.F[E,E,imm base.Bool], other: mut base.List[E]): imm base.Bool -> …,
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,