{
  "date": "2026-10-24",
  "timezone": "Asia/Shanghai",
  "issue": 41,
  "sourceTag": "jdk-17.0.12+7 (separate mechanism source)",
  "environment": {
    "os": "macOS-27.0.1-arm64-arm-64bit",
    "architecture": "arm64",
    "javaVersion": "openjdk version \"17.0.19\" 2026-04-21 LTS\nOpenJDK Runtime Environment (build 17.0.19+11-LTS)\nOpenJDK 64-Bit Server VM (build 17.0.19+11-LTS, mixed mode, sharing)"
  },
  "runs": [
    {
      "name": "types",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "types"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:11:58.450845+00:00",
      "exit": 0,
      "expectedExit": 0,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT CheckedDeclaration (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/CheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass CheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                      ^\n1 个错误\nREJECT ReassignedResource (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0/java-senior.vFsvcS/compile-examples/ReassignedResource.java:4: 错误: 用作 try-with-resources 资源的变量 reader 既不是最终变量, 也不是实际上的最终变量\n    try(reader) { }\n        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof/effectively-final resource; rejects 6 invalid programs\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
      "stderr": "Picked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-s5v5ltt0\n",
      "remainingPrivateResources": []
    },
    {
      "name": "reflect",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "reflect"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:12:00.462518+00:00",
      "exit": 0,
      "expectedExit": 0,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "PASS annotation CLASS=null RUNTIME!=null\nPASS default retention CLASS; repeatable container expands read/write\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS wrong signature/argument/class proxy rejected, corrected read=o-1:ok\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS declared IOException and RuntimeException/Error pass through unchanged\nPASS primitive null -> NPE, wrong type -> CCE, corrected Integer -> 7\nPASS self-invocation bypasses handler (intercepted=1)\nPASS default dispatch explicit, Object equals/hashCode/toString handled\nPASS reflection/annotation/proxy scenarios=11\n",
      "stderr": "Picked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-2fb7v1rm\n注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-2fb7v1rm\n",
      "remainingPrivateResources": []
    },
    {
      "name": "all",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "all"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:12:00.887771+00:00",
      "exit": 0,
      "expectedExit": 0,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "PASS two Conditions: bounded buffer sum=500500\nPASS lockInterruptibly exits while lock remains held\nPASS core=1 max=2 queue=1: fourth task rejected\nPASS DiscardPolicy leaves submitted Future unfinished\nPASS FutureTask cancel(false): cancelled result, continuing computation\nPASS CompletableFuture timeout completes result, not underlying side effect\nPASS LRU get/update order, bounded capacity, eviction\nPASS token bucket: atomic burst=3, fractional refill retained, idle cap\nPASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT CheckedDeclaration (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/CheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass CheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                      ^\n1 个错误\nREJECT ReassignedResource (javac exit nonzero)\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m/java-senior.IIAvdW/compile-examples/ReassignedResource.java:4: 错误: 用作 try-with-resources 资源的变量 reader 既不是最终变量, 也不是实际上的最终变量\n    try(reader) { }\n        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof/effectively-final resource; rejects 6 invalid programs\nPASS annotation CLASS=null RUNTIME!=null\nPASS default retention CLASS; repeatable container expands read/write\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS wrong signature/argument/class proxy rejected, corrected read=o-1:ok\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS declared IOException and RuntimeException/Error pass through unchanged\nPASS primitive null -> NPE, wrong type -> CCE, corrected Integer -> 7\nPASS self-invocation bypasses handler (intercepted=1)\nPASS default dispatch explicit, Object equals/hashCode/toString handled\nPASS reflection/annotation/proxy scenarios=11\n",
      "stderr": "Picked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\nPicked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-urycha7m\n",
      "remainingPrivateResources": []
    },
    {
      "name": "unknown",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "invalid-u04"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:12:03.109133+00:00",
      "exit": 2,
      "expectedExit": 2,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "",
      "stderr": "Usage: run.sh [all|locks|pool|async|algorithms|types|reflect]\n",
      "remainingPrivateResources": []
    },
    {
      "name": "extra-argument",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "types",
        "extra"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:12:03.112198+00:00",
      "exit": 2,
      "expectedExit": 2,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "",
      "stderr": "Usage: run.sh [all|locks|pool|async|algorithms|types|reflect]\n",
      "remainingPrivateResources": []
    },
    {
      "name": "invalid-java-home",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "types"
      ],
      "javaHome": "/tmp/u04-no-such-jdk",
      "startedUtc": "2026-10-24T14:12:03.115047+00:00",
      "exit": 2,
      "expectedExit": 2,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "",
      "stderr": "JAVA_HOME 必须包含 JDK 17 的 java、javac、javap。\n",
      "remainingPrivateResources": []
    },
    {
      "name": "wrong-jdk",
      "command": [
        "bash",
        "labs/java-senior/run.sh",
        "types"
      ],
      "javaHome": "/Library/Java/JavaVirtualMachines/liberica-jdk-21.jdk/Contents/Home",
      "startedUtc": "2026-10-24T14:12:03.119797+00:00",
      "exit": 2,
      "expectedExit": 2,
      "timeoutSeconds": 90,
      "timedOut": false,
      "stdout": "",
      "stderr": "本入口固定 JDK 17；当前版本：Picked up JAVA_TOOL_OPTIONS: -Xmx128m -Djava.io.tmpdir=/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-u04-capture-1r3xs8bx\nopenjdk version \"21.0.11\" 2026-04-21 LTS\nOpenJDK Runtime Environment (build 21.0.11+11-LTS)\nOpenJDK 64-Bit Server VM (build 21.0.11+11-LTS, mixed mode, sharing)\n",
      "remainingPrivateResources": []
    }
  ],
  "limits": "Real local Java SE semantics with synthetic resources; no database, network, performance, Native Image or other JDK claims.",
  "files": {
    "labs/java-senior/run.sh": "6626b6b189c7a5124b0250f6d92071cbbbfae4d53ea95ef2c15170214aceb2b6",
    "labs/java-senior/TypeProbe.java": "d9712f5f94714775eebd0d68cf772d310aea6e5275023734b0e8e09b3472fdd1",
    "labs/java-senior/ReflectionProbe.java": "a3d28b085eb31a3eedcc4f5bade7a4a7e8a96d33899bfd9e62307d0539c55736",
    "labs/java-senior/SeniorProbe.java": "904c42feb76e4b26c9a4c7fa19974539f6f54c4ce9c8129adf98aeff80a5c785",
    "labs/java-senior/AlgorithmProbe.java": "30870f10f5852df3bbf5a6f33f02a8afa3e70f2776b51cd921d21ecb89c8211b"
  },
  "tdd": [
    {
      "case": "01-unknown-green",
      "observation": {
        "expectedExit": 2,
        "actualExit": 2,
        "stdout": "",
        "stderr": "Usage: run.sh [all|locks|pool|async|algorithms|types|reflect]\n"
      }
    },
    {
      "case": "01-unknown-red",
      "observation": {
        "command": "bash labs/java-senior/run.sh unknown",
        "expectedExit": 2,
        "actualExit": 1,
        "stdout": "",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nException in thread \"main\" java.lang.AssertionError: unknown mode\n\tat SeniorProbe.check(SeniorProbe.java:8)\n\tat SeniorProbe.main(SeniorProbe.java:92)\n"
      }
    },
    {
      "case": "02-values-green",
      "observation": {
        "exit": 0,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "02-values-red",
      "observation": {
        "exit": 1,
        "stdout": "",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nException in thread \"main\" java.lang.UnsupportedOperationException: reference example not implemented\n\tat TypeProbe.change(TypeProbe.java:8)\n\tat TypeProbe.valuesAndReferences(TypeProbe.java:12)\n\tat TypeProbe.main(TypeProbe.java:32)\n"
      }
    },
    {
      "case": "03-copy-green",
      "observation": {
        "exit": 0,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "03-copy-red",
      "observation": {
        "exit": 1,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nException in thread \"main\" java.lang.AssertionError: constructor must copy input\n\tat TypeProbe.check(TypeProbe.java:5)\n\tat TypeProbe.equalityAndCopy(TypeProbe.java:47)\n\tat TypeProbe.main(TypeProbe.java:56)\n"
      }
    },
    {
      "case": "04-resource-green",
      "observation": {
        "exit": 0,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "04-resource-red",
      "observation": {
        "exit": 1,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nException in thread \"main\" java.lang.UnsupportedOperationException: resource example not implemented\n\tat TypeProbe.failingBody(TypeProbe.java:70)\n\tat TypeProbe.resourceProtocol(TypeProbe.java:77)\n\tat TypeProbe.main(TypeProbe.java:137)\n"
      }
    },
    {
      "case": "05-compiler-green",
      "observation": {
        "exit": 0,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.O8KOTx/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.O8KOTx/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.O8KOTx/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.O8KOTx/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT UncheckedDeclaration (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.O8KOTx/compile-examples/UncheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass UncheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof; rejects 5 invalid programs\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "05-compiler-red",
      "observation": {
        "exit": 0,
        "expectedOutput": "PASS compiler accepts PECS/typed-instanceof; rejects 5 invalid programs",
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "06-resource-final-green",
      "observation": {
        "exit": 0,
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT CheckedDeclaration (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/CheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass CheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                      ^\n1 个错误\nREJECT ReassignedResource (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.CCC5pD/compile-examples/ReassignedResource.java:4: 错误: 用作 try-with-resources 资源的变量 reader 既不是最终变量, 也不是实际上的最终变量\n    try(reader) { }\n        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof/effectively-final resource; rejects 6 invalid programs\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "06-resource-final-red",
      "observation": {
        "exit": 0,
        "expectedOutput": "REJECT ReassignedResource",
        "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.uB0cfn/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.uB0cfn/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.uB0cfn/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.uB0cfn/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT UncheckedDeclaration (javac exit nonzero)\n/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/java-senior.uB0cfn/compile-examples/UncheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass UncheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof; rejects 5 invalid programs\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
        "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n"
      }
    },
    {
      "case": "final-types-and-runner",
      "observation": [
        {
          "command": [
            "bash",
            "labs/java-senior/run.sh",
            "types"
          ],
          "JAVA_HOME": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
          "exit": 0,
          "expectedExit": 0,
          "stdout": "PASS values/reference-copy mutation=2 caller-count=1 unbox-null rejected overflow=-2147483648 narrow=-126 array-store rejected\nPASS equality distinct identities/equal hash; decimal hash-size=2 tree-size=1; defensive-copy size=1 nested-mutation=ab\nPASS TWR body primary/suppressed=2 reverse-close; close-only; initializer failure; fresh recovery; null skipped; finally masks body\nPASS checked IO + application cause preserved; invalid quantity rejected; corrected input=3\nPASS erased dispatch bridge=1, record is shallow, suppressed exception retained, raw write deferred to caught at read\nREJECT Invariant (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/Invariant.java:2: 错误: 不兼容的类型: ArrayList<Integer>无法转换为List<Number>\nclass Invariant {List<Number> values=new ArrayList<Integer>();}\n                                     ^\n1 个错误\nREJECT ExtendsWrite (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/ExtendsWrite.java:2: 错误: 不兼容的类型: int无法转换为CAP#1\nclass ExtendsWrite {void write(List<? extends Number> values){values.add(1);}}\n                                                                         ^\n  其中, CAP#1是新类型变量:\n    CAP#1从? extends Number的捕获扩展Number\n注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出\n1 个错误\nREJECT ObjectGenericTest (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/ObjectGenericTest.java:2: 错误: Object 无法安全地转换为 List<String>\nclass ObjectGenericTest {boolean test(Object value){return value instanceof List<String>;}}\n                                                           ^\n1 个错误\nREJECT GenericArray (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/GenericArray.java:2: 错误: 创建泛型数组\nclass GenericArray {List<String>[] values=new List<String>[1];}\n                                          ^\n1 个错误\nREJECT CheckedDeclaration (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/CheckedDeclaration.java:1: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出\nclass CheckedDeclaration {void read(){throw new java.io.IOException(\"not declared\");}}\n                                      ^\n1 个错误\nREJECT ReassignedResource (javac exit nonzero)\n/tmp/java-depth-u04-types-tdd/final-tmp/java-senior.9KdA74/compile-examples/ReassignedResource.java:4: 错误: 用作 try-with-resources 资源的变量 reader 既不是最终变量, 也不是实际上的最终变量\n    try(reader) { }\n        ^\n1 个错误\nPASS compiler accepts PECS/typed-instanceof/effectively-final resource; rejects 6 invalid programs\nCompiled from \"TypeProbe.java\"\nclass TypeProbe$Child extends TypeProbe$Parent<java.lang.String> {\n  TypeProbe$Child();\n    Code:\n       0: aload_0\n       1: invokespecial #1                  // Method TypeProbe$Parent.\"<init>\":()V\n       4: return\n\n  java.lang.String value();\n    Code:\n       0: ldc           #7                  // String typed\n       2: areturn\n\n  java.lang.Object value();\n    Code:\n       0: aload_0\n       1: invokevirtual #9                  // Method value:()Ljava/lang/String;\n       4: areturn\n}\n",
          "stderr": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\n",
          "elapsedSeconds": 2.093,
          "remainingTempEntries": []
        },
        {
          "command": [
            "bash",
            "labs/java-senior/run.sh",
            "unknown"
          ],
          "JAVA_HOME": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
          "exit": 2,
          "expectedExit": 2,
          "stdout": "",
          "stderr": "Usage: run.sh [all|locks|pool|async|algorithms|types|reflect]\n",
          "elapsedSeconds": 0.003,
          "remainingTempEntries": []
        },
        {
          "command": [
            "bash",
            "labs/java-senior/run.sh",
            "types",
            "extra"
          ],
          "JAVA_HOME": "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home",
          "exit": 2,
          "expectedExit": 2,
          "stdout": "",
          "stderr": "Usage: run.sh [all|locks|pool|async|algorithms|types|reflect]\n",
          "elapsedSeconds": 0.002,
          "remainingTempEntries": []
        },
        {
          "command": [
            "bash",
            "labs/java-senior/run.sh",
            "types"
          ],
          "JAVA_HOME": "/tmp/java-depth-u04-types-tdd/missing-jdk",
          "exit": 2,
          "expectedExit": 2,
          "stdout": "",
          "stderr": "JAVA_HOME 必须包含 JDK 17 的 java、javac、javap。\n",
          "elapsedSeconds": 0.004,
          "remainingTempEntries": []
        },
        {
          "command": [
            "bash",
            "labs/java-senior/run.sh",
            "types"
          ],
          "JAVA_HOME": "/Library/Java/JavaVirtualMachines/liberica-jdk-21.jdk/Contents/Home",
          "exit": 2,
          "expectedExit": 2,
          "stdout": "",
          "stderr": "本入口固定 JDK 17；当前版本：openjdk version \"21.0.11\" 2026-04-21 LTS\nOpenJDK Runtime Environment (build 21.0.11+11-LTS)\nOpenJDK 64-Bit Server VM (build 21.0.11+11-LTS, mixed mode, sharing)\n",
          "elapsedSeconds": 0.078,
          "remainingTempEntries": []
        }
      ]
    },
    {
      "case": "java-depth-u04-reflection-final",
      "observation": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPASS annotation CLASS=null RUNTIME!=null\nPASS default retention CLASS; repeatable container expands read/write\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS wrong signature/argument/class proxy rejected, corrected read=o-1:ok\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS declared IOException and RuntimeException/Error pass through unchanged\nPASS primitive null -> NPE, wrong type -> CCE, corrected Integer -> 7\nPASS self-invocation bypasses handler (intercepted=1)\nPASS default dispatch explicit, Object equals/hashCode/toString handled\nPASS reflection/annotation/proxy scenarios=11\n"
    },
    {
      "case": "java-depth-u04-reflection-green-default",
      "observation": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPASS annotation CLASS=null RUNTIME!=null\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS self-invocation bypasses handler (intercepted=1)\nPASS default dispatch explicit, Object equals/hashCode/toString handled\nPASS reflection/annotation/proxy scenarios=7\n"
    },
    {
      "case": "java-depth-u04-reflection-green-repeatable",
      "observation": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPASS annotation CLASS=null RUNTIME!=null\nPASS default retention CLASS; repeatable container expands read/write\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS self-invocation bypasses handler (intercepted=1)\nPASS default dispatch explicit, Object equals/hashCode/toString handled\nPASS reflection/annotation/proxy scenarios=8\n"
    },
    {
      "case": "java-depth-u04-reflection-red-default",
      "observation": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPASS annotation CLASS=null RUNTIME!=null\nPASS @Inherited class=yes interface=no\nPASS String.value setAccessible -> InaccessibleObjectException (own private field ok)\nPASS Method.invoke wraps business failure in cause\nPASS undeclared checked -> UndeclaredThrowableException(cause kept)\nPASS self-invocation bypasses handler (intercepted=1)\nException in thread \"main\" java.lang.AssertionError: default implementation must be selected explicitly\n\tat ReflectionProbe.defaultAndObjectMethods(ReflectionProbe.java:130)\n\tat ReflectionProbe.main(ReflectionProbe.java:41)\n"
    },
    {
      "case": "java-depth-u04-reflection-red-repeatable",
      "observation": "注: /Users/gaochao/Documents/面试/software-engineering-study/labs/java-senior/TypeProbe.java使用了未经检查或不安全的操作。\n注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。\nPASS annotation CLASS=null RUNTIME!=null\nException in thread \"main\" java.lang.AssertionError: repeatable runtime annotations must expose two values\n\tat ReflectionProbe.repeatableAndDefaultRetention(ReflectionProbe.java:65)\n\tat ReflectionProbe.main(ReflectionProbe.java:41)\n"
    }
  ],
  "documentExamples": [
    {
      "command": [
        "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home/bin/javac",
        "--release",
        "17",
        "-d",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh/ReflectionUse.java"
      ],
      "exit": 0,
      "stdout": "",
      "stderr": ""
    },
    {
      "command": [
        "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home/bin/java",
        "-cp",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh",
        "ReflectionUse"
      ],
      "exit": 0,
      "stdout": "order:o-1\nblank id\n",
      "stderr": ""
    },
    {
      "command": [
        "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home/bin/javac",
        "--release",
        "17",
        "-d",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh/ProxyUse.java"
      ],
      "exit": 0,
      "stdout": "",
      "stderr": ""
    },
    {
      "command": [
        "/Library/Java/JavaVirtualMachines/liberica-jdk-17.jdk/Contents/Home/bin/java",
        "-cp",
        "/var/folders/nj/d71mzd2s3hd50q4h30fcsq7r0000gn/T/u04-examples-vccetqnh",
        "ProxyUse"
      ],
      "exit": 0,
      "stdout": "1:2:audit\n",
      "stderr": ""
    }
  ],
  "sourceExcerpts": [
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java",
      "start": 243,
      "end": 252,
      "sha256": "f0028b77d896cb7f9cf62005b9babd455baf0cdd1ec6103d6badc83cc800e291"
    },
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java",
      "start": 365,
      "end": 380,
      "sha256": "f0028b77d896cb7f9cf62005b9babd455baf0cdd1ec6103d6badc83cc800e291"
    },
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/java.base/share/classes/java/lang/reflect/Method.java",
      "start": 569,
      "end": 569,
      "sha256": "ea151f260060d02b39b4efa77bfb093b137fab44413ca3c4e12d996fc656da0a"
    },
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/java.base/share/classes/java/lang/reflect/AccessibleObject.java",
      "start": 310,
      "end": 310,
      "sha256": "efdfb0cd7a69e7eee134a85467ad6ba00a98c673ed01024d302ef5d820d90bb2"
    },
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/java.base/share/classes/java/lang/reflect/Proxy.java",
      "start": 1037,
      "end": 1039,
      "sha256": "aaac8c2a5eae7edde65a598e3056e08e82b449ebdb5665059ea93a34338f3014"
    },
    {
      "repo": "openjdk/jdk17u",
      "tag": "jdk-17.0.12+7",
      "path": "src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java",
      "start": 343,
      "end": 344,
      "sha256": "de3d8e79c502a37abf8b3875b51015eddaa2b25180a0b135193ad8906367cda8"
    }
  ],
  "publicIndexTdd": {
    "red": "✖ U04 公开账本把固定语言边界追到权威讲解、可评分题目和真实运行产物 (66.38475ms)\nℹ tests 1\nℹ suites 0\nℹ pass 0\nℹ fail 1\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 274.03075\n\n✖ failing tests:\n\ntest at scripts/study-knowledge-coverage.test.mjs:116:1\n✖ U04 公开账本把固定语言边界追到权威讲解、可评分题目和真实运行产物 (66.38475ms)\n  AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:\n  + actual - expected\n  \n  + []\n  - [\n  -   'java-annotation-inheritance-repeatable',\n  -   'java-annotation-retention',\n  -   'java-casts-arrays',\n  -   'java-decimal-equality',\n  -   'java-equality-hashing',\n  -   'java-erasure-bridge',\n  -   'java-exception-propagation',\n  -   'java-generic-variance',\n  -   'java-immutable-ownership',\n  -   'java-numeric-boxing',\n  -   'java-proxy-dispatch',\n  -   'java-proxy-protocol',\n  -   'java-reflection-access',\n  -   'java-reflection-lookup',\n  -   'java-resource-failures',\n  -   'java-resource-initialization',\n  -   'java-value-reference'\n  - ]\n  \n      at TestContext.<anonymous> (file:///Users/gaochao/Documents/%E9%9D%A2%E8%AF%95/software-engineering-study/scripts/study-knowledge-coverage.test.mjs:127:10)\n      at Test.runInAsyncScope (node:async_hooks:227:14)\n      at Test.run (node:internal/test_runner/test:1306:25)\n      at Test.start (node:internal/test_runner/test:1177:17)\n      at startSubtestAfterBootstrap (node:internal/test_runner/harness:385:17) {\n    generatedMessage: true,\n    code: 'ERR_ASSERTION',\n    actual: [],\n    expected: [ 'java-annotation-inheritance-repeatable', 'java-annotation-retention', 'java-casts-arrays', 'java-decimal-equality', 'java-equality-hashing', 'java-erasure-bridge', 'java-exception-propagation', 'java-generic-variance', 'java-immutable-ownership', 'java-numeric-boxing', 'java-proxy-dispatch', 'java-proxy-protocol', 'java-reflection-access', 'java-reflection-lookup', 'java-resource-failures', 'java-resource-initialization', 'java-value-reference' ],\n    operator: 'deepStrictEqual',\n    diff: 'simple'\n  }\n",
    "green": "✔ U04 公开账本把固定语言边界追到权威讲解、可评分题目和真实运行产物 (32.424833ms)\nℹ tests 1\nℹ suites 0\nℹ pass 1\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 218.758208\n"
  }
}
