src/main/java/com/googlecode/objectify/impl/translate/ClassTranslatorFactory.java
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);
	}
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.