@Test
    public void subtypes_are_tagged_as_inheriting_supertypes() {
        // music -> common
        assertTrue(Music.type.isA("common"));
        assertTrue(Music.type.inherits(Common.type));
        // ... but not common2
        assertFalse(Music.type.inherits(Common2.type));

        // music3 -> (music2 -> common), common2
        assertTrue(Music3.type.isA("common"));
        assertTrue(Music3.type.isA("common2"));
        assertTrue(Music3.type.isA("music2"));
        assertTrue(Music3.type.inherits(Common.type));
        assertTrue(Music3.type.inherits(Common2.type));
        assertTrue(Music3.type.inherits(Music2.type));
        // ... but not parent
        assertFalse(Music3.type.isA("parent"));
        assertFalse(Music3.type.inherits(Parent.type));

        // music4 -> music3 -> (music2 -> common), common2
        assertTrue(Music4.type.inherits(Common.type));
        assertTrue(Music4.type.inherits(Common2.type));
        assertTrue(Music4.type.inherits(Music2.type));
        assertTrue(Music4.type.inherits(Music3.type));
        // ... but not music
        assertFalse(Music4.type.inherits(Music.type));

        // parent has no explicit inheritance
        assertFalse(Parent.type.isA("common"));
    }
Packs the given doc to Book
@param d doc, never null
@return a Book object or null if input doc isn't a Book
documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java