diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index 1321615805bfec449bedcd91b464962a67ce1fef..372278c51aed4c0c88f1ccc64881e98dc29a7857 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -191,75 +191,6 @@ LLSD& drill_ref(  LLSD& blob, const LLSD& path);
 
 }
 
-/*****************************************************************************
-*   LLSDArray
-*****************************************************************************/
-/**
- * Construct an LLSD::Array inline, with implicit conversion to LLSD. Usage:
- *
- * @code
- * void somefunc(const LLSD&);
- * ...
- * somefunc(LLSDArray("text")(17)(3.14));
- * @endcode
- *
- * For completeness, LLSDArray() with no args constructs an empty array, so
- * <tt>LLSDArray()("text")(17)(3.14)</tt> produces an array equivalent to the
- * above. But for most purposes, LLSD() is already equivalent to an empty
- * array, and if you explicitly want an empty isArray(), there's
- * LLSD::emptyArray(). However, supporting a no-args LLSDArray() constructor
- * follows the principle of least astonishment.
- */
-class LLSDArray
-{
-public:
-    LLSDArray():
-        _data(LLSD::emptyArray())
-    {}
-
-    /**
-     * Need an explicit copy constructor. Consider the following:
-     *
-     * @code
-     * LLSD array_of_arrays(LLSDArray(LLSDArray(17)(34))
-     *                               (LLSDArray("x")("y")));
-     * @endcode
-     *
-     * The coder intends to construct [[17, 34], ["x", "y"]].
-     *
-     * With the compiler's implicit copy constructor, s/he gets instead
-     * [17, 34, ["x", "y"]].
-     *
-     * The expression LLSDArray(17)(34) constructs an LLSDArray with those two
-     * values. The reader assumes it should be converted to LLSD, as we always
-     * want with LLSDArray, before passing it to the @em outer LLSDArray
-     * constructor! This copy constructor makes that happen.
-     */
-    LLSDArray(const LLSDArray& inner):
-        _data(LLSD::emptyArray())
-    {
-        _data.append(inner);
-    }
-
-    LLSDArray(const LLSD& value):
-        _data(LLSD::emptyArray())
-    {
-        _data.append(value);
-    }
-
-    LLSDArray& operator()(const LLSD& value)
-    {
-        _data.append(value);
-        return *this;
-    }
-
-    operator LLSD() const { return _data; }
-    LLSD get() const { return _data; }
-
-private:
-    LLSD _data;
-};
-
 namespace llsd
 {
 
diff --git a/indra/llcommon/tests/lleventdispatcher_test.cpp b/indra/llcommon/tests/lleventdispatcher_test.cpp
index 9da1ecfd67a71fc87cf889f118c986e6b7a79ffe..991ec4819f045fe4320fabb5a7a51fcf3cc16db1 100644
--- a/indra/llcommon/tests/lleventdispatcher_test.cpp
+++ b/indra/llcommon/tests/lleventdispatcher_test.cpp
@@ -345,7 +345,7 @@ namespace tut
         lleventdispatcher_data():
             work("test dispatcher", "op"),
             // map {d=double, array=[3 elements]}
-            required(LLSDMap("d", LLSD::Real(0))("array", LLSDArray(LLSD())(LLSD())(LLSD()))),
+            required(LLSDMap("d", LLSD::Real(0))("array", llsd::array(LLSD(), LLSD(), LLSD()))),
             // first several params are required, last couple optional
             partial_offset(3)
         {
@@ -434,8 +434,8 @@ namespace tut
 
             // freena(), methodna(), cmethodna(), smethodna() all take same param list.
             // Same for freenb() et al.
-            params = LLSDMap("a", LLSDArray("b")("i")("f")("d")("cp"))
-                            ("b", LLSDArray("s")("uuid")("date")("uri")("bin"));
+            params = LLSDMap("a", llsd::array("b", "i", "f", "d", "cp"))
+                            ("b", llsd::array("s", "uuid", "date", "uri", "bin"));
             debug("params:\n",
                   params, "\n"
                   "params[\"a\"]:\n",
@@ -452,12 +452,12 @@ namespace tut
             // LLDate values are, as long as they're different from the
             // LLUUID() and LLDate() default values so inspect() will report
             // them.
-            dft_array_full = LLSDMap("a", LLSDArray(true)(17)(3.14)(123456.78)("classic"))
-                                    ("b", LLSDArray("string")
-                                                   (LLUUID::generateNewID())
-                                                   (LLDate::now())
-                                                   (LLURI("http://www.ietf.org/rfc/rfc3986.txt"))
-                                                   (binary));
+            dft_array_full = LLSDMap("a", llsd::array(true, 17, 3.14, 123456.78, "classic"))
+                                    ("b", llsd::array("string",
+                                                      LLUUID::generateNewID(),
+                                                      LLDate::now(),
+                                                      LLURI("http://www.ietf.org/rfc/rfc3986.txt"),
+                                                      binary));
             debug("dft_array_full:\n",
                   dft_array_full);
             // Partial defaults arrays.
@@ -723,7 +723,7 @@ namespace tut
     {
         set_test_name("map-style registration with non-array params");
         // Pass "param names" as scalar or as map
-        LLSD attempts(LLSDArray(17)(LLSDMap("pi", 3.14)("two", 2)));
+        LLSD attempts(llsd::array(17, LLSDMap("pi", 3.14)("two", 2)));
         foreach(LLSD ae, inArray(attempts))
         {
             std::string threw = catch_what<std::exception>([this, &ae](){
@@ -738,7 +738,7 @@ namespace tut
     {
         set_test_name("map-style registration with badly-formed defaults");
         std::string threw = catch_what<std::exception>([this](){
-                work.add("freena_err", "freena", freena, LLSDArray("a")("b"), 17);
+                work.add("freena_err", "freena", freena, llsd::array("a", "b"), 17);
             });
         ensure_has(threw, "must be a map or an array");
     }
@@ -749,8 +749,8 @@ namespace tut
         set_test_name("map-style registration with too many array defaults");
         std::string threw = catch_what<std::exception>([this](){
                 work.add("freena_err", "freena", freena,
-                         LLSDArray("a")("b"),
-                         LLSDArray(17)(0.9)("gack"));
+                         llsd::array("a", "b"),
+                         llsd::array(17, 0.9, "gack"));
             });
         ensure_has(threw, "shorter than");
     }
@@ -761,7 +761,7 @@ namespace tut
         set_test_name("map-style registration with too many map defaults");
         std::string threw = catch_what<std::exception>([this](){
                 work.add("freena_err", "freena", freena,
-                         LLSDArray("a")("b"),
+                         llsd::array("a", "b"),
                          LLSDMap("b", 17)("foo", 3.14)("bar", "sinister"));
             });
         ensure_has(threw, "nonexistent params");
@@ -798,7 +798,7 @@ namespace tut
     void object::test<8>()
     {
         set_test_name("query Callables with/out required params");
-        LLSD names(LLSDArray("free1")("Dmethod1")("Dcmethod1")("method1"));
+        LLSD names(llsd::array("free1", "Dmethod1", "Dcmethod1", "method1"));
         foreach(LLSD nm, inArray(names))
         {
             LLSD metadata(getMetadata(nm));
@@ -821,13 +821,13 @@ namespace tut
     {
         set_test_name("query array-style functions/methods");
         // Associate each registered name with expected arity.
-        LLSD expected(LLSDArray
-                      (LLSDArray
-                       (0)(LLSDArray("free0_array")("smethod0_array")("method0_array")))
-                      (LLSDArray
-                       (5)(LLSDArray("freena_array")("smethodna_array")("methodna_array")))
-                      (LLSDArray
-                       (5)(LLSDArray("freenb_array")("smethodnb_array")("methodnb_array"))));
+        LLSD expected(llsd::array
+                      (llsd::array
+                       (0, llsd::array("free0_array", "smethod0_array", "method0_array")),
+                       llsd::array
+                       (5, llsd::array("freena_array", "smethodna_array", "methodna_array")),
+                       llsd::array
+                       (5, llsd::array("freenb_array", "smethodnb_array", "methodnb_array"))));
         foreach(LLSD ae, inArray(expected))
         {
             LLSD::Integer arity(ae[0].asInteger());
@@ -853,7 +853,7 @@ namespace tut
         set_test_name("query map-style no-params functions/methods");
         // - (Free function | non-static method), map style, no params (ergo
         //   no defaults)
-        LLSD names(LLSDArray("free0_map")("smethod0_map")("method0_map"));
+        LLSD names(llsd::array("free0_map", "smethod0_map", "method0_map"));
         foreach(LLSD nm, inArray(names))
         {
             LLSD metadata(getMetadata(nm));
@@ -877,13 +877,13 @@ namespace tut
         // there should (!) be no difference beween array defaults and map
         // defaults. Verify, so we can ignore the distinction for all other
         // tests.
-        LLSD equivalences(LLSDArray
-                          (LLSDArray("freena_map_adft")("freena_map_mdft"))
-                          (LLSDArray("freenb_map_adft")("freenb_map_mdft"))
-                          (LLSDArray("smethodna_map_adft")("smethodna_map_mdft"))
-                          (LLSDArray("smethodnb_map_adft")("smethodnb_map_mdft"))
-                          (LLSDArray("methodna_map_adft")("methodna_map_mdft"))
-                          (LLSDArray("methodnb_map_adft")("methodnb_map_mdft")));
+        LLSD equivalences(llsd::array
+                          (llsd::array("freena_map_adft", "freena_map_mdft"),
+                           llsd::array("freenb_map_adft", "freenb_map_mdft"),
+                           llsd::array("smethodna_map_adft", "smethodna_map_mdft"),
+                           llsd::array("smethodnb_map_adft", "smethodnb_map_mdft"),
+                           llsd::array("methodna_map_adft", "methodna_map_mdft"),
+                           llsd::array("methodnb_map_adft", "methodnb_map_mdft")));
         foreach(LLSD eq, inArray(equivalences))
         {
             LLSD adft(eq[0]);
@@ -953,42 +953,42 @@ namespace tut
         debug("skipreq:\n",
               skipreq);
 
-        LLSD groups(LLSDArray       // array of groups
+        LLSD groups(llsd::array       // array of groups
 
-                    (LLSDArray      // group
-                     (LLSDArray("freena_map_allreq")("smethodna_map_allreq")("methodna_map_allreq"))
-                     (LLSDArray(allreq["a"])(LLSD()))) // required, optional
+                    (llsd::array      // group
+                     (llsd::array("freena_map_allreq", "smethodna_map_allreq", "methodna_map_allreq"),
+                      llsd::array(allreq["a"], LLSD())),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freenb_map_allreq")("smethodnb_map_allreq")("methodnb_map_allreq"))
-                     (LLSDArray(allreq["b"])(LLSD()))) // required, optional
+                     llsd::array        // group
+                     (llsd::array("freenb_map_allreq", "smethodnb_map_allreq", "methodnb_map_allreq"),
+                      llsd::array(allreq["b"], LLSD())),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freena_map_leftreq")("smethodna_map_leftreq")("methodna_map_leftreq"))
-                     (LLSDArray(leftreq["a"])(rightdft["a"]))) // required, optional
+                     llsd::array        // group
+                     (llsd::array("freena_map_leftreq", "smethodna_map_leftreq", "methodna_map_leftreq"),
+                      llsd::array(leftreq["a"], rightdft["a"])),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freenb_map_leftreq")("smethodnb_map_leftreq")("methodnb_map_leftreq"))
-                     (LLSDArray(leftreq["b"])(rightdft["b"]))) // required, optional
+                     llsd::array        // group
+                     (llsd::array("freenb_map_leftreq", "smethodnb_map_leftreq", "methodnb_map_leftreq"),
+                      llsd::array(leftreq["b"], rightdft["b"])),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freena_map_skipreq")("smethodna_map_skipreq")("methodna_map_skipreq"))
-                     (LLSDArray(skipreq["a"])(dft_map_partial["a"]))) // required, optional
+                     llsd::array        // group
+                     (llsd::array("freena_map_skipreq", "smethodna_map_skipreq", "methodna_map_skipreq"),
+                      llsd::array(skipreq["a"], dft_map_partial["a"])),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freenb_map_skipreq")("smethodnb_map_skipreq")("methodnb_map_skipreq"))
-                     (LLSDArray(skipreq["b"])(dft_map_partial["b"]))) // required, optional
+                     llsd::array        // group
+                     (llsd::array("freenb_map_skipreq", "smethodnb_map_skipreq", "methodnb_map_skipreq"),
+                      llsd::array(skipreq["b"], dft_map_partial["b"])),  // required, optional
 
-                    // We only need mention the full-map-defaults ("_mdft" suffix)
-                    // registrations, having established their equivalence with the
-                    // full-array-defaults ("_adft" suffix) registrations in another test.
-                    (LLSDArray        // group
-                     (LLSDArray("freena_map_mdft")("smethodna_map_mdft")("methodna_map_mdft"))
-                     (LLSDArray(LLSD::emptyMap())(dft_map_full["a"]))) // required, optional
+                     // We only need mention the full-map-defaults ("_mdft" suffix)
+                     // registrations, having established their equivalence with the
+                     // full-array-defaults ("_adft" suffix) registrations in another test.
+                     llsd::array        // group
+                     (llsd::array("freena_map_mdft", "smethodna_map_mdft", "methodna_map_mdft"),
+                      llsd::array(LLSD::emptyMap(), dft_map_full["a"])),  // required, optional
 
-                    (LLSDArray        // group
-                     (LLSDArray("freenb_map_mdft")("smethodnb_map_mdft")("methodnb_map_mdft"))
-                     (LLSDArray(LLSD::emptyMap())(dft_map_full["b"])))); // required, optional
+                     llsd::array        // group
+                     (llsd::array("freenb_map_mdft", "smethodnb_map_mdft", "methodnb_map_mdft"),
+                      llsd::array(LLSD::emptyMap(), dft_map_full["b"])))); // required, optional
 
         foreach(LLSD grp, inArray(groups))
         {
@@ -1077,7 +1077,7 @@ namespace tut
         // with 'required'.
         LLSD answer(42);
         // LLSD value matching 'required' according to llsd_matches() rules.
-        LLSD matching(LLSDMap("d", 3.14)("array", LLSDArray("answer")(true)(answer)));
+        LLSD matching(LLSDMap("d", 3.14)("array", llsd::array("answer", true, answer)));
         // Okay, walk through 'tests'.
         foreach(const CallablesTriple& tr, tests)
         {
@@ -1114,17 +1114,17 @@ namespace tut
         call_exc("free0_map", 17, map_exc);
         // Passing an array to a map-style function works now! No longer an
         // error case!
-//      call_exc("free0_map", LLSDArray("a")("b"), map_exc);
+//      call_exc("free0_map", llsd::array("a", "b"), map_exc);
     }
 
     template<> template<>
     void object::test<18>()
     {
         set_test_name("call no-args functions");
-        LLSD names(LLSDArray
-                   ("free0_array")("free0_map")
-                   ("smethod0_array")("smethod0_map")
-                   ("method0_array")("method0_map"));
+        LLSD names(llsd::array
+                   ("free0_array", "free0_map",
+                    "smethod0_array", "smethod0_map",
+                    "method0_array", "method0_map"));
         foreach(LLSD name, inArray(names))
         {
             // Look up the Vars instance for this function.
@@ -1142,10 +1142,10 @@ namespace tut
     }
 
     // Break out this data because we use it in a couple different tests.
-    LLSD array_funcs(LLSDArray
-                     (LLSDMap("a", "freena_array")   ("b", "freenb_array"))
-                     (LLSDMap("a", "smethodna_array")("b", "smethodnb_array"))
-                     (LLSDMap("a", "methodna_array") ("b", "methodnb_array")));
+    LLSD array_funcs(llsd::array
+                     (LLSDMap("a", "freena_array")   ("b", "freenb_array"),
+                      LLSDMap("a", "smethodna_array")("b", "smethodnb_array"),
+                      LLSDMap("a", "methodna_array") ("b", "methodnb_array")));
 
     template<> template<>
     void object::test<19>()
@@ -1153,7 +1153,7 @@ namespace tut
         set_test_name("call array-style functions with too-short arrays");
         // Could have two different too-short arrays, one for *na and one for
         // *nb, but since they both take 5 params...
-        LLSD tooshort(LLSDArray("this")("array")("too")("short"));
+        LLSD tooshort(llsd::array("this", "array", "too", "short"));
         foreach(const LLSD& funcsab, inArray(array_funcs))
         {
             foreach(const llsd::MapEntry& e, inMap(funcsab))
@@ -1172,12 +1172,12 @@ namespace tut
         {
             binary.push_back((U8)h);
         }
-        LLSD args(LLSDMap("a", LLSDArray(true)(17)(3.14)(123.456)("char*"))
-                         ("b", LLSDArray("string")
-                                        (LLUUID("01234567-89ab-cdef-0123-456789abcdef"))
-                                        (LLDate("2011-02-03T15:07:00Z"))
-                                        (LLURI("http://secondlife.com"))
-                                        (binary)));
+        LLSD args(LLSDMap("a", llsd::array(true, 17, 3.14, 123.456, "char*"))
+                         ("b", llsd::array("string",
+                                           LLUUID("01234567-89ab-cdef-0123-456789abcdef"),
+                                           LLDate("2011-02-03T15:07:00Z"),
+                                           LLURI("http://secondlife.com"),
+                                           binary)));
         LLSD argsplus(args);
         argsplus["a"].append("bogus");
         argsplus["b"].append("bogus");
@@ -1191,7 +1191,7 @@ namespace tut
         debug("expect: ", expect);
 
         // Use substantially the same logic for args and argsplus
-        LLSD argsarrays(LLSDArray(args)(argsplus));
+        LLSD argsarrays(llsd::array(args, argsplus));
         // So i==0 selects 'args', i==1 selects argsplus
         for (LLSD::Integer i(0), iend(argsarrays.size()); i < iend; ++i)
         {
@@ -1236,8 +1236,8 @@ namespace tut
         set_test_name("call map-style functions with (full | oversized) (arrays | maps)");
         const char binary[] = "\x99\x88\x77\x66\x55";
         LLSD array_full(LLSDMap
-                        ("a", LLSDArray(false)(255)(98.6)(1024.5)("pointer"))
-                        ("b", LLSDArray("object")(LLUUID::generateNewID())(LLDate::now())(LLURI("http://wiki.lindenlab.com/wiki"))(LLSD::Binary(boost::begin(binary), boost::end(binary)))));
+                        ("a", llsd::array(false, 255, 98.6, 1024.5, "pointer"))
+                        ("b", llsd::array("object", LLUUID::generateNewID(), LLDate::now(), LLURI("http://wiki.lindenlab.com/wiki"), LLSD::Binary(boost::begin(binary), boost::end(binary)))));
         LLSD array_overfull(array_full);
         foreach(LLSD::String a, ab)
         {
@@ -1280,20 +1280,20 @@ namespace tut
         // parameter defaults should make NO DIFFERENCE WHATSOEVER. Every call
         // should pass all params.
         LLSD names(LLSDMap
-                   ("a", LLSDArray
-                         ("freena_map_allreq") ("smethodna_map_allreq") ("methodna_map_allreq")
-                         ("freena_map_leftreq")("smethodna_map_leftreq")("methodna_map_leftreq")
-                         ("freena_map_skipreq")("smethodna_map_skipreq")("methodna_map_skipreq")
-                         ("freena_map_adft")   ("smethodna_map_adft")   ("methodna_map_adft")
-                         ("freena_map_mdft")   ("smethodna_map_mdft")   ("methodna_map_mdft"))
-                   ("b", LLSDArray
-                         ("freenb_map_allreq") ("smethodnb_map_allreq") ("methodnb_map_allreq")
-                         ("freenb_map_leftreq")("smethodnb_map_leftreq")("methodnb_map_leftreq")
-                         ("freenb_map_skipreq")("smethodnb_map_skipreq")("methodnb_map_skipreq")
-                         ("freenb_map_adft")   ("smethodnb_map_adft")   ("methodnb_map_adft")
-                         ("freenb_map_mdft")   ("smethodnb_map_mdft")   ("methodnb_map_mdft")));
+                   ("a", llsd::array
+                    ("freena_map_allreq",  "smethodna_map_allreq",  "methodna_map_allreq",
+                     "freena_map_leftreq", "smethodna_map_leftreq", "methodna_map_leftreq",
+                     "freena_map_skipreq", "smethodna_map_skipreq", "methodna_map_skipreq",
+                     "freena_map_adft",    "smethodna_map_adft",    "methodna_map_adft",
+                     "freena_map_mdft",    "smethodna_map_mdft",    "methodna_map_mdft"))
+                   ("b", llsd::array
+                    ("freenb_map_allreq",  "smethodnb_map_allreq",  "methodnb_map_allreq",
+                     "freenb_map_leftreq", "smethodnb_map_leftreq", "methodnb_map_leftreq",
+                     "freenb_map_skipreq", "smethodnb_map_skipreq", "methodnb_map_skipreq",
+                     "freenb_map_adft",    "smethodnb_map_adft",    "methodnb_map_adft",
+                     "freenb_map_mdft",    "smethodnb_map_mdft",    "methodnb_map_mdft")));
         // Treat (full | overfull) (array | map) the same.
-        LLSD argssets(LLSDArray(array_full)(array_overfull)(map_full)(map_overfull));
+        LLSD argssets(llsd::array(array_full, array_overfull, map_full, map_overfull));
         foreach(const LLSD& args, inArray(argssets))
         {
             foreach(LLSD::String a, ab)
diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp
index c246f5ee56da7879998115a5cbbece6a2713f442..5dbcf4c9b864aa5290ffb6508808026611236cb1 100644
--- a/indra/llcommon/tests/llsdserialize_test.cpp
+++ b/indra/llcommon/tests/llsdserialize_test.cpp
@@ -1817,10 +1817,10 @@ namespace tut
     {
         set_test_name("verify sequence to Python");
 
-        LLSD cdata(LLSDArray(17)(3.14)
-                  ("This string\n"
-                   "has several\n"
-                   "lines."));
+        LLSD cdata(llsd::array(17, 3.14,
+                               "This string\n"
+                               "has several\n"
+                               "lines."));
 
         const char pydata[] =
             "def verify(iterable):\n"
diff --git a/indra/llinventory/llsettingsdaycycle.cpp b/indra/llinventory/llsettingsdaycycle.cpp
index 241826604f660e5c6c1f9c0e1f6b397ab34e5907..42dd5e3d10c0d0a42d27503d43200db44a46b48d 100644
--- a/indra/llinventory/llsettingsdaycycle.cpp
+++ b/indra/llinventory/llsettingsdaycycle.cpp
@@ -440,8 +440,8 @@ LLSD LLSettingsDay::defaults()
         }
 
         LLSD tracks;
-        tracks.append(LLSDArray(waterTrack));
-        tracks.append(LLSDArray(skyTrack));
+        tracks.append(llsd::array(waterTrack));
+        tracks.append(llsd::array(skyTrack));
 
         dfltsetting[SETTING_TRACKS] = tracks;
         dfltsetting[SETTING_FRAMES] = frames;
diff --git a/indra/newview/groupchatlistener.cpp b/indra/newview/groupchatlistener.cpp
index ef015a950d5e86fd6ed3885530fc61a1aac9f8e6..a05caa961b7db78bbb091a0439f0d2b3774df13c 100644
--- a/indra/newview/groupchatlistener.cpp
+++ b/indra/newview/groupchatlistener.cpp
@@ -64,11 +64,11 @@ GroupChatListener::GroupChatListener():
         "Leave a group chat in group with UUID [\"id\"]\n"
         "Assumes a prior successful startIM request.",
         &LLGroupActions::endIM,
-        LLSDArray("id"));
-	add("sendIM",
-		"send a groupchat IM",
-		&send_message_wrapper,
-        LLSDArray("text")("session_id")("group_id"));
+        llsd::array("id"));
+    add("sendIM",
+        "send a groupchat IM",
+        &send_message_wrapper,
+        llsd::array("text", "session_id", "group_id"));
 }
 /*
 	static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,
diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp
index 6bdc5ee8233496ecdd25192bdf67d44a104132d9..2d5e86869d8393e0bc4e5fa27f78892e32eae7fd 100644
--- a/indra/newview/llfloatereditsky.cpp
+++ b/indra/newview/llfloatereditsky.cpp
@@ -523,7 +523,7 @@ void LLFloaterEditSky::refreshSkyPresetsList()
 
     for (LLEnvironment::list_name_id_t::iterator it = list.begin(); it != list.end(); ++it)
     {
-        mSkyPresetCombo->add((*it).first, LLSDArray((*it).first)((*it).second));
+        mSkyPresetCombo->add((*it).first, llsd::array((*it).first, (*it).second));
     }
 
 	mSkyPresetCombo->setLabel(getString("combo_label"));
diff --git a/indra/newview/llfloatereditwater.cpp b/indra/newview/llfloatereditwater.cpp
index 6e7b777e70a31b4654737290fafb3f88981645e3..c44ae7faca97eef87ea67159c6aa57fc0731ed13 100644
--- a/indra/newview/llfloatereditwater.cpp
+++ b/indra/newview/llfloatereditwater.cpp
@@ -335,7 +335,7 @@ void LLFloaterEditWater::refreshWaterPresetsList()
 
     for (LLEnvironment::list_name_id_t::iterator it = list.begin(); it != list.end(); ++it)
     {
-        mWaterPresetCombo->add((*it).first, LLSDArray((*it).first)((*it).second));
+        mWaterPresetCombo->add((*it).first, llsd::array((*it).first, (*it).second));
     }
 
 	mWaterPresetCombo->setLabel(getString("combo_label"));
diff --git a/indra/test/llsdutil_tut.cpp b/indra/test/llsdutil_tut.cpp
index 6fce53f335143b5e57eec287a14dbed3684aa716..22efd5439a3f66784434aea23008643741539bb3 100644
--- a/indra/test/llsdutil_tut.cpp
+++ b/indra/test/llsdutil_tut.cpp
@@ -404,28 +404,28 @@ namespace tut
             ensure("hash: equivalent values but different types do not match.", boost::hash<LLSD>{}(data_r1) != boost::hash<LLSD>{}(data_i1));
         }
         {
-            LLSD data_a1 = LLSDArray("A")("B")("C");
-            LLSD data_a2 = LLSDArray("A")("B")("C");
+            LLSD data_a1 = llsd::array("A", "B", "C");
+            LLSD data_a2 = llsd::array("A", "B", "C");
 
             ensure("hash: identical arrays produce identical results", boost::hash<LLSD>{}(data_a1) == boost::hash<LLSD>{}(data_a2));
 
-            data_a2.append(LLSDArray(1)(2));
+            data_a2.append(llsd::array(1, 2));
 
             ensure("hash: changing the array changes the hash.", boost::hash<LLSD>{}(data_a1) != boost::hash<LLSD>{}(data_a2));
 
-            data_a1.append(LLSDArray(1)(2));
+            data_a1.append(llsd::array(1, 2));
             ensure("hash: identical arrays produce identical results with nested arrays", boost::hash<LLSD>{}(data_a1) == boost::hash<LLSD>{}(data_a2));
         }
         {
-            LLSD data_m1 = LLSDMap("key1", LLSD::Real(3.0))("key2", "value2")("key3", LLSDArray(1)(2)(3));
-            LLSD data_m2 = LLSDMap("key1", LLSD::Real(3.0))("key2", "value2")("key3", LLSDArray(1)(2)(3));
+            LLSD data_m1 = LLSDMap("key1", LLSD::Real(3.0))("key2", "value2")("key3", llsd::array(1, 2, 3));
+            LLSD data_m2 = LLSDMap("key1", LLSD::Real(3.0))("key2", "value2")("key3", llsd::array(1, 2, 3));
 
             ensure("hash: identical maps produce identical results", boost::hash<LLSD>{}(data_m1) == boost::hash<LLSD>{}(data_m2));
 
-            LLSD data_m3 = LLSDMap("key1", LLSD::Real(5.0))("key2", "value2")("key3", LLSDArray(1)(2)(3));
+            LLSD data_m3 = LLSDMap("key1", LLSD::Real(5.0))("key2", "value2")("key3", llsd::array(1, 2, 3));
             ensure("hash: Different values in the map produce different hashes.", boost::hash<LLSD>{}(data_m1) != boost::hash<LLSD>{}(data_m3));
 
-            LLSD data_m4 = LLSDMap("keyA", LLSD::Real(3.0))("key2", "value2")("key3", LLSDArray(1)(2)(3));
+            LLSD data_m4 = LLSDMap("keyA", LLSD::Real(3.0))("key2", "value2")("key3", llsd::array(1, 2, 3));
             ensure("hash: Different keys in the map produce different hashes.", boost::hash<LLSD>{}(data_m1) != boost::hash<LLSD>{}(data_m4));
 
         }