diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline
new file mode 100644
index 00000000000..0263cafa0a6
--- /dev/null
+++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline
@@ -0,0 +1,101 @@
+
+1 >declare var console: {
+
+ ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined
+--------------------------------
+2 > log(msg: string): void;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined
+--------------------------------
+3 >}
+
+ ~~ => Pos: (51 to 52) SpanInfo: undefined
+--------------------------------
+4 >type Robot = [number, string, string];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 91) SpanInfo: undefined
+--------------------------------
+5 >var robotA: Robot = [1, "mower", "mowing"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (92 to 135) SpanInfo: {"start":92,"length":42}
+ >var robotA: Robot = [1, "mower", "mowing"]
+ >:=> (line 5, col 0) to (line 5, col 42)
+--------------------------------
+6 >var robotB: Robot = [2, "trimmer", "trimming"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (136 to 183) SpanInfo: {"start":136,"length":46}
+ >var robotB: Robot = [2, "trimmer", "trimming"]
+ >:=> (line 6, col 0) to (line 6, col 46)
+--------------------------------
+7 >let [, nameA] = robotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (184 to 207) SpanInfo: {"start":191,"length":5}
+ >nameA
+ >:=> (line 7, col 7) to (line 7, col 12)
+--------------------------------
+8 >let [numberB] = robotB;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (208 to 231) SpanInfo: {"start":213,"length":7}
+ >numberB
+ >:=> (line 8, col 5) to (line 8, col 12)
+--------------------------------
+9 >let [numberA2, nameA2, skillA2] = robotA;
+
+ ~~~~~~~~~~~~~~ => Pos: (232 to 245) SpanInfo: {"start":237,"length":8}
+ >numberA2
+ >:=> (line 9, col 5) to (line 9, col 13)
+9 >let [numberA2, nameA2, skillA2] = robotA;
+
+ ~~~~~~~~ => Pos: (246 to 253) SpanInfo: {"start":247,"length":6}
+ >nameA2
+ >:=> (line 9, col 15) to (line 9, col 21)
+9 >let [numberA2, nameA2, skillA2] = robotA;
+
+ ~~~~~~~~ => Pos: (254 to 261) SpanInfo: {"start":255,"length":7}
+ >skillA2
+ >:=> (line 9, col 23) to (line 9, col 30)
+9 >let [numberA2, nameA2, skillA2] = robotA;
+
+ ~~~~~~~~~~~~ => Pos: (262 to 273) SpanInfo: {"start":237,"length":8}
+ >numberA2
+ >:=> (line 9, col 5) to (line 9, col 13)
+--------------------------------
+10 >let [numberC2] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (274 to 323) SpanInfo: {"start":279,"length":8}
+ >numberC2
+ >:=> (line 10, col 5) to (line 10, col 13)
+--------------------------------
+11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~ => Pos: (324 to 336) SpanInfo: {"start":329,"length":7}
+ >numberC
+ >:=> (line 11, col 5) to (line 11, col 12)
+11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~ => Pos: (337 to 343) SpanInfo: {"start":338,"length":5}
+ >nameC
+ >:=> (line 11, col 14) to (line 11, col 19)
+11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~ => Pos: (344 to 350) SpanInfo: {"start":345,"length":6}
+ >skillC
+ >:=> (line 11, col 21) to (line 11, col 27)
+11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (351 to 387) SpanInfo: {"start":329,"length":7}
+ >numberC
+ >:=> (line 11, col 5) to (line 11, col 12)
+--------------------------------
+12 >let [numberA3, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~~~~ => Pos: (388 to 401) SpanInfo: {"start":393,"length":8}
+ >numberA3
+ >:=> (line 12, col 5) to (line 12, col 13)
+12 >let [numberA3, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~~~~ => Pos: (402 to 415) SpanInfo: {"start":403,"length":13}
+ >...robotAInfo
+ >:=> (line 12, col 15) to (line 12, col 28)
+12 >let [numberA3, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~ => Pos: (416 to 426) SpanInfo: {"start":393,"length":8}
+ >numberA3
+ >:=> (line 12, col 5) to (line 12, col 13)
\ No newline at end of file
diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline
new file mode 100644
index 00000000000..8b80f6420df
--- /dev/null
+++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline
@@ -0,0 +1,115 @@
+
+1 >declare var console: {
+
+ ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined
+--------------------------------
+2 > log(msg: string): void;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined
+--------------------------------
+3 >}
+
+ ~~ => Pos: (51 to 52) SpanInfo: undefined
+--------------------------------
+4 >type MultiSkilledRobot = [string, [string, string]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (53 to 105) SpanInfo: undefined
+--------------------------------
+5 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (106 to 169) SpanInfo: {"start":106,"length":62}
+ >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]
+ >:=> (line 5, col 0) to (line 5, col 62)
+--------------------------------
+6 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (170 to 243) SpanInfo: {"start":170,"length":72}
+ >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]
+ >:=> (line 6, col 0) to (line 6, col 72)
+--------------------------------
+7 >
+
+ ~ => Pos: (244 to 244) SpanInfo: undefined
+--------------------------------
+8 >let [, skillA] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (245 to 274) SpanInfo: {"start":252,"length":6}
+ >skillA
+ >:=> (line 8, col 7) to (line 8, col 13)
+--------------------------------
+9 >let [nameMB] = multiRobotB;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (275 to 302) SpanInfo: {"start":280,"length":6}
+ >nameMB
+ >:=> (line 9, col 5) to (line 9, col 11)
+--------------------------------
+10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+
+ ~~~~~~~~~~~~ => Pos: (303 to 314) SpanInfo: {"start":308,"length":6}
+ >nameMA
+ >:=> (line 10, col 5) to (line 10, col 11)
+10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~ => Pos: (315 to 330) SpanInfo: {"start":317,"length":13}
+ >primarySkillA
+ >:=> (line 10, col 14) to (line 10, col 27)
+10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~ => Pos: (331 to 346) SpanInfo: {"start":332,"length":15}
+ >secondarySkillA
+ >:=> (line 10, col 29) to (line 10, col 44)
+10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+
+ ~ => Pos: (347 to 347) SpanInfo: {"start":317,"length":13}
+ >primarySkillA
+ >:=> (line 10, col 14) to (line 10, col 27)
+10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~=> Pos: (348 to 364) SpanInfo: {"start":308,"length":6}
+ >nameMA
+ >:=> (line 10, col 5) to (line 10, col 11)
+--------------------------------
+11 >
+
+ ~ => Pos: (365 to 365) SpanInfo: undefined
+--------------------------------
+12 >let [nameMC] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (366 to 415) SpanInfo: {"start":371,"length":6}
+ >nameMC
+ >:=> (line 12, col 5) to (line 12, col 11)
+--------------------------------
+13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~ => Pos: (416 to 428) SpanInfo: {"start":421,"length":7}
+ >nameMC2
+ >:=> (line 13, col 5) to (line 13, col 12)
+13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~~~~ => Pos: (429 to 444) SpanInfo: {"start":431,"length":13}
+ >primarySkillC
+ >:=> (line 13, col 15) to (line 13, col 28)
+13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~~~~ => Pos: (445 to 460) SpanInfo: {"start":446,"length":15}
+ >secondarySkillC
+ >:=> (line 13, col 30) to (line 13, col 45)
+13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+
+ ~=> Pos: (461 to 461) SpanInfo: {"start":431,"length":13}
+ >primarySkillC
+ >:=> (line 13, col 15) to (line 13, col 28)
+13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (462 to 500) SpanInfo: {"start":421,"length":7}
+ >nameMC2
+ >:=> (line 13, col 5) to (line 13, col 12)
+--------------------------------
+14 >
+
+ ~ => Pos: (501 to 501) SpanInfo: undefined
+--------------------------------
+15 >let [...multiRobotAInfo] = multiRobotA;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (502 to 540) SpanInfo: {"start":507,"length":18}
+ >...multiRobotAInfo
+ >:=> (line 15, col 5) to (line 15, col 23)
\ No newline at end of file
diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline
new file mode 100644
index 00000000000..9f025f3646a
--- /dev/null
+++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline
@@ -0,0 +1,101 @@
+
+1 >declare var console: {
+
+ ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined
+--------------------------------
+2 > log(msg: string): void;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined
+--------------------------------
+3 >}
+
+ ~~ => Pos: (51 to 52) SpanInfo: undefined
+--------------------------------
+4 >type Robot = [number, string, string];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 91) SpanInfo: undefined
+--------------------------------
+5 >var robotA: Robot = [1, "mower", "mowing"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (92 to 135) SpanInfo: {"start":92,"length":42}
+ >var robotA: Robot = [1, "mower", "mowing"]
+ >:=> (line 5, col 0) to (line 5, col 42)
+--------------------------------
+6 >var robotB: Robot = [2, "trimmer", "trimming"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (136 to 183) SpanInfo: {"start":136,"length":46}
+ >var robotB: Robot = [2, "trimmer", "trimming"]
+ >:=> (line 6, col 0) to (line 6, col 46)
+--------------------------------
+7 >let [, nameA = "noName"] = robotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (184 to 218) SpanInfo: {"start":191,"length":16}
+ >nameA = "noName"
+ >:=> (line 7, col 7) to (line 7, col 23)
+--------------------------------
+8 >let [numberB = -1] = robotB;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (219 to 247) SpanInfo: {"start":224,"length":12}
+ >numberB = -1
+ >:=> (line 8, col 5) to (line 8, col 17)
+--------------------------------
+9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA;
+
+ ~~~~~~~~~~~~~~~~~~~ => Pos: (248 to 266) SpanInfo: {"start":253,"length":13}
+ >numberA2 = -1
+ >:=> (line 9, col 5) to (line 9, col 18)
+9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA;
+
+ ~~~~~~~~~~~~~~~~~~~ => Pos: (267 to 285) SpanInfo: {"start":268,"length":17}
+ >nameA2 = "noName"
+ >:=> (line 9, col 20) to (line 9, col 37)
+9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA;
+
+ ~~~~~~~~~~~~~~~~~~~~=> Pos: (286 to 305) SpanInfo: {"start":287,"length":19}
+ >skillA2 = "noSkill"
+ >:=> (line 9, col 39) to (line 9, col 58)
+9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA;
+
+ ~~~~~~~~~~~~=> Pos: (306 to 317) SpanInfo: {"start":253,"length":13}
+ >numberA2 = -1
+ >:=> (line 9, col 5) to (line 9, col 18)
+--------------------------------
+10 >let [numberC2 = -1] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (318 to 372) SpanInfo: {"start":323,"length":13}
+ >numberC2 = -1
+ >:=> (line 10, col 5) to (line 10, col 18)
+--------------------------------
+11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~ => Pos: (373 to 390) SpanInfo: {"start":378,"length":12}
+ >numberC = -1
+ >:=> (line 11, col 5) to (line 11, col 17)
+11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~ => Pos: (391 to 408) SpanInfo: {"start":392,"length":16}
+ >nameC = "noName"
+ >:=> (line 11, col 19) to (line 11, col 35)
+11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~~=> Pos: (409 to 427) SpanInfo: {"start":410,"length":18}
+ >skillC = "noSkill"
+ >:=> (line 11, col 37) to (line 11, col 55)
+11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (428 to 464) SpanInfo: {"start":378,"length":12}
+ >numberC = -1
+ >:=> (line 11, col 5) to (line 11, col 17)
+--------------------------------
+12 >let [numberA3 = -1, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 483) SpanInfo: {"start":470,"length":13}
+ >numberA3 = -1
+ >:=> (line 12, col 5) to (line 12, col 18)
+12 >let [numberA3 = -1, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~~~~ => Pos: (484 to 497) SpanInfo: {"start":485,"length":13}
+ >...robotAInfo
+ >:=> (line 12, col 20) to (line 12, col 33)
+12 >let [numberA3 = -1, ...robotAInfo] = robotA;
+ ~~~~~~~~~~~ => Pos: (498 to 508) SpanInfo: {"start":470,"length":13}
+ >numberA3 = -1
+ >:=> (line 12, col 5) to (line 12, col 18)
\ No newline at end of file
diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline
new file mode 100644
index 00000000000..7a1667015fd
--- /dev/null
+++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline
@@ -0,0 +1,102 @@
+
+1 >declare var console: {
+
+ ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined
+--------------------------------
+2 > log(msg: string): void;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined
+--------------------------------
+3 >}
+
+ ~~ => Pos: (51 to 52) SpanInfo: undefined
+--------------------------------
+4 >type MultiSkilledRobot = [string, string[]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 97) SpanInfo: undefined
+--------------------------------
+5 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (98 to 161) SpanInfo: {"start":98,"length":62}
+ >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]
+ >:=> (line 5, col 0) to (line 5, col 62)
+--------------------------------
+6 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (162 to 235) SpanInfo: {"start":162,"length":72}
+ >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]
+ >:=> (line 6, col 0) to (line 6, col 72)
+--------------------------------
+7 >let [, skillA = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (236 to 290) SpanInfo: {"start":243,"length":31}
+ >skillA = ["noSkill", "noSkill"]
+ >:=> (line 7, col 7) to (line 7, col 38)
+--------------------------------
+8 >let [nameMB = "noName" ] = multiRobotB;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (291 to 330) SpanInfo: {"start":296,"length":17}
+ >nameMB = "noName"
+ >:=> (line 8, col 5) to (line 8, col 22)
+--------------------------------
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (331 to 353) SpanInfo: {"start":336,"length":17}
+ >nameMA = "noName"
+ >:=> (line 9, col 5) to (line 9, col 22)
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (354 to 381) SpanInfo: {"start":356,"length":25}
+ >primarySkillA = "noSkill"
+ >:=> (line 9, col 25) to (line 9, col 50)
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (382 to 409) SpanInfo: {"start":383,"length":27}
+ >secondarySkillA = "noSkill"
+ >:=> (line 9, col 52) to (line 9, col 79)
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~=> Pos: (410 to 410) SpanInfo: {"start":356,"length":25}
+ >primarySkillA = "noSkill"
+ >:=> (line 9, col 25) to (line 9, col 50)
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (411 to 435) SpanInfo: {"start":355,"length":81}
+ >[primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]
+ >:=> (line 9, col 24) to (line 9, col 105)
+9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+
+ ~~~~~~~~~~~~~~~~~=> Pos: (436 to 452) SpanInfo: {"start":336,"length":17}
+ >nameMA = "noName"
+ >:=> (line 9, col 5) to (line 9, col 22)
+--------------------------------
+10 >let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]];
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (453 to 514) SpanInfo: {"start":458,"length":17}
+ >nameMC = "noName"
+ >:=> (line 10, col 5) to (line 10, col 22)
+--------------------------------
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (515 to 538) SpanInfo: {"start":520,"length":18}
+ >nameMC2 = "noName"
+ >:=> (line 11, col 5) to (line 11, col 23)
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (539 to 566) SpanInfo: {"start":541,"length":25}
+ >primarySkillC = "noSkill"
+ >:=> (line 11, col 26) to (line 11, col 51)
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (567 to 594) SpanInfo: {"start":568,"length":27}
+ >secondarySkillC = "noSkill"
+ >:=> (line 11, col 53) to (line 11, col 80)
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~=> Pos: (595 to 595) SpanInfo: {"start":541,"length":25}
+ >primarySkillC = "noSkill"
+ >:=> (line 11, col 26) to (line 11, col 51)
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (596 to 620) SpanInfo: {"start":540,"length":81}
+ >[primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]
+ >:=> (line 11, col 25) to (line 11, col 106)
+11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (621 to 658) SpanInfo: {"start":520,"length":18}
+ >nameMC2 = "noName"
+ >:=> (line 11, col 5) to (line 11, col 23)
\ No newline at end of file
diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts
new file mode 100644
index 00000000000..eb4e3e17027
--- /dev/null
+++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts
@@ -0,0 +1,15 @@
+///
+////declare var console: {
+//// log(msg: string): void;
+////}
+////type Robot = [number, string, string];
+////var robotA: Robot = [1, "mower", "mowing"];
+////var robotB: Robot = [2, "trimmer", "trimming"];
+////let [, nameA] = robotA;
+////let [numberB] = robotB;
+////let [numberA2, nameA2, skillA2] = robotA;
+////let [numberC2] = [3, "edging", "Trimming edges"];
+////let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
+////let [numberA3, ...robotAInfo] = robotA;
+
+verify.baselineCurrentFileBreakpointLocations();
\ No newline at end of file
diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts
new file mode 100644
index 00000000000..265dae90ab9
--- /dev/null
+++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts
@@ -0,0 +1,19 @@
+///
+
+////declare var console: {
+//// log(msg: string): void;
+////}
+////type MultiSkilledRobot = [string, [string, string]];
+////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]];
+////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]];
+////
+////let [, skillA] = multiRobotA;
+////let [nameMB] = multiRobotB;
+////let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA;
+////
+////let [nameMC] = ["roomba", ["vaccum", "mopping"]];
+////let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]];
+////
+////let [...multiRobotAInfo] = multiRobotA;
+
+verify.baselineCurrentFileBreakpointLocations();
\ No newline at end of file
diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts
new file mode 100644
index 00000000000..78b0646661e
--- /dev/null
+++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts
@@ -0,0 +1,15 @@
+///
+////declare var console: {
+//// log(msg: string): void;
+////}
+////type Robot = [number, string, string];
+////var robotA: Robot = [1, "mower", "mowing"];
+////var robotB: Robot = [2, "trimmer", "trimming"];
+////let [, nameA = "noName"] = robotA;
+////let [numberB = -1] = robotB;
+////let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA;
+////let [numberC2 = -1] = [3, "edging", "Trimming edges"];
+////let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"];
+////let [numberA3 = -1, ...robotAInfo] = robotA;
+
+verify.baselineCurrentFileBreakpointLocations();
\ No newline at end of file
diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts
new file mode 100644
index 00000000000..ac25165696c
--- /dev/null
+++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts
@@ -0,0 +1,14 @@
+///
+////declare var console: {
+//// log(msg: string): void;
+////}
+////type MultiSkilledRobot = [string, string[]];
+////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]];
+////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]];
+////let [, skillA = ["noSkill", "noSkill"]] = multiRobotA;
+////let [nameMB = "noName" ] = multiRobotB;
+////let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA;
+////let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]];
+////let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]];
+
+verify.baselineCurrentFileBreakpointLocations();
\ No newline at end of file