+static JSValueRef All_complete_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
+    _assert(count == 1);
+    CYPool pool;
+    CYUTF8String prefix(CYPoolUTF8String(pool, context, CYJSString(context, arguments[0])));
+
+    std::vector<JSValueRef> values;
+
+    sqlite3_stmt *statement;
+
+    _sqlcall(sqlite3_prepare(database_,
+        "select "
+            "\"cache\".\"name\" "
+        "from \"cache\" "
+        "where"
+            " \"cache\".\"system\" & " CY_SYSTEM " == " CY_SYSTEM " and"
+            " \"cache\".\"name\" like ? || '%'"
+    , -1, &statement, NULL));
+
+    _sqlcall(sqlite3_bind_text(statement, 1, prefix.data, prefix.size, SQLITE_STATIC));
+
+    while (_sqlcall(sqlite3_step(statement)) != SQLITE_DONE)
+        values.push_back(CYCastJSValue(context, CYJSString(sqlite3_column_string(statement, 0))));
+
+    _sqlcall(sqlite3_finalize(statement));
+
+    return CYObjectMakeArray(context, values.size(), values.data());
+} CYCatch(NULL) }
+