Complete src/DotPipeCompletionSpec.res 15:5
posCursor:[15:5] posNoWhite:[15:4] Found expr:[15:3->15:5]
Pexp_field [15:3->15:4] _:[18:0->15:5]
Completable: Cpath Value[n].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[n].""
ContextPath Value[n]
Path n
ContextPath Value[n]->
ContextPath Value[n]
Path n
CPPipe pathFromEnv:SomeModule found:true
Path SomeModule.
Path 
[{
    "label": "name",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nname: string\n```\n\n```rescript\ntype t = {name: string}\n```"}
  }, {
    "label": "->SomeModule.withUnlabelledArgumentNotFirst",
    "kind": 12,
    "tags": [],
    "detail": "(~name: string=?, t) => unit",
    "documentation": null,
    "sortText": "withUnlabelledArgumentNotFirst",
    "insertText": "->SomeModule.withUnlabelledArgumentNotFirst",
    "additionalTextEdits": [{
      "range": {"start": {"line": 15, "character": 4}, "end": {"line": 15, "character": 5}},
      "newText": ""
      }]
  }, {
    "label": "->SomeModule.getName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getName",
    "insertText": "->SomeModule.getName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 15, "character": 4}, "end": {"line": 15, "character": 5}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 44:6
posCursor:[44:6] posNoWhite:[44:5] Found expr:[44:3->44:6]
Pexp_field [44:3->44:5] _:[47:0->44:6]
Completable: Cpath Value[nn].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[nn].""
ContextPath Value[nn]
Path nn
ContextPath Value[nn]->
ContextPath Value[nn]
Path nn
CPPipe pathFromEnv:SomeOtherModule found:true
Path SomeOtherModule.
Path DotPipeCompletionSpec.CompleteFromThisToo.
Path DotPipeCompletionSpec.SomeOtherModule.
Path 
[{
    "label": "nname",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nnname: string\n```\n\n```rescript\ntype typeOutsideModule = {nname: string}\n```"}
  }, {
    "label": "->SomeOtherModule.getNName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getNName",
    "insertText": "->SomeOtherModule.getNName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName2",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "getNName2",
    "insertText": "->SomeOtherModule.getNName2",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }, {
    "label": "->CompleteFromThisToo.a",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "a",
    "insertText": "->CompleteFromThisToo.a",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getNName",
    "insertText": "->SomeOtherModule.getNName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName2",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "getNName2",
    "insertText": "->SomeOtherModule.getNName2",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }, {
    "label": "->doWithTypeOutsideModule",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "doWithTypeOutsideModule",
    "insertText": "->doWithTypeOutsideModule",
    "additionalTextEdits": [{
      "range": {"start": {"line": 44, "character": 5}, "end": {"line": 44, "character": 6}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 62:5
posCursor:[62:5] posNoWhite:[62:4] Found expr:[62:3->62:5]
Pexp_field [62:3->62:4] _:[65:0->62:5]
Completable: Cpath Value[a].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[a].""
ContextPath Value[a]
Path a
ContextPath Value[a]->
ContextPath Value[a]
Path a
CPPipe pathFromEnv:A found:true
Path A.
Path B.
Path 
[{
    "label": "->A.withA",
    "kind": 12,
    "tags": [],
    "detail": "a => unit",
    "documentation": null,
    "sortText": "withA",
    "insertText": "->A.withA",
    "additionalTextEdits": [{
      "range": {"start": {"line": 62, "character": 4}, "end": {"line": 62, "character": 5}},
      "newText": ""
      }]
  }, {
    "label": "->B.b",
    "kind": 12,
    "tags": [],
    "detail": "A.a => int",
    "documentation": null,
    "sortText": "b",
    "insertText": "->B.b",
    "additionalTextEdits": [{
      "range": {"start": {"line": 62, "character": 4}, "end": {"line": 62, "character": 5}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 67:6
posCursor:[67:6] posNoWhite:[67:5] Found expr:[67:3->67:6]
Pexp_field [67:3->67:5] _:[70:0->67:6]
Completable: Cpath Value[xx].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[xx].""
ContextPath Value[xx]
Path xx
ContextPath Value[xx]->
ContextPath Value[xx]
Path xx
CPPipe pathFromEnv:CompletionFromModule.SomeModule found:false
Path CompletionFromModule.SomeModule.
Path 
[{
    "label": "name",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nname: string\n```\n\n```rescript\ntype t = {name: string}\n```"}
  }, {
    "label": "->CompletionFromModule.SomeModule.getName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getName",
    "insertText": "->CompletionFromModule.SomeModule.getName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 67, "character": 5}, "end": {"line": 67, "character": 6}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 75:9
posCursor:[75:9] posNoWhite:[75:8] Found expr:[75:3->75:9]
Pexp_field [75:3->75:7] u:[75:8->75:9]
Completable: Cpath Value[ffff].u
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[ffff].u
ContextPath Value[ffff]
Path ffff
ContextPath Value[ffff]->u
ContextPath Value[ffff]
Path ffff
Path Stdlib.Array.u
Path ArrayUtils.u
Path u
[{
    "label": "->Array.unshiftMany",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>) => unit",
    "documentation": {"kind": "markdown", "value": "\n`unshiftMany(array, itemsArray)` inserts many new items to the start of the array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.push`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nsomeArray->Array.unshiftMany([\"yay\", \"wehoo\"])\nsomeArray == [\"yay\", \"wehoo\", \"hi\", \"hello\"]\n```\n"},
    "sortText": "unshiftMany",
    "insertText": "->Array.unshiftMany",
    "additionalTextEdits": [{
      "range": {"start": {"line": 75, "character": 7}, "end": {"line": 75, "character": 8}},
      "newText": ""
      }]
  }, {
    "label": "->Array.unshift",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "\n`unshift(array, item)` inserts a new item at the start of the array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.unshift`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nsomeArray->Array.unshift(\"yay\")\nsomeArray == [\"yay\", \"hi\", \"hello\"]\n```\n"},
    "sortText": "unshift",
    "insertText": "->Array.unshift",
    "additionalTextEdits": [{
      "range": {"start": {"line": 75, "character": 7}, "end": {"line": 75, "character": 8}},
      "newText": ""
      }]
  }, {
    "label": "->Array.unsafe_get",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, int) => 'a",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`unsafe_get(array, index)` returns the element at `index` of `array`.\n\nThis is _unsafe_, meaning it will return `undefined` value if `index` does not exist in `array`.\n\nUse `Array.unsafe_get` only when you are sure the `index` exists (i.e. when using for-loop).\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3]\nfor index in 0 to array->Array.length - 1 {\n  let value = array->Array.unsafe_get(index)\n  Console.log(value)\n}\n```\n"},
    "sortText": "unsafe_get",
    "insertText": "->Array.unsafe_get",
    "additionalTextEdits": [{
      "range": {"start": {"line": 75, "character": 7}, "end": {"line": 75, "character": 8}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 80:7
posCursor:[80:7] posNoWhite:[80:6] Found expr:[80:3->80:7]
Pexp_field [80:3->80:6] _:[84:0->80:7]
Completable: Cpath Value[nnn].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[nnn].""
ContextPath Value[nnn]
Path nnn
ContextPath Value[nnn]->
ContextPath Value[nnn]
Path nnn
CPPipe pathFromEnv: found:true
Path DotPipeCompletionSpec.
Path DotPipeCompletionSpec.SomeOtherModule.
Path 
[{
    "label": "nname",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nnname: string\n```\n\n```rescript\ntype typeOutsideModule = {nname: string}\n```"}
  }, {
    "label": "->doWithTypeOutsideModule",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "doWithTypeOutsideModule",
    "insertText": "->doWithTypeOutsideModule",
    "additionalTextEdits": [{
      "range": {"start": {"line": 80, "character": 6}, "end": {"line": 80, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getNName",
    "insertText": "->SomeOtherModule.getNName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 80, "character": 6}, "end": {"line": 80, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName2",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "getNName2",
    "insertText": "->SomeOtherModule.getNName2",
    "additionalTextEdits": [{
      "range": {"start": {"line": 80, "character": 6}, "end": {"line": 80, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->doWithTypeOutsideModule",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "doWithTypeOutsideModule",
    "insertText": "->doWithTypeOutsideModule",
    "additionalTextEdits": [{
      "range": {"start": {"line": 80, "character": 6}, "end": {"line": 80, "character": 7}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 86:39
posCursor:[86:39] posNoWhite:[86:38] Found expr:[86:3->86:39]
posCursor:[86:39] posNoWhite:[86:38] Found expr:[86:9->86:39]
Pexp_field [86:9->86:34] filt:[86:35->86:39]
Completable: Cpath Value[Array, filter](Nolabel).filt
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Array, filter](Nolabel).filt
ContextPath Value[Array, filter](Nolabel)
ContextPath Value[Array, filter]
Path Array.filter
ContextPath Value[Array, filter](Nolabel, Nolabel)->filt
ContextPath Value[Array, filter](Nolabel, Nolabel)
ContextPath Value[Array, filter]
Path Array.filter
Path Stdlib.Array.filt
Path ArrayUtils.filt
Path filt
[{
    "label": "->Array.filterMap",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => option<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`filterMap(array, fn)`\n\nCalls `fn` for each element and returns a new array containing results of the `fn` calls which are not `None`.\n\n## Examples\n\n```rescript\n[\"Hello\", \"Hi\", \"Good bye\"]->Array.filterMap(item =>\n  switch item {\n  | \"Hello\" => Some(item->String.length)\n  | _ => None\n  }\n) == [5]\n\n[1, 2, 3, 4, 5, 6]->Array.filterMap(n => mod(n, 2) == 0 ? Some(n * n) : None) == [4, 16, 36]\n\nArray.filterMap([1, 2, 3, 4, 5, 6], _ => None) == []\n\nArray.filterMap([], n => mod(n, 2) == 0 ? Some(n * n) : None) == []\n```\n"},
    "sortText": "filterMap",
    "insertText": "->Array.filterMap",
    "additionalTextEdits": [{
      "range": {"start": {"line": 86, "character": 34}, "end": {"line": 86, "character": 35}},
      "newText": ""
      }]
  }, {
    "label": "->Array.filterMapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => option<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`filterMapWithIndex(array, fn)`\n\nCalls `fn` for each element and returns a new array containing results of the `fn` calls which are not `None`.\n\n## Examples\n\n```rescript\n[\"Hello\", \"Hi\", \"Good bye\"]->Array.filterMapWithIndex((item, index) =>\n  switch item {\n  | \"Hello\" => Some(index)\n  | _ => None\n  }\n) == [0]\n```\n"},
    "sortText": "filterMapWithIndex",
    "insertText": "->Array.filterMapWithIndex",
    "additionalTextEdits": [{
      "range": {"start": {"line": 86, "character": 34}, "end": {"line": 86, "character": 35}},
      "newText": ""
      }]
  }, {
    "label": "->Array.filter",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`filter(array, checker)` returns a new array containing all elements from `array` for which the provided `checker` function returns true.\n\nSee [`Array.filter`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.filter(num => num > 2) == [3, 4]\n```\n"},
    "sortText": "filter",
    "insertText": "->Array.filter",
    "additionalTextEdits": [{
      "range": {"start": {"line": 86, "character": 34}, "end": {"line": 86, "character": 35}},
      "newText": ""
      }]
  }, {
    "label": "->Array.filterWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`filterWithIndex(array, checker)` returns a new array containing all elements from `array` for which the provided `checker` function returns true.\n\nSee [`Array.filter`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.filterWithIndex((num, index) => index === 0 || num === 2) == [1, 2]\n```\n"},
    "sortText": "filterWithIndex",
    "insertText": "->Array.filterWithIndex",
    "additionalTextEdits": [{
      "range": {"start": {"line": 86, "character": 34}, "end": {"line": 86, "character": 35}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 89:62
posCursor:[89:62] posNoWhite:[89:61] Found expr:[89:3->89:62]
posCursor:[89:62] posNoWhite:[89:61] Found expr:[89:36->89:62]
Pexp_field [89:36->89:55] includ:[89:56->89:62]
Completable: Cpath Value[Array, joinWith](Nolabel).includ
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Array, joinWith](Nolabel).includ
ContextPath Value[Array, joinWith](Nolabel)
ContextPath Value[Array, joinWith]
Path Array.joinWith
ContextPath Value[Array, joinWith](Nolabel, Nolabel)->includ
ContextPath Value[Array, joinWith](Nolabel, Nolabel)
ContextPath Value[Array, joinWith]
Path Array.joinWith
Path Stdlib.String.includ
Path includ
[{
    "label": "->String.includes",
    "kind": 12,
    "tags": [],
    "detail": "(string, string) => bool",
    "documentation": {"kind": "markdown", "value": "\n`includes(str, searchValue)` returns `true` if `searchValue` is found anywhere\nwithin `str`, `false` otherwise.\nSee [`String.includes`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes) on MDN.\n\n## Examples\n\n```rescript\nString.includes(\"programmer\", \"gram\") == true\nString.includes(\"programmer\", \"er\") == true\nString.includes(\"programmer\", \"pro\") == true\nString.includes(\"programmer.dat\", \"xyz\") == false\n```\n"},
    "sortText": "includes",
    "insertText": "->String.includes",
    "additionalTextEdits": [{
      "range": {"start": {"line": 89, "character": 55}, "end": {"line": 89, "character": 56}},
      "newText": ""
      }]
  }, {
    "label": "->String.includesFrom",
    "kind": 12,
    "tags": [],
    "detail": "(string, string, int) => bool",
    "documentation": {"kind": "markdown", "value": "\n`includesFrom(str, searchValue, start)` returns `true` if `searchValue` is found\nanywhere within `str` starting at character number `start` (where 0 is the\nfirst character), `false` otherwise.\nSee [`String.includes`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes) on MDN.\n\n## Examples\n\n```rescript\nString.includesFrom(\"programmer\", \"gram\", 1) == true\nString.includesFrom(\"programmer\", \"gram\", 4) == false\nString.includesFrom(`대한민국`, `한`, 1) == true\n```\n"},
    "sortText": "includesFrom",
    "insertText": "->String.includesFrom",
    "additionalTextEdits": [{
      "range": {"start": {"line": 89, "character": 55}, "end": {"line": 89, "character": 56}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 94:36
posCursor:[94:36] posNoWhite:[94:35] Found expr:[94:3->94:36]
posCursor:[94:36] posNoWhite:[94:35] Found expr:[94:8->94:36]
Pexp_field [94:8->94:26] toUpperCa:[94:27->94:36]
Completable: Cpath Value[String, toLowerCase].toUpperCa
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[String, toLowerCase].toUpperCa
ContextPath Value[String, toLowerCase]
Path String.toLowerCase
ContextPath Value[String, toLowerCase](Nolabel)->toUpperCa
ContextPath Value[String, toLowerCase](Nolabel)
ContextPath Value[String, toLowerCase]
Path String.toLowerCase
Path Stdlib.String.toUpperCa
Path toUpperCa
[{
    "label": "->String.toUpperCase",
    "kind": 12,
    "tags": [],
    "detail": "string => string",
    "documentation": {"kind": "markdown", "value": "\n`toUpperCase(str)` converts `str` to upper case using the locale-insensitive\ncase mappings in the Unicode Character Database. Notice that the conversion can\nexpand the number of letters in the result, for example the German ß\ncapitalizes to two Ses in a row.\nSee [`String.toUpperCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) on MDN.\n\n## Examples\n\n```rescript\nString.toUpperCase(\"abc\") == \"ABC\"\nString.toUpperCase(`Straße`) == `STRASSE`\nString.toUpperCase(`πς`) == `ΠΣ`\n```\n"},
    "sortText": "toUpperCase",
    "insertText": "->String.toUpperCase",
    "additionalTextEdits": [{
      "range": {"start": {"line": 94, "character": 26}, "end": {"line": 94, "character": 27}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 97:55
posCursor:[97:55] posNoWhite:[97:54] Found expr:[97:3->97:55]
posCursor:[97:55] posNoWhite:[97:54] Found expr:[97:28->97:55]
Pexp_field [97:28->97:46] toLowerC:[97:47->97:55]
Completable: Cpath Value[String, toUpperCase].toLowerC
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[String, toUpperCase].toLowerC
ContextPath Value[String, toUpperCase]
Path String.toUpperCase
ContextPath Value[String, toUpperCase](Nolabel)->toLowerC
ContextPath Value[String, toUpperCase](Nolabel)
ContextPath Value[String, toUpperCase]
Path String.toUpperCase
Path Stdlib.String.toLowerC
Path toLowerC
[{
    "label": "->String.toLowerCase",
    "kind": 12,
    "tags": [],
    "detail": "string => string",
    "documentation": {"kind": "markdown", "value": "\n`toLowerCase(str)` converts `str` to lower case using the locale-insensitive\ncase mappings in the Unicode Character Database. Notice that the conversion can\ngive different results depending upon context, for example with the Greek\nletter sigma, which has two different lower case forms, one when it is the last\ncharacter in a string and another when it is not.\nSee [`String.toLowerCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) on MDN.\n\n## Examples\n\n```rescript\nString.toLowerCase(\"ABC\") == \"abc\"\nString.toLowerCase(`ΣΠ`) == `σπ`\nString.toLowerCase(`ΠΣ`) == `πς`\n```\n"},
    "sortText": "toLowerCase",
    "insertText": "->String.toLowerCase",
    "additionalTextEdits": [{
      "range": {"start": {"line": 97, "character": 46}, "end": {"line": 97, "character": 47}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 101:7
posCursor:[101:7] posNoWhite:[101:6] Found expr:[100:9->104:1]
posCursor:[101:7] posNoWhite:[101:6] Found expr:[101:5->103:3]
Pexp_field [101:5->101:6] t:[103:2->103:3]
Completable: Cpath Value[t].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[t].""
ContextPath Value[t]
Path t
ContextPath Value[t]->
ContextPath Value[t]
Path t
CPPipe pathFromEnv: found:true
Path DotPipeCompletionSpec.
Path DotPipeCompletionSpec.SomeOtherModule.
Path 
[{
    "label": "nname",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nnname: string\n```\n\n```rescript\ntype typeOutsideModule = {nname: string}\n```"}
  }, {
    "label": "->doWithTypeOutsideModule",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "doWithTypeOutsideModule",
    "insertText": "->doWithTypeOutsideModule",
    "additionalTextEdits": [{
      "range": {"start": {"line": 101, "character": 6}, "end": {"line": 101, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName",
    "kind": 12,
    "tags": [],
    "detail": "t => string",
    "documentation": null,
    "sortText": "getNName",
    "insertText": "->SomeOtherModule.getNName",
    "additionalTextEdits": [{
      "range": {"start": {"line": 101, "character": 6}, "end": {"line": 101, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->SomeOtherModule.getNName2",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "getNName2",
    "insertText": "->SomeOtherModule.getNName2",
    "additionalTextEdits": [{
      "range": {"start": {"line": 101, "character": 6}, "end": {"line": 101, "character": 7}},
      "newText": ""
      }]
  }, {
    "label": "->doWithTypeOutsideModule",
    "kind": 12,
    "tags": [],
    "detail": "typeOutsideModule => string",
    "documentation": null,
    "sortText": "doWithTypeOutsideModule",
    "insertText": "->doWithTypeOutsideModule",
    "additionalTextEdits": [{
      "range": {"start": {"line": 101, "character": 6}, "end": {"line": 101, "character": 7}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 108:27
XXX Not found!
Completable: Cpath Module[Dot]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Module[Dot]
Path Dot
[{
    "label": "DotPipeCompleteFromCurrentModule",
    "kind": 9,
    "tags": [],
    "detail": "module DotPipeCompleteFromCurrentModule",
    "documentation": null,
    "data": {
      "modulePath": "DotPipeCompleteFromCurrentModule",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }, {
    "label": "DotPipeCompletionSpec",
    "kind": 9,
    "tags": [],
    "detail": "module DotPipeCompletionSpec",
    "documentation": null,
    "data": {
      "modulePath": "DotPipeCompletionSpec",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }]

Complete src/DotPipeCompletionSpec.res 111:39
posCursor:[111:39] posNoWhite:[111:38] Found expr:[111:24->111:40]
posCursor:[111:39] posNoWhite:[111:38] Found expr:[111:25->111:39]
Pexp_construct CompletionPipe:[111:25->111:39] None
Completable: Cpath Value[CompletionPipe]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[CompletionPipe]
Path CompletionPipe
[{
    "label": "CompletionPipeChain",
    "kind": 9,
    "tags": [],
    "detail": "module CompletionPipeChain",
    "documentation": null,
    "data": {
      "modulePath": "CompletionPipeChain",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }, {
    "label": "CompletionPipeProperty",
    "kind": 9,
    "tags": [],
    "detail": "module CompletionPipeProperty",
    "documentation": null,
    "data": {
      "modulePath": "CompletionPipeProperty",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }, {
    "label": "CompletionPipeSubmodules",
    "kind": 9,
    "tags": [],
    "detail": "module CompletionPipeSubmodules",
    "documentation": null,
    "data": {
      "modulePath": "CompletionPipeSubmodules",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }]

Complete src/DotPipeCompletionSpec.res 114:44
posCursor:[114:44] posNoWhite:[114:43] Found expr:[114:24->114:45]
posCursor:[114:44] posNoWhite:[114:43] Found expr:[114:41->114:44]
Pexp_construct Dot:[114:41->114:44] None
Completable: Cpath Value[Dot]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Dot]
Path Dot
[{
    "label": "DotPipeCompleteFromCurrentModule",
    "kind": 9,
    "tags": [],
    "detail": "module DotPipeCompleteFromCurrentModule",
    "documentation": null,
    "data": {
      "modulePath": "DotPipeCompleteFromCurrentModule",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }, {
    "label": "DotPipeCompletionSpec",
    "kind": 9,
    "tags": [],
    "detail": "module DotPipeCompletionSpec",
    "documentation": null,
    "data": {
      "modulePath": "DotPipeCompletionSpec",
      "filePath": "src/DotPipeCompletionSpec.res"
    }
  }]

Complete src/DotPipeCompletionSpec.res 122:11
posCursor:[122:11] posNoWhite:[122:10] Found expr:[122:3->122:11]
Pexp_field [122:3->122:10] _:[128:0->122:11]
Completable: Cpath Value[someObj].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[someObj].""
ContextPath Value[someObj]
Path someObj
ContextPath Value[someObj]->
ContextPath Value[someObj]
Path someObj
[{
    "label": "[\"age\"]",
    "kind": 4,
    "tags": [],
    "detail": "{\"age\": int, \"name\": string}",
    "documentation": null,
    "insertText": "[\"age\"]",
    "additionalTextEdits": [{
      "range": {"start": {"line": 122, "character": 10}, "end": {"line": 122, "character": 11}},
      "newText": ""
      }]
  }, {
    "label": "[\"name\"]",
    "kind": 4,
    "tags": [],
    "detail": "{\"age\": int, \"name\": string}",
    "documentation": null,
    "insertText": "[\"name\"]",
    "additionalTextEdits": [{
      "range": {"start": {"line": 122, "character": 10}, "end": {"line": 122, "character": 11}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 125:13
posCursor:[125:13] posNoWhite:[125:12] Found expr:[125:3->125:13]
Pexp_field [125:3->125:10] na:[125:11->125:13]
Completable: Cpath Value[someObj].na
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[someObj].na
ContextPath Value[someObj]
Path someObj
ContextPath Value[someObj]->na
ContextPath Value[someObj]
Path someObj
[{
    "label": "[\"name\"]",
    "kind": 4,
    "tags": [],
    "detail": "{\"age\": int, \"name\": string}",
    "documentation": null,
    "insertText": "[\"name\"]",
    "additionalTextEdits": [{
      "range": {"start": {"line": 125, "character": 10}, "end": {"line": 125, "character": 11}},
      "newText": ""
      }]
  }]

Complete src/DotPipeCompletionSpec.res 144:10
posCursor:[144:10] posNoWhite:[144:9] Found expr:[144:3->144:10]
Pexp_field [144:3->144:9] _:[147:0->144:10]
Completable: Cpath Value[button].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[button].""
ContextPath Value[button]
Path button
ContextPath Value[button]->
ContextPath Value[button]
Path button
CPPipe pathFromEnv:DOMAPI found:true
Path DOMAPI.
Path DotPipeCompletionSpec.HTMLButtonElement.
Path 
[{
    "label": "disabled",
    "kind": 5,
    "tags": [],
    "detail": "bool",
    "documentation": {"kind": "markdown", "value": "```rescript\ndisabled: bool\n```\n\n```rescript\ntype htmlButtonElement = {mutable disabled: bool}\n```"}
  }, {
    "label": "->HTMLButtonElement.checkValidity",
    "kind": 12,
    "tags": [],
    "detail": "DOMAPI.htmlButtonElement => bool",
    "documentation": null,
    "sortText": "checkValidity",
    "insertText": "->HTMLButtonElement.checkValidity",
    "additionalTextEdits": [{
      "range": {"start": {"line": 144, "character": 9}, "end": {"line": 144, "character": 10}},
      "newText": ""
      }]
  }]

