{
  "$defs": {
    "BuiltInModules": {
      "additionalProperties": false,
      "description": "`builtInModules`.",
      "properties": {
        "add": {
          "description": "Adds to the runtime's list.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "override": {
          "description": "Replaces the runtime's list.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "CacheObject": {
      "additionalProperties": false,
      "description": "The object form of `options.cache`.",
      "properties": {
        "compress": {
          "default": null,
          "description": "Compress the stored extraction. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "folder": {
          "default": null,
          "description": "The folder the entry is written to, relative to the working directory. Default:\n`.graph/cache` (`node_modules/.cache/dependency-cruiser` for a dependency-cruiser file).",
          "type": [
            "string",
            "null"
          ]
        },
        "strategy": {
          "anyOf": [
            {
              "$ref": "#/$defs/CacheStrategy"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "How changes are found: `metadata` (version control status and file metadata, the\ndefault) or `content` (every input hashed)."
        }
      },
      "type": "object"
    },
    "CacheStrategy": {
      "description": "How a cache decides what changed since the entry was written: dependency-cruiser's\n`cache.strategy` and `--cache-strategy`\n([coverage § Options](../../../docs/artifacts/dependency-cruiser-18.2.0-coverage.md#options),\n[Wave 3, Step 1](../../../docs/plans/pending/0003-wave-3-operations-surface-inner-loop.md#21-steps-for-sub-wave-3a-cache---affected-diff---exit-code-mode-strict)).",
      "oneOf": [
        {
          "const": "metadata",
          "description": "`git` status and diff against the recorded commit plus file size and modification time;\nonly what they name is hashed. The default.",
          "type": "string"
        },
        {
          "const": "content",
          "description": "Every input file hashed on every run.",
          "type": "string"
        }
      ]
    },
    "CacheValue": {
      "anyOf": [
        {
          "description": "`true`: on, in the default folder; `false`: off.",
          "type": "boolean"
        },
        {
          "description": "On, in this folder.",
          "type": "string"
        },
        {
          "$ref": "#/$defs/CacheObject",
          "description": "On, with each setting given."
        }
      ],
      "description": "`options.cache` in any of its forms."
    },
    "CachedInputFileSystem": {
      "additionalProperties": false,
      "description": "`enhancedResolveOptions.cachedInputFileSystem`.",
      "properties": {
        "cacheDuration": {
          "description": "Milliseconds a cached entry stays valid.",
          "format": "uint32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "CompoundFilter": {
      "additionalProperties": false,
      "description": "The compound form of a path filter.",
      "properties": {
        "dependencyTypes": {
          "description": "Dependency types to match (`doNotFollow`).",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "dynamic": {
          "description": "Whether to match dynamic imports (`exclude`).",
          "type": [
            "boolean",
            "null"
          ]
        },
        "path": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths to match."
        }
      },
      "type": "object"
    },
    "Define": {
      "additionalProperties": false,
      "description": "`defines.<name>`: a value read from a JSON file\n([FR-CFG-04](../../../docs/prd.md#fr-cfg-04)).",
      "properties": {
        "fromJson": {
          "description": "The JSON file, relative to the configuration file.",
          "type": "string"
        },
        "joinWith": {
          "description": "Joins an array of strings. Default `|`.",
          "type": [
            "string",
            "null"
          ]
        },
        "select": {
          "description": "A path expression: keys, `[*]`, `[n]`, separated by dots.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "fromJson"
      ],
      "type": "object"
    },
    "DependencyKind": {
      "enum": [
        "import",
        "inherits",
        "implements",
        "field",
        "signature",
        "body",
        "attribute",
        "generic-argument",
        "typeof",
        "call"
      ],
      "type": "string"
    },
    "DependencyRulesSchema": {
      "additionalProperties": false,
      "description": "`rules.dependencies`.",
      "properties": {
        "allowed": {
          "default": null,
          "description": "The only edges that may exist.",
          "items": {
            "$ref": "#/$defs/Rule"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "allowedSeverity": {
          "anyOf": [
            {
              "$ref": "#/$defs/Severity"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The severity of an edge outside `allowed`. Default `warn`."
        },
        "forbidden": {
          "default": null,
          "description": "Edges that must not exist.",
          "items": {
            "$ref": "#/$defs/Rule"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "required": {
          "default": null,
          "description": "Edges that must exist.",
          "items": {
            "$ref": "#/$defs/Rule"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "DependencyType": {
      "enum": [
        "aliased-subpath-import",
        "aliased-tsconfig-base-url",
        "aliased-tsconfig-paths",
        "aliased-tsconfig",
        "aliased-webpack",
        "aliased-workspace",
        "aliased",
        "amd-define",
        "amd-require",
        "amd-exotic-require",
        "core",
        "deprecated",
        "dynamic-import",
        "exotic-require",
        "export",
        "import-equals",
        "import",
        "jsdoc",
        "jsdoc-bracket-import",
        "jsdoc-import-tag",
        "local",
        "localmodule",
        "npm-bundled",
        "npm-dev",
        "npm-no-pkg",
        "npm-optional",
        "npm-peer",
        "npm-unknown",
        "npm",
        "pre-compilation-only",
        "process-get-builtin-module",
        "require",
        "triple-slash-amd-dependency",
        "triple-slash-directive",
        "triple-slash-file-reference",
        "triple-slash-type-reference",
        "type-import",
        "type-only",
        "undetermined",
        "unknown",
        "project",
        "package",
        "framework",
        "test-only",
        "signature-only",
        "unresolved",
        "stdlib",
        "site",
        "dynamic"
      ],
      "type": "string"
    },
    "DirectoryFilter": {
      "additionalProperties": false,
      "description": "One `languages.dotnet.directories` entry.",
      "properties": {
        "dir": {
          "description": "The folder, relative to the working directory.",
          "type": "string"
        },
        "filter": {
          "description": "A file-name glob such as `MyApp.*.dll`. Default: `*.dll`.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "dir"
      ],
      "type": "object"
    },
    "DotnetMode": {
      "description": "`languages.dotnet.mode` and `--mode`: how the .NET graph is read.",
      "oneOf": [
        {
          "const": "compiled",
          "description": "From the built assemblies and their portable PDBs: the gate.",
          "type": "string"
        },
        {
          "const": "source",
          "description": "From the `.cs` files with `tree-sitter-c-sharp`, without a build: namespace-level,\nevery edge `approximate`, the inner loop's answer.",
          "type": "string"
        }
      ]
    },
    "DotnetOptions": {
      "additionalProperties": false,
      "description": "`languages.dotnet`.",
      "properties": {
        "assemblies": {
          "description": "Assemblies to read instead of a solution's projects, as globs relative to the working\ndirectory (`ArchLoader.LoadAssembly`, `LoadAssemblies`).",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "configuration": {
          "description": "The build configuration whose output is read. Default: `Debug`.",
          "type": [
            "string",
            "null"
          ]
        },
        "directories": {
          "description": "Folders whose assemblies are read, each with an optional file-name filter\n(`LoadFilteredDirectory`).",
          "items": {
            "$ref": "#/$defs/DirectoryFilter"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "excludeProjects": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Project paths to leave out, as patterns."
        },
        "includeDependencies": {
          "description": "Also read the assemblies the loaded ones reference, when they sit beside them\n(`LoadAssembliesIncludingDependencies`). Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/DotnetMode"
            },
            {
              "type": "null"
            }
          ],
          "description": "How the graph is read: `compiled` (the default) from the built assemblies and portable\nPDBs, or `source` from the `.cs` files without a build. Source mode's edges are\nnamespace-level and marked `approximate`, and it is never the gate\n([ADR-0011](../../../docs/adr/0011-read-dotnet-assemblies-not-source.md))."
        },
        "namespaces": {
          "description": "Keep only types in these namespaces or below (`LoadNamespacesWithinAssembly`).",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "solution": {
          "description": "The `.sln` or `.slnx` to read. Default: the only one in the working directory.",
          "type": [
            "string",
            "null"
          ]
        },
        "targetFramework": {
          "description": "The target framework to read when a project has several. Default: the first listed.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "ElementCondition": {
      "description": "One of `ArchUnitNET`'s conditions (`Should()`), or `all`, `any`, `not` around more. The loader rejects any other key and names the nearest one, and an empty expression (only an empty `select.where` means \"no filter\"); `...That` forms (`dependOnAnyTypesThat`) take a nested selector.",
      "minProperties": 1,
      "properties": {
        "adhereToPlantUmlDiagram": {
          "description": "`adhereToPlantUmlDiagram`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "all": {
          "description": "Every item holds (`And()`, `AndShould()`).",
          "items": {
            "$ref": "#/$defs/ElementCondition"
          },
          "minItems": 1,
          "type": "array"
        },
        "any": {
          "description": "At least one item holds (`Or()`, `OrShould()`).",
          "items": {
            "$ref": "#/$defs/ElementCondition"
          },
          "minItems": 1,
          "type": "array"
        },
        "be": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`are`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "beAbstract": {
          "description": "`abstract`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: an `ABC` base or an `@abstractmethod`.",
          "type": "boolean"
        },
        "beAssignableTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`assignableTo`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "beCalledBy": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`calledBy`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "beConstructor": {
          "description": "`constructor`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "beDeclaredIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`declaredIn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "beEnums": {
          "description": "`enums`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (enumerations are ordinary classes): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beGeneric": {
          "description": "`generic`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (generic parameters are not recorded): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beImmutable": {
          "description": "`immutable`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: `@dataclass(frozen=True)`.",
          "type": "boolean"
        },
        "beInternal": {
          "description": "`internal`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beNested": {
          "description": "`nested`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "beNestedIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`nestedIn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "beNoConstructor": {
          "description": "`constructor`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "bePrivate": {
          "description": "`private`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "bePrivateProtected": {
          "description": "`privateProtected`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beProtected": {
          "description": "`protected`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beProtectedInternal": {
          "description": "`protectedInternal`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "bePublic": {
          "description": "`public`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "beReadOnly": {
          "description": "`readOnly`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: a `@property` without a setter.",
          "type": "boolean"
        },
        "beRecord": {
          "description": "`record`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beSealed": {
          "description": "`sealed`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beStatic": {
          "description": "`static`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `@staticmethod` and `@classmethod`.",
          "type": "boolean"
        },
        "beStructs": {
          "description": "`structs`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beValueTypes": {
          "description": "`valueTypes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "beVirtual": {
          "description": "`virtual`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. Python: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "callAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`callAny`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "dependOnAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`dependOnAny`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "exist": {
          "description": "`exist`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "getterVisibility": {
          "description": "The property's getter has this visibility (`HavePublicGetter` and its twins). Per value: `public`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected-internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private-protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "oneOf": [
            {
              "const": "public",
              "description": "`havePublicGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected",
              "description": "`haveProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "internal",
              "description": "`haveInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected-internal",
              "description": "`haveProtectedInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private",
              "description": "`havePrivateGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private-protected",
              "description": "`havePrivateProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            }
          ]
        },
        "haveAnyAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveAnyAttributes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "haveAnyAttributesWithArguments": {
          "description": "`haveAnyAttributesWithArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "array"
        },
        "haveAnyAttributesWithNamedArguments": {
          "description": "`haveAnyAttributesWithNamedArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "object"
        },
        "haveAssemblyQualifiedName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameMatching": {
          "description": "`haveAssemblyQualifiedNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "haveAssemblyQualifiedNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAttributeWithArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "array"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "haveAttributeWithNamedArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithNamedArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "object"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "haveDependencyInMethodBodyTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveDependencyInMethodBodyTo`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `new` expressions in method bodies. JavaScript: reads `new` expressions in method bodies. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "haveFieldMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFieldMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameMatching": {
          "description": "`haveFullNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "haveFullNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveGetter": {
          "description": "`haveGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "haveInitOnlySetter": {
          "description": "`haveInitOnlySetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInitSetter": {
          "description": "`haveInitOnlySetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInternalGetter": {
          "description": "`haveInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInternalSetter": {
          "description": "`haveInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveMethodMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMethodMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameMatching": {
          "description": "`haveNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "haveNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNoGetter": {
          "description": "`haveGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "haveNoSetter": {
          "description": "`haveSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "havePrivateGetter": {
          "description": "`havePrivateGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateProtectedGetter": {
          "description": "`havePrivateProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateProtectedSetter": {
          "description": "`havePrivateProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateSetter": {
          "description": "`havePrivateSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePropertyMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`havePropertyMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveProtectedGetter": {
          "description": "`haveProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedInternalGetter": {
          "description": "`haveProtectedInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedInternalSetter": {
          "description": "`haveProtectedInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedSetter": {
          "description": "`haveProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePublicGetter": {
          "description": "`havePublicGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePublicSetter": {
          "description": "`havePublicSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveReturnType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveReturnType`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the return type annotation. JavaScript: reads the return type annotation. Python: unanswerable (return annotations are not recorded): exit 3 unless `select.language` leaves it out."
        },
        "haveSetter": {
          "description": "`haveSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "implementAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "implementAnyInterfaces": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "implementInterface": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementInterface`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "not": {
          "allOf": [
            {
              "$ref": "#/$defs/ElementCondition"
            }
          ],
          "description": "The item does not hold."
        },
        "notAdhereToPlantUmlDiagram": {
          "description": "`adhereToPlantUmlDiagram`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "notBe": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`are`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notBeAbstract": {
          "description": "`abstract`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: an `ABC` base or an `@abstractmethod`.",
          "type": "boolean"
        },
        "notBeAssignableTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`assignableTo`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "notBeCalledBy": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`calledBy`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "notBeConstructor": {
          "description": "`constructor`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "notBeDeclaredIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`declaredIn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notBeEnums": {
          "description": "`enums`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (enumerations are ordinary classes): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeGeneric": {
          "description": "`generic`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (generic parameters are not recorded): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeImmutable": {
          "description": "`immutable`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: `@dataclass(frozen=True)`.",
          "type": "boolean"
        },
        "notBeInternal": {
          "description": "`internal`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeNested": {
          "description": "`nested`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "notBeNestedIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`nestedIn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notBePrivate": {
          "description": "`private`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "notBePrivateProtected": {
          "description": "`privateProtected`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeProtected": {
          "description": "`protected`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeProtectedInternal": {
          "description": "`protectedInternal`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBePublic": {
          "description": "`public`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "notBeReadOnly": {
          "description": "`readOnly`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: a `@property` without a setter.",
          "type": "boolean"
        },
        "notBeRecord": {
          "description": "`record`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeSealed": {
          "description": "`sealed`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeStatic": {
          "description": "`static`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `@staticmethod` and `@classmethod`.",
          "type": "boolean"
        },
        "notBeStructs": {
          "description": "`structs`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeValueTypes": {
          "description": "`valueTypes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notBeVirtual": {
          "description": "`virtual`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. Python: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notCallAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`callAny`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "notDependOnAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`dependOnAny`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notExist": {
          "description": "`exist`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "notHaveAnyAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveAnyAttributes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "notHaveAnyAttributesWithArguments": {
          "description": "`haveAnyAttributesWithArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "array"
        },
        "notHaveAnyAttributesWithNamedArguments": {
          "description": "`haveAnyAttributesWithNamedArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "object"
        },
        "notHaveAssemblyQualifiedName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "notHaveAssemblyQualifiedNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "notHaveAssemblyQualifiedNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "notHaveAssemblyQualifiedNameMatching": {
          "description": "`haveAssemblyQualifiedNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "notHaveAssemblyQualifiedNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "notHaveAttributeWithArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "array"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "notHaveAttributeWithNamedArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithNamedArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "object"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "notHaveDependencyInMethodBodyTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveDependencyInMethodBodyTo`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `new` expressions in method bodies. JavaScript: reads `new` expressions in method bodies. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "notHaveFieldMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFieldMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveFullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveFullNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveFullNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveFullNameMatching": {
          "description": "`haveFullNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "notHaveFullNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveGetter": {
          "description": "`haveGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "notHaveInitOnlySetter": {
          "description": "`haveInitOnlySetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveInternalGetter": {
          "description": "`haveInternalGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveInternalSetter": {
          "description": "`haveInternalSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveMethodMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMethodMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveNameMatching": {
          "description": "`haveNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "notHaveNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHavePrivateGetter": {
          "description": "`havePrivateGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePrivateProtectedGetter": {
          "description": "`havePrivateProtectedGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePrivateProtectedSetter": {
          "description": "`havePrivateProtectedSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePrivateSetter": {
          "description": "`havePrivateSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePropertyMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`havePropertyMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notHaveProtectedGetter": {
          "description": "`haveProtectedGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveProtectedInternalGetter": {
          "description": "`haveProtectedInternalGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveProtectedInternalSetter": {
          "description": "`haveProtectedInternalSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveProtectedSetter": {
          "description": "`haveProtectedSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePublicGetter": {
          "description": "`havePublicGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHavePublicSetter": {
          "description": "`havePublicSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "notHaveReturnType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveReturnType`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the return type annotation. JavaScript: reads the return type annotation. Python: unanswerable (return annotations are not recorded): exit 3 unless `select.language` leaves it out."
        },
        "notHaveSetter": {
          "description": "`haveSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "notImplementAnyInterfaces": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "notImplementInterface": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementInterface`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "notOnlyDependOn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyDependOn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "notOnlyHaveAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyHaveAttributes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "notResideInAssembly": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInAssembly`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "notResideInAssemblyMatching": {
          "description": "`resideInAssemblyMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "notResideInNamespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInNamespace`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path."
        },
        "notResideInNamespaceMatching": {
          "description": "`resideInNamespaceMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path.",
          "type": "string"
        },
        "onlyDependOn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyDependOn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "onlyHaveAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyHaveAttributes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "resideInAssembly": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInAssembly`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "resideInAssemblyMatching": {
          "description": "`resideInAssemblyMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "resideInNamespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInNamespace`. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path."
        },
        "resideInNamespaceMatching": {
          "description": "`resideInNamespaceMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path.",
          "type": "string"
        },
        "setterVisibility": {
          "description": "The property's setter has this visibility (`HavePublicSetter` and its twins). Per value: `public`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected-internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private-protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "oneOf": [
            {
              "const": "public",
              "description": "`havePublicSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected",
              "description": "`haveProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "internal",
              "description": "`haveInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected-internal",
              "description": "`haveProtectedInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private",
              "description": "`havePrivateSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private-protected",
              "description": "`havePrivateProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            }
          ]
        }
      },
      "type": "object"
    },
    "ElementPredicate": {
      "description": "One of `ArchUnitNET`'s predicates (`That()`), or `all`, `any`, `not` around more. The loader rejects any other key and names the nearest one, and an empty expression (only an empty `select.where` means \"no filter\"); `...That` forms (`dependOnAnyTypesThat`) take a nested selector.",
      "properties": {
        "all": {
          "description": "Every item holds (`And()`, `AndShould()`).",
          "items": {
            "$ref": "#/$defs/ElementPredicate"
          },
          "minItems": 1,
          "type": "array"
        },
        "any": {
          "description": "At least one item holds (`Or()`, `OrShould()`).",
          "items": {
            "$ref": "#/$defs/ElementPredicate"
          },
          "minItems": 1,
          "type": "array"
        },
        "are": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`are`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areAbstract": {
          "description": "`abstract`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: an `ABC` base or an `@abstractmethod`.",
          "type": "boolean"
        },
        "areAssignableTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`assignableTo`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "areCalledBy": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`calledBy`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "areConstructor": {
          "description": "`constructor`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "areConstructors": {
          "description": "`constructor`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "areDeclaredIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`declaredIn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areEnums": {
          "description": "`enums`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (enumerations are ordinary classes): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areGeneric": {
          "description": "`generic`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (generic parameters are not recorded): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areImmutable": {
          "description": "`immutable`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: `@dataclass(frozen=True)`.",
          "type": "boolean"
        },
        "areInternal": {
          "description": "`internal`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNested": {
          "description": "`nested`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "areNestedIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`nestedIn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areNoConstructors": {
          "description": "`constructor`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "areNot": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`are`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areNotAbstract": {
          "description": "`abstract`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: an `ABC` base or an `@abstractmethod`.",
          "type": "boolean"
        },
        "areNotAssignableTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`assignableTo`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "areNotCalledBy": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`calledBy`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "areNotConstructor": {
          "description": "`constructor`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `__init__`.",
          "type": "boolean"
        },
        "areNotDeclaredIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`declaredIn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areNotEnums": {
          "description": "`enums`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (enumerations are ordinary classes): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotGeneric": {
          "description": "`generic`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (generic parameters are not recorded): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotImmutable": {
          "description": "`immutable`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: `@dataclass(frozen=True)`.",
          "type": "boolean"
        },
        "areNotInternal": {
          "description": "`internal`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotNested": {
          "description": "`nested`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "boolean"
        },
        "areNotNestedIn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`nestedIn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "areNotPrivate": {
          "description": "`private`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "areNotPrivateProtected": {
          "description": "`privateProtected`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotProtected": {
          "description": "`protected`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotProtectedInternal": {
          "description": "`protectedInternal`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotPublic": {
          "description": "`public`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "areNotReadOnly": {
          "description": "`readOnly`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: a `@property` without a setter.",
          "type": "boolean"
        },
        "areNotRecord": {
          "description": "`record`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotSealed": {
          "description": "`sealed`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotStatic": {
          "description": "`static`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `@staticmethod` and `@classmethod`.",
          "type": "boolean"
        },
        "areNotStructs": {
          "description": "`structs`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotValueTypes": {
          "description": "`valueTypes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areNotVirtual": {
          "description": "`virtual`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. Python: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "arePrivate": {
          "description": "`private`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "arePrivateProtected": {
          "description": "`privateProtected`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areProtected": {
          "description": "`protected`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the `private` and `protected` modifiers and `#private` names on class members. JavaScript: reads the `private` and `protected` modifiers and `#private` names on class members. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areProtectedInternal": {
          "description": "`protectedInternal`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has only the leading-underscore convention): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "arePublic": {
          "description": "`public`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `export`: an exported declaration is public, any other internal to its module. JavaScript: reads `export`: an exported declaration is public, any other internal to its module. Python: reads the leading underscore: `_name` is private, any other name public.",
          "type": "boolean"
        },
        "areReadOnly": {
          "description": "`readOnly`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `readonly` fields and get-only accessors. JavaScript: reads `readonly` fields and get-only accessors. Python: a `@property` without a setter.",
          "type": "boolean"
        },
        "areRecord": {
          "description": "`record`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no record types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areSealed": {
          "description": "`sealed`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language cannot forbid subclassing): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areStatic": {
          "description": "`static`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: `@staticmethod` and `@classmethod`.",
          "type": "boolean"
        },
        "areStructs": {
          "description": "`structs`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areValueTypes": {
          "description": "`valueTypes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no value types): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "areVirtual": {
          "description": "`virtual`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out. Python: unanswerable (every method can be overridden): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "callAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`callAny`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "dependOnAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`dependOnAny`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotCallAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`callAny`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "doNotDependOnAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`dependOnAny`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveAnyAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveAnyAttributes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "doNotHaveAnyAttributesWithArguments": {
          "description": "`haveAnyAttributesWithArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "array"
        },
        "doNotHaveAnyAttributesWithNamedArguments": {
          "description": "`haveAnyAttributesWithNamedArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "object"
        },
        "doNotHaveAssemblyQualifiedName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveAssemblyQualifiedNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveAssemblyQualifiedNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveAssemblyQualifiedNameMatching": {
          "description": "`haveAssemblyQualifiedNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "doNotHaveAssemblyQualifiedNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveAttributeWithArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "array"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "doNotHaveAttributeWithNamedArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithNamedArguments`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "object"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "doNotHaveDependencyInMethodBodyTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveDependencyInMethodBodyTo`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `new` expressions in method bodies. JavaScript: reads `new` expressions in method bodies. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveFieldMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFieldMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveFullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveFullNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveFullNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveFullNameMatching": {
          "description": "`haveFullNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "doNotHaveFullNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveGetter": {
          "description": "`haveGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "doNotHaveInitOnlySetter": {
          "description": "`haveInitOnlySetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveInternalGetter": {
          "description": "`haveInternalGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveInternalSetter": {
          "description": "`haveInternalSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveMethodMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMethodMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameContaining`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameEndingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveNameMatching": {
          "description": "`haveNameMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "doNotHaveNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameStartingWith`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHavePrivateGetter": {
          "description": "`havePrivateGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePrivateProtectedGetter": {
          "description": "`havePrivateProtectedGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePrivateProtectedSetter": {
          "description": "`havePrivateProtectedSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePrivateSetter": {
          "description": "`havePrivateSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePropertyMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`havePropertyMemberWithName`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotHaveProtectedGetter": {
          "description": "`haveProtectedGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveProtectedInternalGetter": {
          "description": "`haveProtectedInternalGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveProtectedInternalSetter": {
          "description": "`haveProtectedInternalSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveProtectedSetter": {
          "description": "`haveProtectedSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePublicGetter": {
          "description": "`havePublicGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHavePublicSetter": {
          "description": "`havePublicSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "doNotHaveReturnType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveReturnType`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the return type annotation. JavaScript: reads the return type annotation. Python: unanswerable (return annotations are not recorded): exit 3 unless `select.language` leaves it out."
        },
        "doNotHaveSetter": {
          "description": "`haveSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "doNotImplementAnyInterfaces": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "doNotImplementInterface": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementInterface`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "doNotOnlyDependOn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyDependOn`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "doNotOnlyHaveAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyHaveAttributes`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "doNotResideInAssembly": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInAssembly`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "doNotResideInAssemblyMatching": {
          "description": "`resideInAssemblyMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "doNotResideInNamespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInNamespace`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path."
        },
        "doNotResideInNamespaceMatching": {
          "description": "`resideInNamespaceMatching`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path.",
          "type": "string"
        },
        "getterVisibility": {
          "description": "The property's getter has this visibility (`HavePublicGetter` and its twins). Per value: `public`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected-internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private-protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "oneOf": [
            {
              "const": "public",
              "description": "`havePublicGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected",
              "description": "`haveProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "internal",
              "description": "`haveInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected-internal",
              "description": "`haveProtectedInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private",
              "description": "`havePrivateGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private-protected",
              "description": "`havePrivateProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            }
          ]
        },
        "haveAnyAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveAnyAttributes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "haveAnyAttributesWithArguments": {
          "description": "`haveAnyAttributesWithArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "array"
        },
        "haveAnyAttributesWithNamedArguments": {
          "description": "`haveAnyAttributesWithNamedArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "type": "object"
        },
        "haveAssemblyQualifiedName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAssemblyQualifiedNameMatching": {
          "description": "`haveAssemblyQualifiedNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "haveAssemblyQualifiedNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveAssemblyQualifiedNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "haveAttributeWithArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "array"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "haveAttributeWithNamedArguments": {
          "additionalProperties": false,
          "description": "`haveAttributeWithNamedArguments`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorator arguments. JavaScript: reads decorator arguments. Python: reads decorator arguments.",
          "properties": {
            "arguments": {
              "type": "object"
            },
            "attribute": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "$ref": "#/$defs/ElementSelector"
                }
              ]
            }
          },
          "type": "object"
        },
        "haveDependencyInMethodBodyTo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveDependencyInMethodBodyTo`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `new` expressions in method bodies. JavaScript: reads `new` expressions in method bodies. Python: unanswerable (method bodies are not analysed): exit 3 unless `select.language` leaves it out."
        },
        "haveFieldMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFieldMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveFullNameMatching": {
          "description": "`haveFullNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "haveFullNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveFullNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveGetter": {
          "description": "`haveGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "haveInitOnlySetter": {
          "description": "`haveInitOnlySetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInitSetter": {
          "description": "`haveInitOnlySetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no init-only setters): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInternalGetter": {
          "description": "`haveInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveInternalSetter": {
          "description": "`haveInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveMethodMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveMethodMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameContaining": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameContaining`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameEndingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameEndingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNameMatching": {
          "description": "`haveNameMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it.",
          "type": "string"
        },
        "haveNameStartingWith": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`haveNameStartingWith`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveNoGetter": {
          "description": "`haveGetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "haveNoSetter": {
          "description": "`haveSetter`, negated. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "havePrivateGetter": {
          "description": "`havePrivateGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateProtectedGetter": {
          "description": "`havePrivateProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateProtectedSetter": {
          "description": "`havePrivateProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePrivateSetter": {
          "description": "`havePrivateSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePropertyMemberWithName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`havePropertyMemberWithName`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "haveProtectedGetter": {
          "description": "`haveProtectedGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedInternalGetter": {
          "description": "`haveProtectedInternalGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedInternalSetter": {
          "description": "`haveProtectedInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveProtectedSetter": {
          "description": "`haveProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePublicGetter": {
          "description": "`havePublicGetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "havePublicSetter": {
          "description": "`havePublicSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "type": "boolean"
        },
        "haveReturnType": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`haveReturnType`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads the return type annotation. JavaScript: reads the return type annotation. Python: unanswerable (return annotations are not recorded): exit 3 unless `select.language` leaves it out."
        },
        "haveSetter": {
          "description": "`haveSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: `@property` and `@name.setter`.",
          "type": "boolean"
        },
        "implementAny": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "implementAnyInterfaces": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementAnyInterfaces`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "implementInterface": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`implementInterface`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `extends` and `implements`. JavaScript: reads `extends` and `implements`. Python: reads base classes."
        },
        "not": {
          "allOf": [
            {
              "$ref": "#/$defs/ElementPredicate"
            }
          ],
          "description": "The item does not hold."
        },
        "onlyDependOn": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyDependOn`. .NET: answered as `ArchUnitNET` defines it. TypeScript: answered as `ArchUnitNET` defines it. JavaScript: answered as `ArchUnitNET` defines it. Python: answered as `ArchUnitNET` defines it."
        },
        "onlyHaveAttributes": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "$ref": "#/$defs/ElementSelector"
            }
          ],
          "description": "`onlyHaveAttributes`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads decorators. JavaScript: reads decorators. Python: reads decorators."
        },
        "resideInAssembly": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInAssembly`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out."
        },
        "resideInAssemblyMatching": {
          "description": "`resideInAssemblyMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out. Python: unanswerable (the language has no assemblies): exit 3 unless `select.language` leaves it out.",
          "type": "string"
        },
        "resideInNamespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ],
          "description": "`resideInNamespace`. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path."
        },
        "resideInNamespaceMatching": {
          "description": "`resideInNamespaceMatching`. .NET: answered as `ArchUnitNET` defines it. TypeScript: the namespace is the module's path. JavaScript: the namespace is the module's path. Python: the namespace is the dotted module path.",
          "type": "string"
        },
        "setterVisibility": {
          "description": "The property's setter has this visibility (`HavePublicSetter` and its twins). Per value: `public`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `protected-internal`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private`: .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out. `private-protected`: .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out.",
          "oneOf": [
            {
              "const": "public",
              "description": "`havePublicSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected",
              "description": "`haveProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "internal",
              "description": "`haveInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "protected-internal",
              "description": "`haveProtectedInternalSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private",
              "description": "`havePrivateSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: reads `get` and `set` accessors. JavaScript: reads `get` and `set` accessors. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            },
            {
              "const": "private-protected",
              "description": "`havePrivateProtectedSetter`. .NET: answered as `ArchUnitNET` defines it. TypeScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. JavaScript: unanswerable (the language has no such access level): exit 3 unless `select.language` leaves it out. Python: unanswerable (accessors have no access level of their own): exit 3 unless `select.language` leaves it out."
            }
          ]
        }
      },
      "type": "object"
    },
    "ElementSelector": {
      "additionalProperties": false,
      "description": "The objects a rule selects: `ArchUnitNET`'s `Types()`, `Classes()`, ..., then `That()`.",
      "properties": {
        "includeReferenced": {
          "description": "Also select the types the code references but does not define (`Types(true)`). Default false.",
          "type": "boolean"
        },
        "kind": {
          "description": "`Types()`, `Classes()`, `Interfaces()`, `Attributes()`, `Members()`, `FieldMembers()`, `MethodMembers()`, `PropertyMembers()`; `function` and `module` are TypeScript and Python additions.",
          "enum": [
            "type",
            "class",
            "interface",
            "attribute",
            "member",
            "field",
            "method",
            "property",
            "function",
            "module"
          ]
        },
        "language": {
          "anyOf": [
            {
              "enum": [
                "typescript",
                "javascript",
                "dotnet",
                "python"
              ]
            },
            {
              "items": {
                "enum": [
                  "typescript",
                  "javascript",
                  "dotnet",
                  "python"
                ]
              },
              "minItems": 1,
              "type": "array"
            }
          ],
          "description": "Only objects of these languages: scopes a rule that uses a key some language cannot answer (ADR-0014)."
        },
        "where": {
          "$ref": "#/$defs/ElementPredicate"
        }
      },
      "required": [
        "kind"
      ],
      "type": "object"
    },
    "EnhancedResolveOptions": {
      "additionalProperties": false,
      "description": "`enhancedResolveOptions`: the resolver settings `oxc_resolver` receives.",
      "properties": {
        "aliasFields": {
          "description": "`package.json` fields holding browser-style alias maps.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "cachedInputFileSystem": {
          "anyOf": [
            {
              "$ref": "#/$defs/CachedInputFileSystem"
            },
            {
              "type": "null"
            }
          ],
          "description": "The file-system cache settings."
        },
        "conditionNames": {
          "description": "Conditions to match in an export map.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "exportsFields": {
          "description": "`package.json` fields holding export maps.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "extensions": {
          "description": "Extensions to try.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "mainFields": {
          "description": "`package.json` fields naming the entry point.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "mainFiles": {
          "description": "File names tried for a directory.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "Examples": {
      "additionalProperties": false,
      "description": "`examples`: `\"from -> to\"` strings.",
      "properties": {
        "allowed": {
          "description": "Edges the rule must allow.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "forbidden": {
          "description": "Edges the rule must flag.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "ExtendsValue": {
      "anyOf": [
        {
          "description": "One entry.",
          "type": "string"
        },
        {
          "description": "Several, merged in order.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ],
      "description": "`extends`: one entry or several."
    },
    "ExternalModuleResolutionStrategy": {
      "enum": [
        "node_modules",
        "yarn-pnp"
      ],
      "type": "string"
    },
    "FileReference": {
      "additionalProperties": false,
      "description": "A configuration file the extractor reads: `tsConfig`, `babelConfig`.",
      "properties": {
        "fileName": {
          "description": "Path, relative to the working directory.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "FilterOption": {
      "description": "`focus`, `reaches`, `highlight`: the pattern form or the compound form.",
      "properties": {
        "depth": {
          "description": "`focus.depth`: how many steps of neighbours to show. Default 1.",
          "format": "uint32",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "path": {
          "description": "The paths the filter matches, joined.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "FilterValue": {
      "anyOf": [
        {
          "description": "One pattern.",
          "type": "string"
        },
        {
          "description": "Several patterns, joined with `|`.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "$ref": "#/$defs/FilterOption",
          "description": "The object form."
        }
      ],
      "description": "A filter in any of its three forms."
    },
    "FromRestriction": {
      "description": "`from`.",
      "properties": {
        "assembly": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the .NET assembly name must\nmatch (`CleanArchitecture.Web`, not the file name): the `assembly` of the types the code\nlayer declares in the module's file."
        },
        "assemblyNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the assembly name must not\nmatch; a module the code layer places no type in does not match."
        },
        "language": {
          "anyOf": [
            {
              "$ref": "#/$defs/OneOrMany_Language"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. The languages the module must be in\n(`typescript`, `javascript`, `dotnet`, `python`), one or a list; compared with the\nmodule's `language`."
        },
        "namespace": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns, any of which one of the\nmodule's `namespaces[]` must match (.NET namespaces; Python dotted module names)."
        },
        "namespaceNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns none of the module's\n`namespaces[]` may match; a module without `namespaces` does not match."
        },
        "orphan": {
          "description": "Match modules with no edges in or out.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "path": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths the source must match."
        },
        "pathNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths the source must not match."
        },
        "project": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the module's `project` must\nmatch: the `.csproj` (or loaded assembly) path for .NET, the top-level package for Python."
        },
        "projectNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the module's `project` must\nnot match; a module without `project` does not match."
        }
      },
      "type": "object"
    },
    "GraphFilter": {
      "additionalProperties": false,
      "description": "`graph` on a rule: the edges and modules taken out of the graph the rule sees\n([ADR-0038](../../../docs/adr/0038-a-rule-narrows-the-graph-it-sees.md)).",
      "properties": {
        "chainsThrough": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "On a reachability rule, a chain continues only from a module whose path matches; the\nchain's start and end need not match."
        },
        "dependencyTypesNot": {
          "description": "Every edge carrying any of these dependency types is removed (`[type-only]`: imports under\n`if TYPE_CHECKING:`). Unlike `to.dependencyTypesNot`, this cuts chains too.",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "ignore": {
          "description": "Edges removed, each `{ from, to }`: an edge whose importer's path matches `from` and whose\nresolved target matches `to` (a side left out matches every edge). An entry that matches\nno edge of the graph makes the rule vacuous unless the rule has `allowEmpty`:\nimport-linter's unmatched-ignore alerting.",
          "items": {
            "$ref": "#/$defs/IgnoredEdges"
          },
          "type": "array"
        },
        "modulesNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules whose path matches lose every edge from or to them."
        },
        "redirect": {
          "description": "Imports led to another module, each `{ to, into }`: an edge whose resolved target matches\n`to` leads to the module `into` in the rule's graph, before the other keys apply, and an\nedge a redirect leads back to its importer is removed. grimp's attribution of an import of\na module it does not walk to the root package that holds it\n([ADR-0051](../../../docs/adr/0051-a-rule-redirects-the-imports-it-sees.md)).",
          "items": {
            "$ref": "#/$defs/RedirectedImports"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "IgnoredEdges": {
      "additionalProperties": false,
      "description": "One `graph.ignore` entry.",
      "properties": {
        "from": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths the importing module must match."
        },
        "to": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths (or, for a module outside the repository, names) the edge's resolved target must\nmatch."
        }
      },
      "type": "object"
    },
    "IndependenceShorthand": {
      "additionalProperties": false,
      "description": "`rules.independence[]`: one `$1` fence\n([design § Shorthands](../../../docs/artifacts/design.md#shorthands)).",
      "properties": {
        "allowEmpty": {
          "description": "Opt out of liveness.",
          "type": "boolean"
        },
        "comment": {
          "description": "Why the modules are independent.",
          "type": [
            "string",
            "null"
          ]
        },
        "deprecated": {
          "description": "The release it was deprecated in; it is still evaluated\n([ADR-0007](../../../docs/adr/0007-vacuous-rules-fail-by-default.md)).",
          "type": [
            "string",
            "null"
          ]
        },
        "fix": {
          "description": "The fix.",
          "type": [
            "string",
            "null"
          ]
        },
        "graph": {
          "anyOf": [
            {
              "$ref": "#/$defs/GraphFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "What the expanded rule takes out of its graph\n([ADR-0038](../../../docs/adr/0038-a-rule-narrows-the-graph-it-sees.md))."
        },
        "name": {
          "description": "The rule name.",
          "type": "string"
        },
        "pattern": {
          "description": "A path pattern with exactly one capturing group naming the module, for example\n`^apps/web/src/features/([^/]+)/`.",
          "type": "string"
        },
        "replacedBy": {
          "description": "The rule, shorthand or ratchet that takes over; `config lint` checks it exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "severity": {
          "anyOf": [
            {
              "$ref": "#/$defs/Severity"
            },
            {
              "type": "null"
            }
          ],
          "description": "Severity. Default `error`."
        },
        "since": {
          "description": "The release it arrived in ([`crate::version`]); informational.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name",
        "pattern"
      ],
      "type": "object"
    },
    "KnownRule": {
      "description": "The rule of a `knownViolations` entry.",
      "properties": {
        "name": {
          "description": "The rule name.",
          "type": "string"
        },
        "severity": {
          "anyOf": [
            {
              "$ref": "#/$defs/Severity"
            },
            {
              "type": "null"
            }
          ],
          "description": "The severity it had."
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "KnownViolation": {
      "description": "One `knownViolations` entry: dependency-cruiser's shape, or a Rulebearing id with lifecycle\nfields.",
      "properties": {
        "cycle": {
          "description": "The cycle, for a cycle violation.",
          "items": true,
          "type": [
            "array",
            "null"
          ]
        },
        "expires": {
          "description": "The last day the exception applies.",
          "type": [
            "string",
            "null"
          ]
        },
        "from": {
          "description": "The violating module.",
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "description": "The stable id, when Rulebearing wrote the entry.",
          "type": [
            "string",
            "null"
          ]
        },
        "owner": {
          "description": "Who answers for the exception.",
          "type": [
            "string",
            "null"
          ]
        },
        "reason": {
          "description": "Why the exception stands, and what removes it.",
          "type": [
            "string",
            "null"
          ]
        },
        "rule": {
          "anyOf": [
            {
              "$ref": "#/$defs/KnownRule"
            },
            {
              "type": "null"
            }
          ],
          "description": "The rule."
        },
        "to": {
          "description": "The module depended on.",
          "type": [
            "string",
            "null"
          ]
        },
        "via": {
          "description": "The via chain, for a reachability violation.",
          "items": true,
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "Language": {
      "enum": [
        "typescript",
        "javascript",
        "dotnet",
        "python"
      ],
      "type": "string"
    },
    "LayersShorthand": {
      "additionalProperties": false,
      "description": "`rules.layers[]`: one `forbidden` rule per lower-to-higher pair\n([design § Shorthands](../../../docs/artifacts/design.md#shorthands)).",
      "properties": {
        "allowEmpty": {
          "description": "Opt out of liveness for every expanded rule.",
          "type": "boolean"
        },
        "comment": {
          "description": "Why the layering exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "deprecated": {
          "description": "The release it was deprecated in; it is still evaluated\n([ADR-0007](../../../docs/adr/0007-vacuous-rules-fail-by-default.md)).",
          "type": [
            "string",
            "null"
          ]
        },
        "fix": {
          "description": "The fix shared by every expanded rule.",
          "type": [
            "string",
            "null"
          ]
        },
        "graph": {
          "anyOf": [
            {
              "$ref": "#/$defs/GraphFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "What each expanded rule takes out of its graph, copied to every one\n([ADR-0038](../../../docs/adr/0038-a-rule-narrows-the-graph-it-sees.md))."
        },
        "layers": {
          "description": "Path patterns from the highest layer to the lowest; a lower layer may not depend on a\nhigher one.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "The rule name; each expanded rule is `<name>:<lower>-to-<higher>`.",
          "type": "string"
        },
        "replacedBy": {
          "description": "The rule, shorthand or ratchet that takes over; `config lint` checks it exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "severity": {
          "anyOf": [
            {
              "$ref": "#/$defs/Severity"
            },
            {
              "type": "null"
            }
          ],
          "description": "Severity of every expanded rule. Default `error`."
        },
        "since": {
          "description": "The release it arrived in ([`crate::version`]); informational.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name",
        "layers"
      ],
      "type": "object"
    },
    "ModuleRestriction": {
      "description": "`module`: the restriction of a dependents rule or a required rule.",
      "properties": {
        "numberOfDependentsLessThan": {
          "description": "Match modules with fewer matching dependents than this.",
          "format": "uint64",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "numberOfDependentsMoreThan": {
          "description": "Match modules with more matching dependents than this.",
          "format": "uint64",
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "path": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules to match."
        },
        "pathNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules not to match."
        }
      },
      "type": "object"
    },
    "ModuleSystem": {
      "enum": [
        "cjs",
        "es6",
        "amd",
        "tsd",
        "clr",
        "py"
      ],
      "type": "string"
    },
    "NativeLanguages": {
      "additionalProperties": false,
      "description": "`languages`.",
      "properties": {
        "dotnet": {
          "anyOf": [
            {
              "$ref": "#/$defs/DotnetOptions"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The .NET extractor's options (wave 2)."
        },
        "python": {
          "anyOf": [
            {
              "$ref": "#/$defs/PythonOptions"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The Python extractor's options (wave 2)."
        },
        "typescript": {
          "anyOf": [
            {
              "$ref": "#/$defs/TypeScriptOptions"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The TypeScript and JavaScript extractor's options (dependency-cruiser's flat option names)."
        }
      },
      "type": "object"
    },
    "NativeRules": {
      "additionalProperties": false,
      "description": "`rules`.",
      "properties": {
        "dependencies": {
          "anyOf": [
            {
              "$ref": "#/$defs/DependencyRulesSchema"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "dependency-cruiser's rule set."
        },
        "diagrams": {
          "default": null,
          "description": "Diagram rules: types that must adhere to a `PlantUML` component diagram.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "adhereTo": {
                "description": "The `PlantUML` component diagram, relative to the configuration (`AdhereToPlantUmlDiagram`).",
                "type": "string"
              },
              "allowEmpty": {
                "description": "An empty selection is not vacuous. Default false (ADR-0007).",
                "type": "boolean"
              },
              "comment": {
                "description": "Why the rule exists; the decision token (`adr:NNNN`) goes here.",
                "type": "string"
              },
              "deprecated": {
                "description": "The release the rule was deprecated in. The rule is still evaluated and a rule that matches nothing still fails unless `allowEmpty` (ADR-0007); `changelog` lists it as retired.",
                "type": "string"
              },
              "expires": {
                "description": "The last day the rule applies, YYYY-MM-DD; the run fails the day after, as for a dependency rule.",
                "format": "date",
                "type": "string"
              },
              "fix": {
                "description": "What to do about a violation; every reporter prints it.",
                "type": "string"
              },
              "name": {
                "description": "The rule's name, unique in the configuration.",
                "type": "string"
              },
              "owner": {
                "description": "Who answers for the rule.",
                "type": "string"
              },
              "replacedBy": {
                "description": "The rule that takes over from this one; `config lint` warns when no rule has that name.",
                "type": "string"
              },
              "select": {
                "$ref": "#/$defs/ElementSelector"
              },
              "severity": {
                "description": "Default `error`.",
                "enum": [
                  "error",
                  "warn",
                  "info",
                  "ignore"
                ]
              },
              "since": {
                "description": "The release the rule arrived in. A version string; compared as semver when it is one. Informational: it does not change how the rule is evaluated.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "select",
              "adhereTo"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "elements": {
          "default": null,
          "description": "Element rules: `ArchUnitNET`'s predicates and conditions over types, members and modules\nof every language, each key's per-language answer in its description.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "allowEmpty": {
                "description": "An empty selection passes (`WithoutRequiringPositiveResults()`). Default false: it is vacuous (ADR-0007).",
                "type": "boolean"
              },
              "because": {
                "description": "`Because(reason)`.",
                "type": "string"
              },
              "comment": {
                "description": "Why the rule exists; the decision token (`adr:NNNN`) goes here.",
                "type": "string"
              },
              "deprecated": {
                "description": "The release the rule was deprecated in. The rule is still evaluated and a rule that matches nothing still fails unless `allowEmpty` (ADR-0007); `changelog` lists it as retired.",
                "type": "string"
              },
              "expires": {
                "description": "The last day the rule applies, YYYY-MM-DD; the run fails the day after, as for a dependency rule.",
                "format": "date",
                "type": "string"
              },
              "fix": {
                "description": "What to do about a violation; every reporter prints it.",
                "type": "string"
              },
              "name": {
                "description": "The rule's name, unique in the configuration.",
                "type": "string"
              },
              "owner": {
                "description": "Who answers for the rule.",
                "type": "string"
              },
              "replacedBy": {
                "description": "The rule that takes over from this one; `config lint` warns when no rule has that name.",
                "type": "string"
              },
              "select": {
                "$ref": "#/$defs/ElementSelector"
              },
              "severity": {
                "description": "Default `error`.",
                "enum": [
                  "error",
                  "warn",
                  "info",
                  "ignore"
                ]
              },
              "should": {
                "$ref": "#/$defs/ElementCondition"
              },
              "since": {
                "description": "The release the rule arrived in. A version string; compared as semver when it is one. Informational: it does not change how the rule is evaluated.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "select",
              "should"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "independence": {
          "default": null,
          "description": "Independence contracts, expanded to one `$1` fence each.",
          "items": {
            "$ref": "#/$defs/IndependenceShorthand"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "layers": {
          "default": null,
          "description": "Layer models, expanded to one `forbidden` rule per lower-to-higher pair.",
          "items": {
            "$ref": "#/$defs/LayersShorthand"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "ratchets": {
          "default": null,
          "description": "Counts of direct edges that may only fall.",
          "items": {
            "$ref": "#/$defs/Ratchet"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "slices": {
          "default": null,
          "description": "Slice rules: types grouped by a namespace, module or path pattern.",
          "items": {
            "additionalProperties": false,
            "properties": {
              "allowEmpty": {
                "description": "An empty slicing is not vacuous.",
                "type": "boolean"
              },
              "comment": {
                "description": "Why the rule exists; the decision token (`adr:NNNN`) goes here.",
                "type": "string"
              },
              "deprecated": {
                "description": "The release the rule was deprecated in. The rule is still evaluated and a rule that matches nothing still fails unless `allowEmpty` (ADR-0007); `changelog` lists it as retired.",
                "type": "string"
              },
              "expires": {
                "description": "The last day the rule applies, YYYY-MM-DD; the run fails the day after, as for a dependency rule.",
                "format": "date",
                "type": "string"
              },
              "fix": {
                "description": "What to do about a violation; every reporter prints it.",
                "type": "string"
              },
              "graph": {
                "$ref": "#/$defs/GraphFilter",
                "description": "The module imports taken out before the slices are joined; `chainsThrough` is refused, since a slice edge is one import. A Rulebearing addition (ADR-0038)."
              },
              "ignore": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                ],
                "description": "Slice names left out."
              },
              "matching": {
                "description": "`Matching(\"Ns.(*)\")` or `MatchingWithPackages(\"Ns.(**)\")`: a namespace, dotted module or path pattern; either names a slice by what follows the prefix, and `Ns.(**)..` by its first segment.",
                "type": "string"
              },
              "name": {
                "description": "The rule's name, unique in the configuration.",
                "type": "string"
              },
              "owner": {
                "description": "Who answers for the rule.",
                "type": "string"
              },
              "replacedBy": {
                "description": "The rule that takes over from this one; `config lint` warns when no rule has that name.",
                "type": "string"
              },
              "segments": {
                "description": "Keep the first this many segments of each slice name, so a package and everything below it are one slice (import-linter's `acyclic_siblings`). A Rulebearing addition.",
                "minimum": 1,
                "type": "integer"
              },
              "severity": {
                "description": "Default `error`.",
                "enum": [
                  "error",
                  "warn",
                  "info",
                  "ignore"
                ]
              },
              "should": {
                "anyOf": [
                  {
                    "enum": [
                      "notDependOnEachOther",
                      "beFreeOfCycles"
                    ]
                  },
                  {
                    "items": {
                      "enum": [
                        "notDependOnEachOther",
                        "beFreeOfCycles"
                      ]
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "description": "`NotDependOnEachOther()`, `BeFreeOfCycles()`, or both."
              },
              "since": {
                "description": "The release the rule arrived in. A version string; compared as semver when it is one. Informational: it does not change how the rule is evaluated.",
                "type": "string"
              },
              "where": {
                "description": "A pattern a slice name must match to take part.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "matching",
              "should"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "OneOrMany_DependencyKind": {
      "anyOf": [
        {
          "$ref": "#/$defs/DependencyKind"
        },
        {
          "items": {
            "$ref": "#/$defs/DependencyKind"
          },
          "minItems": 1,
          "type": "array"
        }
      ]
    },
    "OneOrMany_Language": {
      "anyOf": [
        {
          "$ref": "#/$defs/Language"
        },
        {
          "items": {
            "$ref": "#/$defs/Language"
          },
          "minItems": 1,
          "type": "array"
        }
      ]
    },
    "OptionsSchema": {
      "description": "`options`: the TypeScript block's keys and every other dependency-cruiser option.",
      "properties": {
        "babelConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "The Babel config whose aliases apply."
        },
        "baseDir": {
          "description": "Paths in the output are relative to this directory. Default: the working directory.",
          "type": [
            "string",
            "null"
          ]
        },
        "builtInModules": {
          "anyOf": [
            {
              "$ref": "#/$defs/BuiltInModules"
            },
            {
              "type": "null"
            }
          ],
          "description": "Changes to the runtime's built-in module list."
        },
        "cache": {
          "anyOf": [
            {
              "$ref": "#/$defs/CacheValue"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The extraction cache (`--cache`): `true` for the default folder (`.graph/cache`), a\nfolder, `false` for off, or `{ folder, strategy, compress }`."
        },
        "collapse": {
          "default": null,
          "description": "`collapse`: a pattern or a folder depth."
        },
        "combinedDependencies": {
          "description": "Whether every `package.json` up the tree counts for npm classification. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "detectJSDocImports": {
          "description": "Whether JSDoc imports are dependencies. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "detectProcessBuiltinModuleCalls": {
          "description": "Whether `process.getBuiltinModule` calls are dependencies. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "doNotFollow": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules to record but not follow."
        },
        "enhancedResolveOptions": {
          "anyOf": [
            {
              "$ref": "#/$defs/EnhancedResolveOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Resolver settings."
        },
        "exclude": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules to leave out entirely."
        },
        "exoticRequireStrings": {
          "description": "Names other than `require` that load a module.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "experimentalStats": {
          "description": "Whether to record size and statement counts. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "externalModuleResolutionStrategy": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExternalModuleResolutionStrategy"
            },
            {
              "type": "null"
            }
          ],
          "description": "`node_modules` or Yarn Plug'n'Play. Default: `node_modules`."
        },
        "extraExtensionsToScan": {
          "description": "Extensions to scan beyond the parser's own.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "focus": {
          "anyOf": [
            {
              "$ref": "#/$defs/FilterValue"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "`focus`: a pattern, a list, or `{ path, depth }`."
        },
        "forceDeriveDependents": {
          "default": null,
          "description": "Always derive `dependents[]`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "highlight": {
          "anyOf": [
            {
              "$ref": "#/$defs/FilterValue"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "`highlight`: a pattern, a list, or `{ path }`."
        },
        "includeOnly": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "The only modules to include."
        },
        "knownViolations": {
          "default": null,
          "description": "Violations to report at a lower severity, keyed by stable id or by rule, from and to.",
          "items": {
            "$ref": "#/$defs/KnownViolation"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "maxDepth": {
          "description": "How deep to follow from the roots; `0` is unlimited. Default: `0`.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "metrics": {
          "default": null,
          "description": "Compute instability metrics (wave 2).",
          "type": [
            "boolean",
            "null"
          ]
        },
        "moduleSystems": {
          "description": "Which dependency forms to extract. Default: `es6`, `cjs`, `tsd`, `amd`.",
          "items": {
            "$ref": "#/$defs/ModuleSystem"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "parser": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parser"
            },
            {
              "type": "null"
            }
          ],
          "description": "Which parser dependency-cruiser would have used. Default: `acorn`, or `tsc` for\nTypeScript sources."
        },
        "prefix": {
          "default": null,
          "description": "The link prefix reporters put before a path.",
          "type": [
            "string",
            "null"
          ]
        },
        "preserveSymlinks": {
          "description": "Whether symlinks keep their own path. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "progress": {
          "default": null,
          "description": "`{ type: none | cli-feedback | performance-log | ndjson }`."
        },
        "reaches": {
          "anyOf": [
            {
              "$ref": "#/$defs/FilterValue"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "`reaches`: a pattern, a list, or `{ path }`."
        },
        "reporterOptions": {
          "default": null,
          "description": "Per-reporter settings."
        },
        "skipAnalysisNotInRules": {
          "default": null,
          "description": "Skip derivations no rule reads.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "default": null,
          "description": "The link suffix reporters put after a path.",
          "type": [
            "string",
            "null"
          ]
        },
        "tsConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "The tsconfig to resolve `paths` and `baseUrl` from."
        },
        "tsPreCompilationDeps": {
          "anyOf": [
            {
              "$ref": "#/$defs/TsPreCompilationDeps"
            },
            {
              "type": "null"
            }
          ],
          "description": "Whether edges that disappear after compilation are kept. Default: `false`."
        },
        "webpackConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/WebpackConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "The webpack config whose `resolve` applies."
        }
      },
      "type": "object"
    },
    "Parser": {
      "enum": [
        "acorn",
        "tsc",
        "swc"
      ],
      "type": "string"
    },
    "PathFilter": {
      "anyOf": [
        {
          "$ref": "#/$defs/Patterns",
          "description": "The short form, patterns only."
        },
        {
          "$ref": "#/$defs/CompoundFilter",
          "description": "The compound form."
        }
      ],
      "description": "`doNotFollow`, `exclude` and `includeOnly`: either patterns or the compound form."
    },
    "Patterns": {
      "anyOf": [
        {
          "description": "A single expression.",
          "type": "string"
        },
        {
          "description": "Several expressions, matched as an alternation.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ],
      "description": "One regular expression or several, dependency-cruiser's `REAsStringsType`."
    },
    "PythonOptions": {
      "additionalProperties": false,
      "description": "`languages.python`.",
      "properties": {
        "roots": {
          "description": "Import roots. Default: `src` when it exists, else the working directory.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "stubs": {
          "description": "Whether `.pyi` stubs are modules. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "version": {
          "description": "The Python version whose standard library is `stdlib`. Default: `3.13`.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "Ratchet": {
      "additionalProperties": false,
      "description": "`rules.ratchets[]`: a count of direct edges that may only fall\n([FR-RULE-06](../../../docs/prd.md#fr-rule-06)).",
      "properties": {
        "budget": {
          "description": "The budget file, `{ \"ceiling\": n }`.",
          "type": "string"
        },
        "comment": {
          "description": "Why it exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "deprecated": {
          "description": "The release it was deprecated in; it is still evaluated\n([ADR-0007](../../../docs/adr/0007-vacuous-rules-fail-by-default.md)).",
          "type": [
            "string",
            "null"
          ]
        },
        "fix": {
          "description": "The imperative to follow when the count rises.",
          "type": [
            "string",
            "null"
          ]
        },
        "from": {
          "$ref": "#/$defs/FromRestriction",
          "description": "Sources to count from."
        },
        "name": {
          "description": "The ratchet name.",
          "type": "string"
        },
        "owner": {
          "description": "Who answers for it.",
          "type": [
            "string",
            "null"
          ]
        },
        "replacedBy": {
          "description": "The rule, shorthand or ratchet that takes over; `config lint` checks it exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "since": {
          "description": "The release it arrived in ([`crate::version`]); informational.",
          "type": [
            "string",
            "null"
          ]
        },
        "to": {
          "$ref": "#/$defs/ToRestriction",
          "description": "Targets to count to; `$1` substitutes from `from.path`."
        }
      },
      "required": [
        "name",
        "from",
        "to",
        "budget"
      ],
      "type": "object"
    },
    "RedirectedImports": {
      "additionalProperties": false,
      "description": "One `graph.redirect` entry.",
      "properties": {
        "into": {
          "description": "The module path the edge leads to instead, as the document writes `source`.",
          "type": "string"
        },
        "to": {
          "$ref": "#/$defs/Patterns",
          "description": "Paths the edge's resolved target must match."
        }
      },
      "required": [
        "to",
        "into"
      ],
      "type": "object"
    },
    "Rule": {
      "description": "One dependency rule, in dependency-cruiser's shape plus the native metadata.",
      "properties": {
        "allowEmpty": {
          "description": "Opt out of liveness ([ADR-0007](../../../docs/adr/0007-vacuous-rules-fail-by-default.md)).",
          "type": "boolean"
        },
        "comment": {
          "description": "Why the rule exists; carries the decision token.",
          "type": [
            "string",
            "null"
          ]
        },
        "deprecated": {
          "description": "The release the rule was deprecated in; the rule is still evaluated and still live\n([ADR-0007](../../../docs/adr/0007-vacuous-rules-fail-by-default.md)).",
          "type": [
            "string",
            "null"
          ]
        },
        "examples": {
          "anyOf": [
            {
              "$ref": "#/$defs/Examples"
            },
            {
              "type": "null"
            }
          ],
          "description": "Edges that must pass and edges that must fail; `rulebearing test` runs them."
        },
        "expires": {
          "description": "The last day the rule applies; the run fails the day after.",
          "type": [
            "string",
            "null"
          ]
        },
        "fix": {
          "description": "The imperative to follow when the rule fires.",
          "type": [
            "string",
            "null"
          ]
        },
        "from": {
          "$ref": "#/$defs/FromRestriction",
          "default": {},
          "description": "The selecting side of a dependency rule."
        },
        "graph": {
          "anyOf": [
            {
              "$ref": "#/$defs/GraphFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only\n([ADR-0038](../../../docs/adr/0038-a-rule-narrows-the-graph-it-sees.md)). What to take out\nof the graph before this rule is evaluated: its direct edges and every chain it follows\nsee the rest. On `forbidden` rules only."
        },
        "module": {
          "anyOf": [
            {
              "$ref": "#/$defs/ModuleRestriction"
            },
            {
              "type": "null"
            }
          ],
          "description": "The module restriction of a dependents or required rule."
        },
        "name": {
          "description": "The rule name. Default `unnamed`.",
          "type": [
            "string",
            "null"
          ]
        },
        "owner": {
          "description": "Who answers for the rule.",
          "type": [
            "string",
            "null"
          ]
        },
        "replacedBy": {
          "description": "The rule that takes over from this one; `config lint` checks it exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "scope": {
          "anyOf": [
            {
              "$ref": "#/$defs/Scope"
            },
            {
              "type": "null"
            }
          ],
          "description": "`module`, `folder` or `project`. Default `module`."
        },
        "severity": {
          "anyOf": [
            {
              "$ref": "#/$defs/Severity"
            },
            {
              "type": "null"
            }
          ],
          "description": "`error`, `warn`, `info` or `ignore`. Default `warn`."
        },
        "since": {
          "description": "The release the rule arrived in ([`crate::version`]); informational.",
          "type": [
            "string",
            "null"
          ]
        },
        "to": {
          "$ref": "#/$defs/ToRestriction",
          "default": {},
          "description": "The target side."
        }
      },
      "type": "object"
    },
    "Scope": {
      "description": "`scope`: module, folder, or (an addition) project.",
      "oneOf": [
        {
          "const": "module",
          "description": "The default: the rule compares modules.",
          "type": "string"
        },
        {
          "const": "folder",
          "description": "The rule compares folders.",
          "type": "string"
        },
        {
          "const": "project",
          "description": "The rule compares projects: the `.csproj` or package each module belongs to, aggregated\nas folders are ([ADR-0066](../../../docs/adr/0066-project-scope-and-the-project-layer.md)).\nA native configuration's addition.",
          "type": "string"
        }
      ]
    },
    "Severity": {
      "enum": [
        "ignore",
        "info",
        "warn",
        "error"
      ],
      "type": "string"
    },
    "SpecifyLiteral": {
      "description": "The literal string `\"specify\"`.",
      "oneOf": [
        {
          "const": "specify",
          "description": "`\"specify\"`.",
          "type": "string"
        }
      ]
    },
    "ToRestriction": {
      "description": "`to`: every restriction dependency-cruiser 18.2.0 defines.",
      "properties": {
        "ancestor": {
          "description": "Match targets in a folder above the source.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "assembly": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the .NET assembly name must\nmatch (`CleanArchitecture.Web`, not the file name): the `assembly` of the types the code\nlayer declares in the module's file."
        },
        "assemblyNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the assembly name must not\nmatch; a module the code layer places no type in does not match."
        },
        "circular": {
          "description": "Match edges on a cycle.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "couldNotResolve": {
          "description": "Match unresolvable targets.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "dependencyKind": {
          "anyOf": [
            {
              "$ref": "#/$defs/OneOrMany_DependencyKind"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. The kinds of reference, any of which\nthe edge's `dependencyKind` must be (`import`, `inherits`, `implements`, `field`,\n`signature`, `body`, `attribute`, `generic-argument`, `typeof`, `call`), one or a list.\nA property of the edge, so it sits on `to` only."
        },
        "dependencyKindNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/OneOrMany_DependencyKind"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. The kinds of reference the edge's\n`dependencyKind` may not be; an edge without `dependencyKind` does not match."
        },
        "dependencyTypes": {
          "description": "Dependency types, any of which matches.",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "dependencyTypesNot": {
          "description": "Dependency types, none of which may be present.",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "dynamic": {
          "description": "Match `import()` edges.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "exoticRequire": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "The exotic require names to match."
        },
        "exoticRequireNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "The exotic require names not to match."
        },
        "exoticallyRequired": {
          "description": "Match edges formed by an exotic require.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "language": {
          "anyOf": [
            {
              "$ref": "#/$defs/OneOrMany_Language"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. The languages the module must be in\n(`typescript`, `javascript`, `dotnet`, `python`), one or a list; compared with the\nmodule's `language`."
        },
        "license": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Licences to match (wave 2)."
        },
        "licenseNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Licences not to match (wave 2)."
        },
        "moreThanOneDependencyType": {
          "description": "Match edges whose target is depended on in more than one way.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "moreUnstable": {
          "description": "Match targets more unstable than the source (needs `metrics`, wave 2).",
          "type": [
            "boolean",
            "null"
          ]
        },
        "namespace": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns, any of which one of the\nmodule's `namespaces[]` must match (.NET namespaces; Python dotted module names)."
        },
        "namespaceNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns none of the module's\n`namespaces[]` may match; a module without `namespaces` does not match."
        },
        "path": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths the target must match; `$0` to `$9` substitute captures from `from.path`."
        },
        "pathNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paths the target must not match."
        },
        "preCompilationOnly": {
          "description": "Match edges that disappear after compilation.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "project": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the module's `project` must\nmatch: the `.csproj` (or loaded assembly) path for .NET, the top-level package for Python."
        },
        "projectNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rulebearing addition, native configurations only. Patterns the module's `project` must\nnot match; a module without `project` does not match."
        },
        "reachable": {
          "description": "Reachability: match modules the `from` modules reach (or do not reach).",
          "type": [
            "boolean",
            "null"
          ]
        },
        "via": {
          "anyOf": [
            {
              "$ref": "#/$defs/ViaRestriction"
            },
            {
              "type": "null"
            }
          ],
          "description": "Cycle members, some of which match."
        },
        "viaNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Shorthand for `viaOnly.pathNot`."
        },
        "viaOnly": {
          "anyOf": [
            {
              "$ref": "#/$defs/ViaRestriction"
            },
            {
              "type": "null"
            }
          ],
          "description": "Cycle members, all of which match."
        },
        "viaSomeNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Shorthand for `via.pathNot`."
        }
      },
      "type": "object"
    },
    "TsPreCompilationDeps": {
      "anyOf": [
        {
          "description": "Include (`true`) or drop (`false`) edges that vanish after compilation.",
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/SpecifyLiteral",
          "description": "Include them and mark each with `preCompilationOnly`."
        }
      ],
      "description": "`tsPreCompilationDeps`: `true`, `false` or `\"specify\"`."
    },
    "TypeScriptOptions": {
      "additionalProperties": false,
      "description": "`languages.typescript`, and dependency-cruiser's flat options that alias into it.",
      "properties": {
        "babelConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "The Babel config whose aliases apply."
        },
        "baseDir": {
          "description": "Paths in the output are relative to this directory. Default: the working directory.",
          "type": [
            "string",
            "null"
          ]
        },
        "builtInModules": {
          "anyOf": [
            {
              "$ref": "#/$defs/BuiltInModules"
            },
            {
              "type": "null"
            }
          ],
          "description": "Changes to the runtime's built-in module list."
        },
        "combinedDependencies": {
          "description": "Whether every `package.json` up the tree counts for npm classification. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "detectJSDocImports": {
          "description": "Whether JSDoc imports are dependencies. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "detectProcessBuiltinModuleCalls": {
          "description": "Whether `process.getBuiltinModule` calls are dependencies. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "doNotFollow": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules to record but not follow."
        },
        "enhancedResolveOptions": {
          "anyOf": [
            {
              "$ref": "#/$defs/EnhancedResolveOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Resolver settings."
        },
        "exclude": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Modules to leave out entirely."
        },
        "exoticRequireStrings": {
          "description": "Names other than `require` that load a module.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "experimentalStats": {
          "description": "Whether to record size and statement counts. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "externalModuleResolutionStrategy": {
          "anyOf": [
            {
              "$ref": "#/$defs/ExternalModuleResolutionStrategy"
            },
            {
              "type": "null"
            }
          ],
          "description": "`node_modules` or Yarn Plug'n'Play. Default: `node_modules`."
        },
        "extraExtensionsToScan": {
          "description": "Extensions to scan beyond the parser's own.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "includeOnly": {
          "anyOf": [
            {
              "$ref": "#/$defs/PathFilter"
            },
            {
              "type": "null"
            }
          ],
          "description": "The only modules to include."
        },
        "maxDepth": {
          "description": "How deep to follow from the roots; `0` is unlimited. Default: `0`.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "moduleSystems": {
          "description": "Which dependency forms to extract. Default: `es6`, `cjs`, `tsd`, `amd`.",
          "items": {
            "$ref": "#/$defs/ModuleSystem"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "parser": {
          "anyOf": [
            {
              "$ref": "#/$defs/Parser"
            },
            {
              "type": "null"
            }
          ],
          "description": "Which parser dependency-cruiser would have used. Default: `acorn`, or `tsc` for\nTypeScript sources."
        },
        "preserveSymlinks": {
          "description": "Whether symlinks keep their own path. Default: `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "tsConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/FileReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "The tsconfig to resolve `paths` and `baseUrl` from."
        },
        "tsPreCompilationDeps": {
          "anyOf": [
            {
              "$ref": "#/$defs/TsPreCompilationDeps"
            },
            {
              "type": "null"
            }
          ],
          "description": "Whether edges that disappear after compilation are kept. Default: `false`."
        },
        "webpackConfig": {
          "anyOf": [
            {
              "$ref": "#/$defs/WebpackConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "The webpack config whose `resolve` applies."
        }
      },
      "type": "object"
    },
    "ViaObject": {
      "description": "The object form of `via`.",
      "properties": {
        "dependencyTypes": {
          "description": "Dependency types a step must have.",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "dependencyTypesNot": {
          "description": "Dependency types a step must not have.",
          "items": {
            "$ref": "#/$defs/DependencyType"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "path": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Cycle members to match."
        },
        "pathNot": {
          "anyOf": [
            {
              "$ref": "#/$defs/Patterns"
            },
            {
              "type": "null"
            }
          ],
          "description": "Cycle members not to match."
        }
      },
      "type": "object"
    },
    "ViaRestriction": {
      "anyOf": [
        {
          "$ref": "#/$defs/Patterns",
          "description": "`via: \"pattern\"` or `via: [\"a\", \"b\"]`."
        },
        {
          "$ref": "#/$defs/ViaObject",
          "description": "`via: { path, pathNot, dependencyTypes, dependencyTypesNot }`."
        }
      ],
      "description": "`via` and `viaOnly`: the pattern form or the object form."
    },
    "WebpackConfig": {
      "additionalProperties": false,
      "description": "`webpackConfig`.",
      "properties": {
        "arguments": {
          "description": "The `arguments` passed to a function-shaped config."
        },
        "env": {
          "description": "The `env` passed to a function-shaped config."
        },
        "fileName": {
          "description": "Path, relative to the working directory.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    }
  },
  "$id": "https://benbahrenburg.github.io/rulebearing/schema/config-v1.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "A native configuration file: `rulebearing.yaml`, `.json`, `.jsonc` or `.toml`.",
  "properties": {
    "$schema": {
      "default": null,
      "description": "The schema this file is written against.",
      "type": [
        "string",
        "null"
      ]
    },
    "allowEmpty": {
      "default": null,
      "description": "The rules allowed to match nothing: names of dependency rules (`allowed[N]` for the Nth\n`allowed` entry), ratchets, and element, slice and diagram rules. A name that is none of\nthese is an error, so an exception cannot outlive its rule (ADR-0032).",
      "items": {
        "type": "string"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "allowed": {
      "default": null,
      "description": "dependency-cruiser's `allowed`, legal at the same place.",
      "items": {
        "$ref": "#/$defs/Rule"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "allowedSeverity": {
      "anyOf": [
        {
          "$ref": "#/$defs/Severity"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "dependency-cruiser's `allowedSeverity`, legal at the same place."
    },
    "defines": {
      "additionalProperties": {
        "$ref": "#/$defs/Define"
      },
      "default": null,
      "description": "Named values read from JSON files, substituted into patterns as `${name}`.",
      "type": [
        "object",
        "null"
      ]
    },
    "extends": {
      "anyOf": [
        {
          "$ref": "#/$defs/ExtendsValue"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Files, npm packages, `dependency-cruiser/configs/<preset>` or `rulebearing:<preset>` to\nextend; later entries are merged under earlier ones and this file wins."
    },
    "forbidden": {
      "default": null,
      "description": "dependency-cruiser's `forbidden`, legal at the same place.",
      "items": {
        "$ref": "#/$defs/Rule"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "languages": {
      "anyOf": [
        {
          "$ref": "#/$defs/NativeLanguages"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Per-language settings."
    },
    "options": {
      "anyOf": [
        {
          "$ref": "#/$defs/OptionsSchema"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Every dependency-cruiser option, unchanged."
    },
    "required": {
      "default": null,
      "description": "dependency-cruiser's `required`, legal at the same place.",
      "items": {
        "$ref": "#/$defs/Rule"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "rules": {
      "anyOf": [
        {
          "$ref": "#/$defs/NativeRules"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The rule families."
    }
  },
  "title": "Rulebearing configuration",
  "type": "object"
}
