TODO [/] - In Progress [X] - Finished [~] - Needs to be reviewed [/] Documentation [/] Tests [X] Remove PUBLIC and PRIVATE [X] Extra Collections [X] Add MultiSet [X] Add MultiMap [X] Add IntervalHeap [/] Add SortedList [/] Add BiDiMap [/] Add functions [X] update {hashmap, treemap, multimap} [X] set {hashmap, treemap, multimap} [X] to_string {all} [X] iter_advance {all} (iterators) [X] iter_rewind {all} (iterators) [X] iter_go_to {all} (iterators) [ ] from_array {all} [ ] to_array {all} [X] equals {all} [X] copy_of {all} [X] resize {array based collections} [ ] Serialization [ ] save {all} [ ] load {all} [ ] serialize {all} [ ] deserialize {all} [ ] Callback utility [ ] Zip Iterators [ ] Statically Allocated Collections [ ] Deque [ ] HashMap [ ] HashSet [ ] Heap [ ] LinkedList [ ] List [~] Queue [~] Stack [ ] TreeMap [ ] TreeSet [ ] Dev Collections [~] Deque [ ] HashMap [ ] HashSet [ ] Heap [ ] LinkedList [ ] List [ ] Queue [ ] Stack [ ] TreeMap [ ] TreeSet [X] Utility [X] assert.h [X] foreach.h [X] log.h [X] test.h [X] timer.h [ ] Optimizations [ ] Hashtable insertion can avoid a call to impl_get_entry to check if a key already exists [ ] Use binary search to find optimum hashtable prime size inside impl_calculate_size