if (sourceDepth <= 0|| source.isNull(true)) {
values.get(i).putNull();
} else {
sourceDepth--;
Value valueTarget = values.get(i);
UnderlyingType underlyingType = TInstance.underlyingType(valueTarget.getType());
Class<?> expected = underlyingExpectedClasses.get(underlyingType);
if (source.decodeType() == expected) {
switch (underlyingType) {
case BOOL: valueTarget.putBool(source.decodeBoolean()); break;
case INT_8: valueTarget.putInt8((byte)source.decodeLong()); break;