Refactored GeometryCollection::factory()