code: function tryComputeIndentationForListItem(startPos, endPos, parentStartLine, range, inheritedIndentation) {
                  if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos) ||
                      ts.rangeContainsStartEnd(range, startPos, endPos) /* Not to miss zero-range nodes e.g. JsxText */) {
                      if (inheritedIndentation !== -1 /* Unknown */) {
                          return inheritedIndentation;
                      }
                  }
                  else {
                      var startLine = sourceFile.getLineAndCharacterOfPosition(startPos).line;
                      var startLinePosition = ts.getLineStartPositionForPosition(startPos, sourceFile);
                      var column = formatting.SmartIndenter.findFirstNonWhitespaceColumn(startLinePosition, startPos, sourceFile, options);
                      if (startLine !== parentStartLine || startPos === column) {
                          // Use the base indent size if it is greater than
                          // the indentation of the inherited predecessor.
                          var baseIndentSize = formatting.SmartIndenter.getBaseIndentation(options);
                          return baseIndentSize > column ? baseIndentSize : column;
                      }
                  }
                  return -1 /* Unknown */;
              }
docs: local functions Tries to compute the indentation for a list element.
  If list element is not in range then
  function will pick its actual indentation
  so it can be pushed downstream as inherited indentation.
  If list element is in the range - its indentation will be equal
  to inherited indentation from its predecessors.