private void registerSubclass ( final ClassTranslator < P > translator , final TypeKey < ? super P > superclassTypeKey , final CreateContext ctx , final Path path ) { if ( superclassTypeKey . getTypeAsClass ( ) == Object . class ) return ; @ SuppressWarnings ( "unchecked" ) final ClassTranslator < ? super P > superTranslator = create ( ( TypeKey ) superclassTypeKey , ctx , path ) ; superTranslator . registerSubclass ( translator ) ; registerSubclass ( translator , new TypeKey <> ( superclassTypeKey . getTypeAsClass ( ) . getSuperclass ( ) ) , ctx , path ) ; }
Recursively register this subclass with all the superclass translators . This works because we cache translators uniquely in the factory .