[
  {
    "name": "small (4 diagnostics, 2 unused vars + import + type)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///main.go",
      "diagnostics": [
        { "range": { "start": { "line": 1, "character": 5 }, "end": { "line": 1, "character": 15 } }, "severity": 2, "message": "declared and not used: unusedVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 3, "character": 5 }, "end": { "line": 3, "character": 15 } }, "severity": 2, "message": "declared and not used: anotherVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 20, "character": 0 }, "end": { "line": 20, "character": 10 } }, "severity": 2, "message": "\"os\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 30, "character": 5 }, "end": { "line": 30, "character": 15 } }, "severity": 1, "message": "cannot use str (type string) as type int in assignment", "code": "Assignment", "source": "gopls" }
      ]
    }
  },
  {
    "name": "medium (13 diagnostics, high dedup potential)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///server.go",
      "diagnostics": [
        { "range": { "start": { "line": 1, "character": 5 }, "end": { "line": 1, "character": 13 } }, "severity": 2, "message": "declared and not used: unusedVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 2, "character": 5 }, "end": { "line": 2, "character": 15 } }, "severity": 2, "message": "declared and not used: anotherVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 3, "character": 5 }, "end": { "line": 3, "character": 8 } }, "severity": 2, "message": "declared and not used: x", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 4, "character": 5 }, "end": { "line": 4, "character": 10 } }, "severity": 2, "message": "declared and not used: temp", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 5, "character": 5 }, "end": { "line": 5, "character": 12 } }, "severity": 2, "message": "declared and not used: result", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 6, "character": 5 }, "end": { "line": 6, "character": 11 } }, "severity": 2, "message": "declared and not used: count", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 7, "character": 5 }, "end": { "line": 7, "character": 11 } }, "severity": 2, "message": "declared and not used: index", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 8, "character": 5 }, "end": { "line": 8, "character": 11 } }, "severity": 2, "message": "declared and not used: value", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 9, "character": 5 }, "end": { "line": 9, "character": 10 } }, "severity": 2, "message": "declared and not used: data", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 20, "character": 0 }, "end": { "line": 20, "character": 10 } }, "severity": 2, "message": "\"os\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 21, "character": 0 }, "end": { "line": 21, "character": 10 } }, "severity": 2, "message": "\"fmt\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 30, "character": 5 }, "end": { "line": 30, "character": 15 } }, "severity": 1, "message": "cannot use str (type string) as type int in assignment", "code": "Assignment", "source": "gopls" },
        { "range": { "start": { "line": 35, "character": 10 }, "end": { "line": 35, "character": 20 } }, "severity": 2, "message": "param paramName is unused", "code": "unusedparam", "source": "gopls" }
      ]
    }
  },
  {
    "name": "large (20 diagnostics, realistic gopls output)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///cmd/app.go",
      "diagnostics": [
        { "range": { "start": { "line": 1, "character": 5 }, "end": { "line": 1, "character": 13 } }, "severity": 2, "message": "declared and not used: unusedVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 2, "character": 5 }, "end": { "line": 2, "character": 15 } }, "severity": 2, "message": "declared and not used: anotherVar", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 3, "character": 5 }, "end": { "line": 3, "character": 8 } }, "severity": 2, "message": "declared and not used: x", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 4, "character": 5 }, "end": { "line": 4, "character": 10 } }, "severity": 2, "message": "declared and not used: temp", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 5, "character": 5 }, "end": { "line": 5, "character": 12 } }, "severity": 2, "message": "declared and not used: result", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 6, "character": 5 }, "end": { "line": 6, "character": 11 } }, "severity": 2, "message": "declared and not used: count", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 7, "character": 5 }, "end": { "line": 7, "character": 11 } }, "severity": 2, "message": "declared and not used: value", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 8, "character": 5 }, "end": { "line": 8, "character": 10 } }, "severity": 2, "message": "declared and not used: data", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 9, "character": 5 }, "end": { "line": 9, "character": 11 } }, "severity": 2, "message": "declared and not used: index", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 10, "character": 5 }, "end": { "line": 10, "character": 11 } }, "severity": 2, "message": "declared and not used: total", "code": "UnusedVar", "source": "gopls" },
        { "range": { "start": { "line": 12, "character": 0 }, "end": { "line": 12, "character": 10 } }, "severity": 2, "message": "\"os\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 13, "character": 0 }, "end": { "line": 13, "character": 10 } }, "severity": 2, "message": "\"fmt\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 14, "character": 0 }, "end": { "line": 14, "character": 10 } }, "severity": 2, "message": "\"strings\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 15, "character": 0 }, "end": { "line": 15, "character": 10 } }, "severity": 2, "message": "\"net/http\" imported and not used", "code": "UnusedImport", "source": "gopls" },
        { "range": { "start": { "line": 17, "character": 5 }, "end": { "line": 17, "character": 15 } }, "severity": 1, "message": "cannot use str (type string) as type int in assignment", "code": "Assignment", "source": "gopls" },
        { "range": { "start": { "line": 20, "character": 5 }, "end": { "line": 20, "character": 15 } }, "severity": 1, "message": "cannot use val (type float64) as type int in assignment", "code": "Assignment", "source": "gopls" },
        { "range": { "start": { "line": 25, "character": 10 }, "end": { "line": 25, "character": 20 } }, "severity": 2, "message": "param req is unused", "code": "unusedparam", "source": "gopls" },
        { "range": { "start": { "line": 28, "character": 10 }, "end": { "line": 28, "character": 20 } }, "severity": 2, "message": "param ctx is unused", "code": "unusedparam", "source": "gopls" },
        { "range": { "start": { "line": 30, "character": 5 }, "end": { "line": 30, "character": 18 } }, "severity": 3, "message": "ineffectual assignment to field `Name`", "code": "SA4005", "source": "gopls" },
        { "range": { "start": { "line": 32, "character": 0 }, "end": { "line": 32, "character": 12 } }, "severity": 2, "message": "unused function: helperFunc", "code": "UnusedFunction", "source": "gopls" }
      ]
    }
  }
]
