Esme Povirk (@madewokherd) commented about dlls/gdiplus/tests/image.c:
prop_item = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
status = GdipGetPropertyItem(image, prop_id[i], size, prop_item);
size -= sizeof(*prop_item);
expect(Ok, status);
ok(prop_item->value == prop_item + 1, "expected item->value %p, got %p\n",
prop_item + 1, prop_item->value);
ok(td[i].type == prop_item->type ||
broken(documented_type(td[i].type) == prop_item->type),
"expected type %lu, got %u\n", td[i].type, prop_item->type);
ok(td[i].id == prop_item->id, "expected id %#lx, got %#lx\n", td[i].id, prop_item->id);
ok(prop_item->length == size, "expected length %u, got %lu\n", size, prop_item->length);
ok(td[i].length == prop_item->length || broken(td[i].broken_length),
"expected length %lu, got %lu\n", td[i].length, prop_item->length);
ok(td[i].length == size || broken(td[i].broken_length),
"expected length %lu, got %u\n", td[i].length, size);
Wouldn't this be implied by the transitive property?