return fillFromImpl(impl, null);
}
protected S fillFromImpl(I impl, String[] fieldsToSkip) {
PojoUtils.copyProperties(this, impl, PojoUtils.FieldNaming.ORIGIN_HAS_UNDERSCORES, fieldsToSkip);
PojoUtils.copyProperties(this, impl, PojoUtils.FieldNaming.CONSISTENT, fieldsToSkip);  // TODO: make field names in the impl classes consistent and remove
<BUG>return (S)this;
</BUG>
}
public static Class<? extends Iced> getImplClass(Class<? extends Schema> clz) {
<BUG>Class<? extends Iced> impl_class = (Class<? extends Iced>)ReflectionUtils.findActualClassParameter(clz, 0);
if (null == impl_class)</BUG>
Log.warn("Failed to find an impl class for Schema: " + clz);

return fillFromImpl(impl, null);
}
protected S fillFromImpl(I impl, String[] fieldsToSkip) {
PojoUtils.copyProperties(this, impl, PojoUtils.FieldNaming.ORIGIN_HAS_UNDERSCORES, fieldsToSkip);
PojoUtils.copyProperties(this, impl, PojoUtils.FieldNaming.CONSISTENT, fieldsToSkip);  // TODO: make field names in the impl classes consistent and remove
return (S) this;
}
public static Class<? extends Iced> getImplClass(Class<? extends Schema> clz) {
Class<? extends Iced> impl_class = ReflectionUtils.findActualClassParameter(clz, 0);
if (null == impl_class)
Log.warn("Failed to find an impl class for Schema: " + clz);
