Fix for 2
Note: behavior of `__len__()` has changed: Before version 1.2.0, `__len__()` always returned the length of the underlying collection. Due to (undocumented) behavior of `list()` and `tuple()` which expects the `__len__()` method to only be available when size is known up front, `__len__()` will now through an error when the underlying collection does not have a known length. The `len()` method behavior is unchanged (i.e., it always returns the size).