return function (propertyNameCapital) local propertyNameLower = string.lower(propertyNameCapital) local mixin = {} mixin["get" .. propertyNameCapital] = function (self) assert(self[propertyNameLower] ~= nil) return self[propertyNameLower] end mixin["set" .. propertyNameCapital] = function (self, property) self[propertyNameLower] = property return self end return mixin end