@SuppressWarnings("unchecked")
	public <P> Populator<P> getPopulator(final Class<P> clazz, final Path path) {
		if (clazz == null || clazz.equals(Object.class)) {
			return (Populator<P>)NullPopulator.INSTANCE;
		} else {
			final ClassTranslator<P> classTranslator = (ClassTranslator<P>)this.<P, FullEntity<?>>getTranslator(new TypeKey<>(clazz), this, path);
			return classTranslator.getPopulator();
		}
	}
@SuppressWarnings("unchecked")
	public <P> Populator<P> getPopulator(final Class<P> clazz, final Path path) {
		if (clazz == null || clazz.equals(Object.class)) {
			return (Populator<P>)NullPopulator.INSTANCE;
		} else {
			final ClassTranslator<P> classTranslator = (ClassTranslator<P>)this.<P, FullEntity<?>>getTranslator(new TypeKey<>(clazz), this, path);
			return classTranslator.getPopulator();
		}
	}
@ SuppressWarnings ( "unchecked" ) public < P > Populator < P > getPopulator ( final Class < P > clazz , final Path path ) { if ( clazz == null || clazz . equals ( Object . class ) ) { return ( Populator < P > ) NullPopulator . INSTANCE ; } else { final ClassTranslator < P > classTranslator = ( ClassTranslator < P > ) this . < P , FullEntity < ? > > getTranslator ( new TypeKey <> ( clazz ) , this , path ) ; return classTranslator . getPopulator ( ) ; } }
Get the populator for the specified class. This requires looking up the
translator for that class and then getting the populator from it.

@param clazz is the class we want a populator for.
Get the populator for the specified class . This requires looking up the translator for that class and then getting the populator from it .