A thorn cannot inherit from itself. Inheritance is associative and recursive, but not commutative. Being a friend of another implementation makes all that implementations protected variables available to your thorn. At least one thorn providing an implementation for each friend must be present at compile time. A thorn cannot be its own friend.
Friendship is associative and commutative.
Note that your thorn is also a friend of all your thorns friend's friends. The thorn's variables are collected into groups. This is not only for convenience, but for collecting like variables together. Storage assignment, communication assignment and ghostzone synchronization takes place for groups only. A group name is compulsory.