Skip to content

List is not Serializable, which is confusing for users and causes lub-computation to infer a type of 250 lines #7402

@scabug

Description

@scabug

The issue is that Nil and :: implement Serializable by being a case class/object, but the sealed abstract class List does not.

This leads to huge types down the line:

List(List(), Vector())

... results in the following type:

List[scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def companion:
 scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq{def dropRight(n: Int): scala.collection.immutable.Seq[Any] with
 scala.collection.AbstractSeq[Any]; def takeRight(n: Int): scala.collection.immutable.Seq[Any] with
 scala.collection.AbstractSeq[Any]; def drop(n: Int): scala.collection.immutable.Seq[Any] with
 scala.collection.AbstractSeq[Any]; def take(n: Int): scala.collection.immutable.Seq[Any] with
 scala.collection.AbstractSeq[Any]; def slice(from: Int,until: Int): scala.collection.immutable.Seq[Any]
 with scala.collection.AbstractSeq[Any]}]; def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 companion: scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq]; def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def drop(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]
 {def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def splitAt(n: Int): (scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing], scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing])}; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 companion: scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq]; def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def drop(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]
 {def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def splitAt(n: Int): (scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing], scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing])}; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]{def companion:
 scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq]; def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def drop(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]
 {def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def splitAt(n: Int): (scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing], scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing])}; def take(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]{def companion:
 scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq]; def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def drop(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]
 {def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def splitAt(n: Int): (scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing], scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing])}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 companion: scala.collection.generic.GenericCompanion[scala.collection.immutable.Seq with
 scala.collection.AbstractSeq]; def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def drop(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]};
 def take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]
 {def dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def slice(from: Int,until: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}; def splitAt(n: Int): (scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing], scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing])}; def splitAt(n: Int):
 (scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]{def
 dropRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def takeRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def drop(n:
 Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 take(n: Int): scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing];
 def slice(from: Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]}, scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]{def dropRight(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def
 takeRight(n: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]; def drop(n: Int): scala.collection.immutable.Seq[Nothing]
 with scala.collection.AbstractSeq[Nothing]; def take(n: Int):
 scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing]; def slice(from:
 Int,until: Int): scala.collection.immutable.Seq[Nothing] with
 scala.collection.AbstractSeq[Nothing]})}]

Making List implement Serializable:

List[scala.collection.immutable.Seq[Nothing] with scala.collection.AbstractSeq[Nothing] with java.io.Serializable]

While we are all aware of the issues around Serializable, I think in this case it is perfectly sound and safe to make List serializable:

  • List is not an interface, it is the base type of an ADT. Common behavior of its members should be reflected in the base type.
  • List is sealed, there is no chance of an user providing a new non-serializable subtype of List.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions