Decodes properties from given map, assigns them to an object using serializer for reified type T and returns this object. String values are converted to respective primitive types using default conversion methods. T may contain properties of nullable types; they will be filled by non-null values from the map, if present.