local m = {}
function m:eachField(source, key, callback)
if source.value then
self:eachField(source.value, key, callback)
end
end
function m:eachValue(source, callback)
if source.value then
self:eachValue(source.value, callback)
end
end
function m:getValue(source)
return source.value and self:getValue(source.value) or source
end
return m