Scala 2
API Specification
This document is the API specification for Scala 2.

Class Summary
| `class` BitSet The class `BitSet` provides an immutable bitset view on an int array. Instances can conveniently be created from instances of Bit indices are between `0..(capacity-1)` inclusive.
`case` `private` | `class` GBLeaf [A, B]
`case` `private` | `class` GBNode [A, B]
`abstract` `protected` | `class` GBTree [A, B] `GBTree` is an internal class used by `Tree`.
`case` `private` | `class` INode [A, B] `INode` is an internal class used by `Tree`.
`case` `private` | `class` ITree [A, B] `ITree` is an internal class used by `Tree`.
`abstract` `protected` | `class` InsertTree [A, B]
| `class` ListMap [A, B] This class implements immutable maps using a list-based data structure. Instances of `ListMap` represent empty maps; they can be either created by calling the constructor directly, or by applying the function `ListMap.Empty`.
| `class` ListSet [A] This class implements immutable sets using a list-based data structure. Instances of `ListSet` represent empty sets; they can be either created by calling the constructor directly, or by applying the function `ListSet.Empty`.
| `class` Queue [A] `Queue` objects implement data structures that allow to insert and retrieve elements in a first-in-first-out (FIFO) manner.
| `class` Stack [A] This class implements immutable stacks using a list-based data structure. Instances of `Stack` represent empty stacks; they can be either created by calling the constructor directly, or by applying the function `Stack.Empty`.
`abstract` | `class` Tree [A, B] General Balanced Trees - highly efficient functional dictionaries. An efficient implementation of Prof. Arne Andersson's General Balanced Trees. These have no storage overhead compared to plain unbalanced binary trees, and their performance is in general better than AVL trees. This implementation does not balance the trees after deletions. Since deletions don't increase the height of a tree, this should be OK in most applications. A balance method is provided for those cases where rebalancing is needed. The tree consists of entries conatining a key with an order. When instanciating the tree an order for the keys has to be supplied.
| `class` TreeMap [A, B] This class implements immutable maps using a tree.
| `class` TreeSet [A] This class implements immutable sets using a tree.

Trait Summary
`abstract` | `trait` Map [A, B] This class extends the `Map` interface of collections that unambiguously map keys to values (i.e. a key is mapped to at least one value). This class defines the interface for functional map implementations relying on immutable data structures. Concrete map implementations have to provide functionality for the abstract methods in `scala.collection.Map` as well as for `factory`, `update`, and `-`.
`abstract` | `trait` Set [A] This class represents immutable sets. Concrete set implementations just have to provide functionality for the abstract methods in `scala.collection.Set` as well as for `+` and `-`. Note that abstract immutable.Set's are not covariant in their type parameter. This is because some subclasses cannot support the `+` method for arbitrary types.

Object Summary
| `object` ListMap
| `object` ListSet
| `object` Queue
| `object` Stack
| `object` TreeMap