TITANIUM_FUNCTION(Properties, getList)
{
    ENSURE_STRING_AT_INDEX(property, 0);
    ENSURE_OPTIONAL_ARRAY_AT_INDEX(defaultValue, 1);

    const auto js_context = this_object.get_context();
    const auto object_ptr = GetStaticObject(js_context).GetPrivate<Properties>();

    const auto list = object_ptr->getList(property, static_cast<std::vector<JSValue>>(defaultValue));
    return js_context.CreateArray(list);
}
			TITANIUM_FUNCTION(UDP, sendBytes)
			{
				ENSURE_OPTIONAL_UINT_AT_INDEX(port, 0, 0);
				ENSURE_OPTIONAL_STRING_AT_INDEX(host, 1, "");
				ENSURE_OPTIONAL_ARRAY_AT_INDEX(js_data, 2);

				std::vector<std::uint8_t> data;
				const auto length = js_data.GetLength();
				for (uint32_t i = 0; i < length; i++) {
					data.push_back(static_cast<std::uint8_t>(static_cast<std::uint32_t>(js_data.GetProperty(i))));
				}

				sendBytes(port, host, data);
				return get_context().CreateUndefined();
			}