public function testThatCollectionCanBeKeyedByItemProperty()
 {
     $items = [["a" => "b"], ["a" => "b", "b" => "c"], ["c" => "d"], ["a" => "c"]];
     //Test keying by single property
     $keyed_by_property = CollectionUtility::keyByProperty($items, "a");
     $this->assertEquals(["b" => ["a" => "b", "b" => "c"], "c" => ["a" => "c"]], $keyed_by_property);
     //Test keying by multiple properties
     $keyed_by_property = CollectionUtility::keyByProperty($items, ["a", "b"]);
     $this->assertEquals(["b.c" => ["a" => "b", "b" => "c"]], $keyed_by_property);
     //Test meta response
     $meta = CollectionUtility::keyByProperty($items, "a", true);
     $this->assertEquals(["keyed" => ["b" => ["a" => "b", "b" => "c"], "c" => ["a" => "c"]], "overwritten" => [["a" => "b"]], "invalid" => [["c" => "d"]]], $meta);
 }