In gitObject case, there are multiple types of objects and different structs for each type and the anonymous gitObject field promotes the functions Type, Id, Free for each class that embeds gitObject. Makes sense to have interface with anonymous field embeds, but remote seems to be more aligned with signature, index, odb, etc. which do not embed anonymous fields and don't use interfaces.