def property(name)
      raise ArgumentError, 'no properties defined on class' if properties.nil?
      props = properties.select { |i| i['name'] == name.to_s }
      raise ::ArgumentError, "unknown property, name=#{name}" if props.empty?
      raise ::ArgumentError, "too many properties found, name=#{name}" if props.size > 1 # just to be sure
      props[0]
    end
def property(name)
      raise ArgumentError, 'no properties defined on class' if properties.nil?
      props = properties.select { |i| i['name'] == name.to_s }
      raise ::ArgumentError, "unknown property, name=#{name}" if props.empty?
      raise ::ArgumentError, "too many properties found, name=#{name}" if props.size > 1 # just to be sure
      props[0]
    end
Gets a property with the given name.