diff --git a/java-stubs/awt/geom/__init__.pyi b/java-stubs/awt/geom/__init__.pyi
index fb723310058032370cccdab980ed346a9d182c4d..d71c9da7a69d95accde7ef38aa566e879d6f73cf 100644
--- a/java-stubs/awt/geom/__init__.pyi
+++ b/java-stubs/awt/geom/__init__.pyi
@@ -408,6 +408,7 @@ class CubicCurve2D(java.awt.Shape, java.lang.Cloneable):
     @typing.overload
     def contains(self, rectangle2D: 'Rectangle2D') -> bool: ...
     def getBounds(self) -> java.awt.Rectangle: ...
+    def getBounds2D(self) -> 'Rectangle2D': ...
     def getCtrlP1(self) -> 'Point2D': ...
     def getCtrlP2(self) -> 'Point2D': ...
     def getCtrlX1(self) -> float: ...
@@ -481,7 +482,6 @@ class CubicCurve2D(java.awt.Shape, java.lang.Cloneable):
         def __init__(self): ...
         @typing.overload
         def __init__(self, double: float, double2: float, double3: float, double4: float, double5: float, double6: float, double7: float, double8: float): ...
-        def getBounds2D(self) -> 'Rectangle2D': ...
         def getCtrlP1(self) -> 'Point2D': ...
         def getCtrlP2(self) -> 'Point2D': ...
         def getCtrlX1(self) -> float: ...
@@ -517,7 +517,6 @@ class CubicCurve2D(java.awt.Shape, java.lang.Cloneable):
         def __init__(self): ...
         @typing.overload
         def __init__(self, float: float, float2: float, float3: float, float4: float, float5: float, float6: float, float7: float, float8: float): ...
-        def getBounds2D(self) -> 'Rectangle2D': ...
         def getCtrlP1(self) -> 'Point2D': ...
         def getCtrlP2(self) -> 'Point2D': ...
         def getCtrlX1(self) -> float: ...
@@ -928,6 +927,7 @@ class QuadCurve2D(java.awt.Shape, java.lang.Cloneable):
     @typing.overload
     def contains(self, rectangle2D: 'Rectangle2D') -> bool: ...
     def getBounds(self) -> java.awt.Rectangle: ...
+    def getBounds2D(self) -> 'Rectangle2D': ...
     def getCtrlPt(self) -> Point2D: ...
     def getCtrlX(self) -> float: ...
     def getCtrlY(self) -> float: ...
@@ -996,7 +996,6 @@ class QuadCurve2D(java.awt.Shape, java.lang.Cloneable):
         def __init__(self): ...
         @typing.overload
         def __init__(self, double: float, double2: float, double3: float, double4: float, double5: float, double6: float): ...
-        def getBounds2D(self) -> 'Rectangle2D': ...
         def getCtrlPt(self) -> Point2D: ...
         def getCtrlX(self) -> float: ...
         def getCtrlY(self) -> float: ...
@@ -1027,7 +1026,6 @@ class QuadCurve2D(java.awt.Shape, java.lang.Cloneable):
         def __init__(self): ...
         @typing.overload
         def __init__(self, float: float, float2: float, float3: float, float4: float, float5: float, float6: float): ...
-        def getBounds2D(self) -> 'Rectangle2D': ...
         def getCtrlPt(self) -> Point2D: ...
         def getCtrlX(self) -> float: ...
         def getCtrlY(self) -> float: ...
diff --git a/java-stubs/awt/image/__init__.pyi b/java-stubs/awt/image/__init__.pyi
index 4d8e0dfc52cb77b3bb4dfba1efbfc4938efa5ca2..f97cc725ebac10b48666f367b9f91d9b6ad5366e 100644
--- a/java-stubs/awt/image/__init__.pyi
+++ b/java-stubs/awt/image/__init__.pyi
@@ -38,7 +38,6 @@ class ColorModel(java.awt.Transparency):
     def createCompatibleSampleModel(self, int: int, int2: int) -> 'SampleModel': ...
     def createCompatibleWritableRaster(self, int: int, int2: int) -> 'WritableRaster': ...
     def equals(self, object: typing.Any) -> bool: ...
-    def finalize(self) -> None: ...
     @typing.overload
     def getAlpha(self, int: int) -> int: ...
     @typing.overload
@@ -877,7 +876,6 @@ class IndexColorModel(ColorModel):
     def createCompatibleSampleModel(self, int: int, int2: int) -> SampleModel: ...
     def createCompatibleWritableRaster(self, int: int, int2: int) -> 'WritableRaster': ...
     def equals(self, object: typing.Any) -> bool: ...
-    def finalize(self) -> None: ...
     @typing.overload
     def getAlpha(self, int: int) -> int: ...
     @typing.overload
diff --git a/java-stubs/io/__init__.pyi b/java-stubs/io/__init__.pyi
index 8ddeeca9d9604fd0826e5da6cb6a9c675e87ad72..71543abc5a4627c04b9443a6add76ee8c7996b5e 100644
--- a/java-stubs/io/__init__.pyi
+++ b/java-stubs/io/__init__.pyi
@@ -713,6 +713,7 @@ class FileInputStream(InputStream):
     @typing.overload
     def readNBytes(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
     def skip(self, long: int) -> int: ...
+    def transferTo(self, outputStream: OutputStream) -> int: ...
 
 class FileOutputStream(OutputStream):
     @typing.overload
@@ -817,10 +818,17 @@ class InvalidClassException(ObjectStreamException):
     def __init__(self, string: str): ...
     @typing.overload
     def __init__(self, string: str, string2: str): ...
+    @typing.overload
+    def __init__(self, string: str, string2: str, throwable: java.lang.Throwable): ...
+    @typing.overload
+    def __init__(self, string: str, throwable: java.lang.Throwable): ...
     def getMessage(self) -> str: ...
 
 class InvalidObjectException(ObjectStreamException):
+    @typing.overload
     def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, string: str, throwable: java.lang.Throwable): ...
 
 class NotActiveException(ObjectStreamException):
     @typing.overload
@@ -1150,6 +1158,7 @@ class SequenceInputStream(InputStream):
     def read(self) -> int: ...
     @typing.overload
     def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
+    def transferTo(self, outputStream: OutputStream) -> int: ...
 
 class StreamCorruptedException(ObjectStreamException):
     @typing.overload
@@ -1228,13 +1237,14 @@ class BufferedInputStream(FilterInputStream):
     def mark(self, int: int) -> None: ...
     def markSupported(self) -> bool: ...
     @typing.overload
-    def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> int: ...
-    @typing.overload
     def read(self) -> int: ...
     @typing.overload
     def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
+    @typing.overload
+    def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> int: ...
     def reset(self) -> None: ...
     def skip(self, long: int) -> int: ...
+    def transferTo(self, outputStream: OutputStream) -> int: ...
 
 class BufferedOutputStream(FilterOutputStream):
     @typing.overload
@@ -1395,6 +1405,7 @@ class PrintStream(FilterOutputStream, java.lang.Appendable, Closeable):
     def append(self, charSequence: typing.Union[java.lang.CharSequence, str]) -> 'PrintStream': ...
     @typing.overload
     def append(self, charSequence: typing.Union[java.lang.CharSequence, str], int: int, int2: int) -> 'PrintStream': ...
+    def charset(self) -> java.nio.charset.Charset: ...
     def checkError(self) -> bool: ...
     def close(self) -> None: ...
     def flush(self) -> None: ...
@@ -1469,6 +1480,7 @@ class PushbackInputStream(FilterInputStream):
     def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
     def reset(self) -> None: ...
     def skip(self, long: int) -> int: ...
+    def transferTo(self, outputStream: OutputStream) -> int: ...
     @typing.overload
     def unread(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> None: ...
     @typing.overload
diff --git a/java-stubs/lang/__init__.pyi b/java-stubs/lang/__init__.pyi
index 48332f97adf2c84c58c397105fda3382dd812b70..115d2364abc5ad4237dcf79a191d2f8a4abaf1dd 100644
--- a/java-stubs/lang/__init__.pyi
+++ b/java-stubs/lang/__init__.pyi
@@ -15,6 +15,7 @@ import java
 import java.io
 import java.lang.annotation
 import java.lang.constant
+import java.lang.foreign
 import java.lang.instrument
 import java.lang.invoke
 import java.lang.management
@@ -62,6 +63,7 @@ class CharSequence:
 
 _Class__T = typing.TypeVar('_Class__T')  # <T>
 class Class(java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type, java.lang.reflect.AnnotatedElement, java.lang.invoke.TypeDescriptor.OfField[typing.Type[typing.Any]], java.lang.constant.Constable, typing.Generic[_Class__T]):
+    def accessFlags(self) -> java.util.Set[java.lang.reflect.AccessFlag]: ...
     def arrayType(self) -> typing.Type[typing.Any]: ...
     _asSubclass__U = typing.TypeVar('_asSubclass__U')  # <U>
     def asSubclass(self, class_: typing.Type[_asSubclass__U]) -> typing.Type[_asSubclass__U]: ...
@@ -149,6 +151,7 @@ class Class(java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lan
     def isRecord(self) -> bool: ...
     def isSealed(self) -> bool: ...
     def isSynthetic(self) -> bool: ...
+    def isUnnamedClass(self) -> bool: ...
     def newInstance(self) -> _Class__T: ...
     def toGenericString(self) -> str: ...
     def toString(self) -> str: ...
@@ -191,18 +194,6 @@ _Comparable__T = typing.TypeVar('_Comparable__T')  # <T>
 class Comparable(typing.Generic[_Comparable__T]):
     def compareTo(self, t: _Comparable__T) -> int: ...
 
-class Compiler:
-    @staticmethod
-    def command(object: typing.Any) -> typing.Any: ...
-    @staticmethod
-    def compileClass(class_: typing.Type[typing.Any]) -> bool: ...
-    @staticmethod
-    def compileClasses(string: str) -> bool: ...
-    @staticmethod
-    def disable() -> None: ...
-    @staticmethod
-    def enable() -> None: ...
-
 class Deprecated(java.lang.annotation.Annotation):
     def equals(self, object: typing.Any) -> bool: ...
     def forRemoval(self) -> bool: ...
@@ -224,6 +215,7 @@ class Iterable(typing.Generic[_Iterable__T], _JIterable[_Iterable__T]):
 class Math:
     E: typing.ClassVar[float] = ...
     PI: typing.ClassVar[float] = ...
+    TAU: typing.ClassVar[float] = ...
     @staticmethod
     def IEEEremainder(double: float, double2: float) -> float: ...
     @typing.overload
@@ -264,6 +256,42 @@ class Math:
     def ceil(double: float) -> float: ...
     @typing.overload
     @staticmethod
+    def ceilDiv(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDiv(long: int, int: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDiv(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDivExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDivExact(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(long: int, int: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def clamp(double: float, double2: float, double3: float) -> float: ...
+    @typing.overload
+    @staticmethod
+    def clamp(float: float, float2: float, float3: float) -> float: ...
+    @typing.overload
+    @staticmethod
+    def clamp(long: int, int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def clamp(long: int, long2: int, long3: int) -> int: ...
+    @typing.overload
+    @staticmethod
     def copySign(double: float, double2: float) -> float: ...
     @typing.overload
     @staticmethod
@@ -278,6 +306,12 @@ class Math:
     @typing.overload
     @staticmethod
     def decrementExact(long: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def divideExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def divideExact(long: int, long2: int) -> int: ...
     @staticmethod
     def exp(double: float) -> float: ...
     @staticmethod
@@ -295,6 +329,12 @@ class Math:
     def floorDiv(long: int, long2: int) -> int: ...
     @typing.overload
     @staticmethod
+    def floorDivExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def floorDivExact(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
     def floorMod(int: int, int2: int) -> int: ...
     @typing.overload
     @staticmethod
@@ -441,6 +481,8 @@ class Math:
     @typing.overload
     @staticmethod
     def ulp(float: float) -> float: ...
+    @staticmethod
+    def unsignedMultiplyHigh(long: int, long2: int) -> int: ...
 
 class Module(java.lang.reflect.AnnotatedElement):
     def addExports(self, string: str, module: 'Module') -> 'Module': ...
@@ -464,6 +506,7 @@ class Module(java.lang.reflect.AnnotatedElement):
     @typing.overload
     def isExported(self, string: str, module: 'Module') -> bool: ...
     def isNamed(self) -> bool: ...
+    def isNativeAccessEnabled(self) -> bool: ...
     @typing.overload
     def isOpen(self, string: str) -> bool: ...
     @typing.overload
@@ -500,6 +543,7 @@ class ModuleLayer:
         def addExports(self, module: Module, string: str, module2: Module) -> 'ModuleLayer.Controller': ...
         def addOpens(self, module: Module, string: str, module2: Module) -> 'ModuleLayer.Controller': ...
         def addReads(self, module: Module, module2: Module) -> 'ModuleLayer.Controller': ...
+        def enableNativeAccess(self, module: Module) -> 'ModuleLayer.Controller': ...
         def layer(self) -> 'ModuleLayer': ...
 
 class Number(java.io.Serializable):
@@ -520,10 +564,10 @@ class Object:
     def notifyAll(self) -> None: ...
     def toString(self) -> str: ...
     @typing.overload
-    def wait(self, long: int) -> None: ...
-    @typing.overload
     def wait(self) -> None: ...
     @typing.overload
+    def wait(self, long: int) -> None: ...
+    @typing.overload
     def wait(self, long: int, int: int) -> None: ...
 
 class Override(java.lang.annotation.Annotation):
@@ -586,6 +630,44 @@ class SafeVarargs(java.lang.annotation.Annotation):
     def hashCode(self) -> int: ...
     def toString(self) -> str: ...
 
+_ScopedValue__T = typing.TypeVar('_ScopedValue__T')  # <T>
+class ScopedValue(typing.Generic[_ScopedValue__T]):
+    _callWhere__T = typing.TypeVar('_callWhere__T')  # <T>
+    _callWhere__R = typing.TypeVar('_callWhere__R')  # <R>
+    @staticmethod
+    def callWhere(scopedValue: 'ScopedValue'[_callWhere__T], t: _callWhere__T, callable: typing.Union[java.util.concurrent.Callable[_callWhere__R], typing.Callable[[], _callWhere__R]]) -> _callWhere__R: ...
+    def get(self) -> _ScopedValue__T: ...
+    _getWhere__T = typing.TypeVar('_getWhere__T')  # <T>
+    _getWhere__R = typing.TypeVar('_getWhere__R')  # <R>
+    @staticmethod
+    def getWhere(scopedValue: 'ScopedValue'[_getWhere__T], t: _getWhere__T, supplier: typing.Union[java.util.function.Supplier[_getWhere__R], typing.Callable[[], _getWhere__R]]) -> _getWhere__R: ...
+    def hashCode(self) -> int: ...
+    def isBound(self) -> bool: ...
+    _newInstance__T = typing.TypeVar('_newInstance__T')  # <T>
+    @staticmethod
+    def newInstance() -> 'ScopedValue'[_newInstance__T]: ...
+    def orElse(self, t: _ScopedValue__T) -> _ScopedValue__T: ...
+    _orElseThrow__X = typing.TypeVar('_orElseThrow__X', bound='Throwable')  # <X>
+    def orElseThrow(self, supplier: typing.Union[java.util.function.Supplier[_orElseThrow__X], typing.Callable[[], _orElseThrow__X]]) -> _ScopedValue__T: ...
+    _runWhere__T = typing.TypeVar('_runWhere__T')  # <T>
+    @staticmethod
+    def runWhere(scopedValue: 'ScopedValue'[_runWhere__T], t: _runWhere__T, runnable: typing.Union[Runnable, typing.Callable]) -> None: ...
+    _where__T = typing.TypeVar('_where__T')  # <T>
+    @staticmethod
+    def where(scopedValue: 'ScopedValue'[_where__T], t: _where__T) -> 'ScopedValue.Carrier': ...
+    class Carrier:
+        _call__R = typing.TypeVar('_call__R')  # <R>
+        def call(self, callable: typing.Union[java.util.concurrent.Callable[_call__R], typing.Callable[[], _call__R]]) -> _call__R: ...
+        _get_0__T = typing.TypeVar('_get_0__T')  # <T>
+        _get_1__R = typing.TypeVar('_get_1__R')  # <R>
+        @typing.overload
+        def get(self, scopedValue: 'ScopedValue'[_get_0__T]) -> _get_0__T: ...
+        @typing.overload
+        def get(self, supplier: typing.Union[java.util.function.Supplier[_get_1__R], typing.Callable[[], _get_1__R]]) -> _get_1__R: ...
+        def run(self, runnable: typing.Union[Runnable, typing.Callable]) -> None: ...
+        _where__T = typing.TypeVar('_where__T')  # <T>
+        def where(self, scopedValue: 'ScopedValue'[_where__T], t: _where__T) -> 'ScopedValue.Carrier': ...
+
 class SecurityManager:
     def __init__(self): ...
     def checkAccept(self, string: str, int: int) -> None: ...
@@ -651,6 +733,7 @@ class StackTraceElement(java.io.Serializable):
 class StrictMath:
     E: typing.ClassVar[float] = ...
     PI: typing.ClassVar[float] = ...
+    TAU: typing.ClassVar[float] = ...
     @staticmethod
     def IEEEremainder(double: float, double2: float) -> float: ...
     @typing.overload
@@ -691,6 +774,42 @@ class StrictMath:
     def ceil(double: float) -> float: ...
     @typing.overload
     @staticmethod
+    def ceilDiv(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDiv(long: int, int: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDiv(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDivExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilDivExact(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(long: int, int: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def ceilMod(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def clamp(double: float, double2: float, double3: float) -> float: ...
+    @typing.overload
+    @staticmethod
+    def clamp(float: float, float2: float, float3: float) -> float: ...
+    @typing.overload
+    @staticmethod
+    def clamp(long: int, int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def clamp(long: int, long2: int, long3: int) -> int: ...
+    @typing.overload
+    @staticmethod
     def copySign(double: float, double2: float) -> float: ...
     @typing.overload
     @staticmethod
@@ -705,6 +824,12 @@ class StrictMath:
     @typing.overload
     @staticmethod
     def decrementExact(long: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def divideExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def divideExact(long: int, long2: int) -> int: ...
     @staticmethod
     def exp(double: float) -> float: ...
     @staticmethod
@@ -722,6 +847,12 @@ class StrictMath:
     def floorDiv(long: int, long2: int) -> int: ...
     @typing.overload
     @staticmethod
+    def floorDivExact(int: int, int2: int) -> int: ...
+    @typing.overload
+    @staticmethod
+    def floorDivExact(long: int, long2: int) -> int: ...
+    @typing.overload
+    @staticmethod
     def floorMod(int: int, int2: int) -> int: ...
     @typing.overload
     @staticmethod
@@ -868,6 +999,45 @@ class StrictMath:
     @typing.overload
     @staticmethod
     def ulp(float: float) -> float: ...
+    @staticmethod
+    def unsignedMultiplyHigh(long: int, long2: int) -> int: ...
+
+_StringTemplate__Processor__R = typing.TypeVar('_StringTemplate__Processor__R')  # <R>
+_StringTemplate__Processor__E = typing.TypeVar('_StringTemplate__Processor__E', bound='Throwable')  # <E>
+class StringTemplate:
+    STR: typing.ClassVar['StringTemplate.Processor'] = ...
+    RAW: typing.ClassVar['StringTemplate.Processor'] = ...
+    @typing.overload
+    @staticmethod
+    def combine(*stringTemplate: 'StringTemplate') -> 'StringTemplate': ...
+    @typing.overload
+    @staticmethod
+    def combine(list: java.util.List['StringTemplate']) -> 'StringTemplate': ...
+    def fragments(self) -> java.util.List[str]: ...
+    @typing.overload
+    def interpolate(self) -> str: ...
+    @typing.overload
+    @staticmethod
+    def interpolate(list: java.util.List[str], list2: java.util.List[typing.Any]) -> str: ...
+    @typing.overload
+    @staticmethod
+    def of(string: str) -> 'StringTemplate': ...
+    @typing.overload
+    @staticmethod
+    def of(list: java.util.List[str], list2: java.util.List[typing.Any]) -> 'StringTemplate': ...
+    _process__R = typing.TypeVar('_process__R')  # <R>
+    _process__E = typing.TypeVar('_process__E', bound='Throwable')  # <E>
+    def process(self, processor: typing.Union['StringTemplate.Processor'[_process__R, _process__E], typing.Callable[['StringTemplate'], _process__R]]) -> _process__R: ...
+    @staticmethod
+    def toString(stringTemplate: 'StringTemplate') -> str: ...
+    def values(self) -> java.util.List[typing.Any]: ...
+    class Processor(typing.Generic[_StringTemplate__Processor__R, _StringTemplate__Processor__E]):
+        _of__T = typing.TypeVar('_of__T')  # <T>
+        @staticmethod
+        def of(function: typing.Union[java.util.function.Function['StringTemplate', _of__T], typing.Callable[['StringTemplate'], _of__T]]) -> 'StringTemplate.Processor'[_of__T, 'RuntimeException']: ...
+        def process(self, stringTemplate: 'StringTemplate') -> _StringTemplate__Processor__R: ...
+        class Linkage:
+            def linkage(self, list: java.util.List[str], methodType: java.lang.invoke.MethodType) -> java.lang.invoke.MethodHandle: ...
 
 class SuppressWarnings(java.lang.annotation.Annotation):
     def equals(self, object: typing.Any) -> bool: ...
@@ -1017,9 +1187,10 @@ class Double(Number, Comparable[float], java.lang.constant.Constable, java.lang.
     MAX_VALUE: typing.ClassVar[float] = ...
     MIN_NORMAL: typing.ClassVar[float] = ...
     MIN_VALUE: typing.ClassVar[float] = ...
+    SIZE: typing.ClassVar[int] = ...
+    PRECISION: typing.ClassVar[int] = ...
     MAX_EXPONENT: typing.ClassVar[int] = ...
     MIN_EXPONENT: typing.ClassVar[int] = ...
-    SIZE: typing.ClassVar[int] = ...
     BYTES: typing.ClassVar[int] = ...
     TYPE: typing.ClassVar[typing.Type] = ...
     @typing.overload
@@ -1140,9 +1311,10 @@ class Float(Number, Comparable[float], java.lang.constant.Constable, java.lang.c
     MAX_VALUE: typing.ClassVar[float] = ...
     MIN_NORMAL: typing.ClassVar[float] = ...
     MIN_VALUE: typing.ClassVar[float] = ...
+    SIZE: typing.ClassVar[int] = ...
+    PRECISION: typing.ClassVar[int] = ...
     MAX_EXPONENT: typing.ClassVar[int] = ...
     MIN_EXPONENT: typing.ClassVar[int] = ...
-    SIZE: typing.ClassVar[int] = ...
     BYTES: typing.ClassVar[int] = ...
     TYPE: typing.ClassVar[typing.Type] = ...
     @typing.overload
@@ -1159,6 +1331,10 @@ class Float(Number, Comparable[float], java.lang.constant.Constable, java.lang.c
     def doubleValue(self) -> float: ...
     def equals(self, object: typing.Any) -> bool: ...
     @staticmethod
+    def float16ToFloat(short: int) -> float: ...
+    @staticmethod
+    def floatToFloat16(float: float) -> int: ...
+    @staticmethod
     def floatToIntBits(float: float) -> int: ...
     @staticmethod
     def floatToRawIntBits(float: float) -> int: ...
@@ -1231,12 +1407,16 @@ class Integer(Number, Comparable[int], java.lang.constant.Constable, java.lang.c
     @staticmethod
     def compareUnsigned(int: int, int2: int) -> int: ...
     @staticmethod
+    def compress(int: int, int2: int) -> int: ...
+    @staticmethod
     def decode(string: str) -> int: ...
     def describeConstable(self) -> java.util.Optional[int]: ...
     @staticmethod
     def divideUnsigned(int: int, int2: int) -> int: ...
     def doubleValue(self) -> float: ...
     def equals(self, object: typing.Any) -> bool: ...
+    @staticmethod
+    def expand(int: int, int2: int) -> int: ...
     def floatValue(self) -> float: ...
     @typing.overload
     @staticmethod
@@ -1351,12 +1531,16 @@ class Long(Number, Comparable[int], java.lang.constant.Constable, java.lang.cons
     @staticmethod
     def compareUnsigned(long: int, long2: int) -> int: ...
     @staticmethod
+    def compress(long: int, long2: int) -> int: ...
+    @staticmethod
     def decode(string: str) -> int: ...
     def describeConstable(self) -> java.util.Optional[int]: ...
     @staticmethod
     def divideUnsigned(long: int, long2: int) -> int: ...
     def doubleValue(self) -> float: ...
     def equals(self, object: typing.Any) -> bool: ...
+    @staticmethod
+    def expand(long: int, long2: int) -> int: ...
     def floatValue(self) -> float: ...
     @typing.overload
     @staticmethod
@@ -1662,9 +1846,13 @@ class String(java.io.Serializable, Comparable[str], CharSequence, java.lang.cons
     @typing.overload
     def indexOf(self, int: int, int2: int) -> int: ...
     @typing.overload
+    def indexOf(self, int: int, int2: int, int3: int) -> int: ...
+    @typing.overload
     def indexOf(self, string: str) -> int: ...
     @typing.overload
     def indexOf(self, string: str, int: int) -> int: ...
+    @typing.overload
+    def indexOf(self, string: str, int: int, int2: int) -> int: ...
     def intern(self) -> str: ...
     def isBlank(self) -> bool: ...
     def isEmpty(self) -> bool: ...
@@ -1702,6 +1890,7 @@ class String(java.io.Serializable, Comparable[str], CharSequence, java.lang.cons
     def split(self, string: str) -> typing.MutableSequence[str]: ...
     @typing.overload
     def split(self, string: str, int: int) -> typing.MutableSequence[str]: ...
+    def splitWithDelimiters(self, string: str, int: int) -> typing.MutableSequence[str]: ...
     @typing.overload
     def startsWith(self, string: str) -> bool: ...
     @typing.overload
@@ -2041,106 +2230,6 @@ class System:
         @staticmethod
         def getLoggerFinder() -> 'System.LoggerFinder': ...
 
-class Thread(Runnable, _JThread):
-    MIN_PRIORITY: typing.ClassVar[int] = ...
-    NORM_PRIORITY: typing.ClassVar[int] = ...
-    MAX_PRIORITY: typing.ClassVar[int] = ...
-    @typing.overload
-    def __init__(self): ...
-    @typing.overload
-    def __init__(self, runnable: typing.Union[Runnable, typing.Callable]): ...
-    @typing.overload
-    def __init__(self, runnable: typing.Union[Runnable, typing.Callable], string: str): ...
-    @typing.overload
-    def __init__(self, string: str): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable]): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str, long: int): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str, long: int, boolean: bool): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', string: str): ...
-    @staticmethod
-    def activeCount() -> int: ...
-    def checkAccess(self) -> None: ...
-    def countStackFrames(self) -> int: ...
-    @staticmethod
-    def currentThread() -> 'Thread': ...
-    @staticmethod
-    def dumpStack() -> None: ...
-    @staticmethod
-    def enumerate(threadArray: typing.Union[typing.List['Thread'], jpype.JArray]) -> int: ...
-    @staticmethod
-    def getAllStackTraces() -> java.util.Map['Thread', typing.MutableSequence[StackTraceElement]]: ...
-    def getContextClassLoader(self) -> ClassLoader: ...
-    @staticmethod
-    def getDefaultUncaughtExceptionHandler() -> 'Thread.UncaughtExceptionHandler': ...
-    def getId(self) -> int: ...
-    def getName(self) -> str: ...
-    def getPriority(self) -> int: ...
-    def getStackTrace(self) -> typing.MutableSequence[StackTraceElement]: ...
-    def getState(self) -> 'Thread.State': ...
-    def getThreadGroup(self) -> 'ThreadGroup': ...
-    def getUncaughtExceptionHandler(self) -> 'Thread.UncaughtExceptionHandler': ...
-    @staticmethod
-    def holdsLock(object: typing.Any) -> bool: ...
-    def interrupt(self) -> None: ...
-    @staticmethod
-    def interrupted() -> bool: ...
-    def isAlive(self) -> bool: ...
-    def isDaemon(self) -> bool: ...
-    def isInterrupted(self) -> bool: ...
-    @typing.overload
-    def join(self, long: int) -> None: ...
-    @typing.overload
-    def join(self, long: int, int: int) -> None: ...
-    @typing.overload
-    def join(self) -> None: ...
-    @staticmethod
-    def onSpinWait() -> None: ...
-    def resume(self) -> None: ...
-    def run(self) -> None: ...
-    def setContextClassLoader(self, classLoader: ClassLoader) -> None: ...
-    def setDaemon(self, boolean: bool) -> None: ...
-    @staticmethod
-    def setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> None: ...
-    def setName(self, string: str) -> None: ...
-    def setPriority(self, int: int) -> None: ...
-    def setUncaughtExceptionHandler(self, uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> None: ...
-    @typing.overload
-    @staticmethod
-    def sleep(long: int) -> None: ...
-    @typing.overload
-    @staticmethod
-    def sleep(long: int, int: int) -> None: ...
-    def start(self) -> None: ...
-    def stop(self) -> None: ...
-    def suspend(self) -> None: ...
-    def toString(self) -> str: ...
-    @staticmethod
-    def yield_() -> None: ...
-    class State(Enum['Thread.State']):
-        NEW: typing.ClassVar['Thread.State'] = ...
-        RUNNABLE: typing.ClassVar['Thread.State'] = ...
-        BLOCKED: typing.ClassVar['Thread.State'] = ...
-        WAITING: typing.ClassVar['Thread.State'] = ...
-        TIMED_WAITING: typing.ClassVar['Thread.State'] = ...
-        TERMINATED: typing.ClassVar['Thread.State'] = ...
-        _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=Enum)  # <T>
-        @typing.overload
-        @staticmethod
-        def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
-        @typing.overload
-        @staticmethod
-        def valueOf(string: str) -> 'Thread.State': ...
-        @staticmethod
-        def values() -> typing.MutableSequence['Thread.State']: ...
-    class UncaughtExceptionHandler:
-        def uncaughtException(self, thread: 'Thread', throwable: Throwable) -> None: ...
-
 class ThreadDeath(Error):
     def __init__(self): ...
 
@@ -2301,6 +2390,9 @@ class LayerInstantiationException(RuntimeException):
     @typing.overload
     def __init__(self, throwable: Throwable): ...
 
+class MatchException(RuntimeException):
+    def __init__(self, string: str, throwable: Throwable): ...
+
 class NegativeArraySizeException(RuntimeException):
     @typing.overload
     def __init__(self): ...
@@ -2355,40 +2447,6 @@ class StackOverflowError(VirtualMachineError):
     @typing.overload
     def __init__(self, string: str): ...
 
-class ThreadGroup(Thread.UncaughtExceptionHandler):
-    @typing.overload
-    def __init__(self, string: str): ...
-    @typing.overload
-    def __init__(self, threadGroup: 'ThreadGroup', string: str): ...
-    def activeCount(self) -> int: ...
-    def activeGroupCount(self) -> int: ...
-    def allowThreadSuspension(self, boolean: bool) -> bool: ...
-    def checkAccess(self) -> None: ...
-    def destroy(self) -> None: ...
-    @typing.overload
-    def enumerate(self, threadGroupArray: typing.Union[typing.List['ThreadGroup'], jpype.JArray]) -> int: ...
-    @typing.overload
-    def enumerate(self, threadGroupArray: typing.Union[typing.List['ThreadGroup'], jpype.JArray], boolean: bool) -> int: ...
-    @typing.overload
-    def enumerate(self, threadArray: typing.Union[typing.List[Thread], jpype.JArray]) -> int: ...
-    @typing.overload
-    def enumerate(self, threadArray: typing.Union[typing.List[Thread], jpype.JArray], boolean: bool) -> int: ...
-    def getMaxPriority(self) -> int: ...
-    def getName(self) -> str: ...
-    def getParent(self) -> 'ThreadGroup': ...
-    def interrupt(self) -> None: ...
-    def isDaemon(self) -> bool: ...
-    def isDestroyed(self) -> bool: ...
-    def list(self) -> None: ...
-    def parentOf(self, threadGroup: 'ThreadGroup') -> bool: ...
-    def resume(self) -> None: ...
-    def setDaemon(self, boolean: bool) -> None: ...
-    def setMaxPriority(self, int: int) -> None: ...
-    def stop(self) -> None: ...
-    def suspend(self) -> None: ...
-    def toString(self) -> str: ...
-    def uncaughtException(self, thread: Thread, throwable: Throwable) -> None: ...
-
 class TypeNotPresentException(RuntimeException):
     def __init__(self, string: str, throwable: Throwable): ...
     def typeName(self) -> str: ...
@@ -2421,6 +2479,16 @@ class VerifyError(LinkageError):
     @typing.overload
     def __init__(self, string: str): ...
 
+class WrongThreadException(RuntimeException):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, string: str, throwable: Throwable): ...
+    @typing.overload
+    def __init__(self, throwable: Throwable): ...
+
 class AbstractMethodError(IncompatibleClassChangeError):
     @typing.overload
     def __init__(self): ...
@@ -2643,6 +2711,18 @@ class Character(java.io.Serializable, Comparable[str], java.lang.constant.Consta
     @staticmethod
     def isDigit(int: int) -> bool: ...
     @staticmethod
+    def isEmoji(int: int) -> bool: ...
+    @staticmethod
+    def isEmojiComponent(int: int) -> bool: ...
+    @staticmethod
+    def isEmojiModifier(int: int) -> bool: ...
+    @staticmethod
+    def isEmojiModifierBase(int: int) -> bool: ...
+    @staticmethod
+    def isEmojiPresentation(int: int) -> bool: ...
+    @staticmethod
+    def isExtendedPictographic(int: int) -> bool: ...
+    @staticmethod
     def isHighSurrogate(char: str) -> bool: ...
     @typing.overload
     @staticmethod
@@ -3106,6 +3186,25 @@ class Character(java.io.Serializable, Comparable[str], java.lang.constant.Consta
         TANGUT_SUPPLEMENT: typing.ClassVar['Character.UnicodeBlock'] = ...
         SYMBOLS_FOR_LEGACY_COMPUTING: typing.ClassVar['Character.UnicodeBlock'] = ...
         CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G: typing.ClassVar['Character.UnicodeBlock'] = ...
+        ARABIC_EXTENDED_B: typing.ClassVar['Character.UnicodeBlock'] = ...
+        VITHKUQI: typing.ClassVar['Character.UnicodeBlock'] = ...
+        LATIN_EXTENDED_F: typing.ClassVar['Character.UnicodeBlock'] = ...
+        OLD_UYGHUR: typing.ClassVar['Character.UnicodeBlock'] = ...
+        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A: typing.ClassVar['Character.UnicodeBlock'] = ...
+        CYPRO_MINOAN: typing.ClassVar['Character.UnicodeBlock'] = ...
+        TANGSA: typing.ClassVar['Character.UnicodeBlock'] = ...
+        KANA_EXTENDED_B: typing.ClassVar['Character.UnicodeBlock'] = ...
+        ZNAMENNY_MUSICAL_NOTATION: typing.ClassVar['Character.UnicodeBlock'] = ...
+        LATIN_EXTENDED_G: typing.ClassVar['Character.UnicodeBlock'] = ...
+        TOTO: typing.ClassVar['Character.UnicodeBlock'] = ...
+        ETHIOPIC_EXTENDED_B: typing.ClassVar['Character.UnicodeBlock'] = ...
+        ARABIC_EXTENDED_C: typing.ClassVar['Character.UnicodeBlock'] = ...
+        DEVANAGARI_EXTENDED_A: typing.ClassVar['Character.UnicodeBlock'] = ...
+        KAWI: typing.ClassVar['Character.UnicodeBlock'] = ...
+        KAKTOVIK_NUMERALS: typing.ClassVar['Character.UnicodeBlock'] = ...
+        CYRILLIC_EXTENDED_D: typing.ClassVar['Character.UnicodeBlock'] = ...
+        NAG_MUNDARI: typing.ClassVar['Character.UnicodeBlock'] = ...
+        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H: typing.ClassVar['Character.UnicodeBlock'] = ...
         @staticmethod
         def forName(string: str) -> 'Character.UnicodeBlock': ...
         @typing.overload
@@ -3271,6 +3370,13 @@ class Character(java.io.Serializable, Comparable[str], java.lang.constant.Consta
         CHORASMIAN: typing.ClassVar['Character.UnicodeScript'] = ...
         DIVES_AKURU: typing.ClassVar['Character.UnicodeScript'] = ...
         KHITAN_SMALL_SCRIPT: typing.ClassVar['Character.UnicodeScript'] = ...
+        VITHKUQI: typing.ClassVar['Character.UnicodeScript'] = ...
+        OLD_UYGHUR: typing.ClassVar['Character.UnicodeScript'] = ...
+        CYPRO_MINOAN: typing.ClassVar['Character.UnicodeScript'] = ...
+        TANGSA: typing.ClassVar['Character.UnicodeScript'] = ...
+        TOTO: typing.ClassVar['Character.UnicodeScript'] = ...
+        KAWI: typing.ClassVar['Character.UnicodeScript'] = ...
+        NAG_MUNDARI: typing.ClassVar['Character.UnicodeScript'] = ...
         UNKNOWN: typing.ClassVar['Character.UnicodeScript'] = ...
         @staticmethod
         def forName(string: str) -> 'Character.UnicodeScript': ...
@@ -3317,7 +3423,7 @@ class Package(java.lang.NamedPackage, java.lang.reflect.AnnotatedElement):
     def isSealed(self, uRL: java.net.URL) -> bool: ...
     def toString(self) -> str: ...
 
-class StringBuffer(java.lang.AbstractStringBuilder, java.io.Serializable, Comparable['StringBuffer'], CharSequence):
+class StringBuffer(java.lang.AbstractStringBuilder, Appendable, java.io.Serializable, Comparable['StringBuffer'], CharSequence):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3397,6 +3503,10 @@ class StringBuffer(java.lang.AbstractStringBuilder, java.io.Serializable, Compar
     def lastIndexOf(self, string: str, int: int) -> int: ...
     def length(self) -> int: ...
     def offsetByCodePoints(self, int: int, int2: int) -> int: ...
+    @typing.overload
+    def repeat(self, int: int, int2: int) -> 'StringBuffer': ...
+    @typing.overload
+    def repeat(self, charSequence: typing.Union[CharSequence, str], int: int) -> 'StringBuffer': ...
     def replace(self, int: int, int2: int, string: str) -> 'StringBuffer': ...
     def reverse(self) -> 'StringBuffer': ...
     def setCharAt(self, int: int, char: str) -> None: ...
@@ -3409,7 +3519,7 @@ class StringBuffer(java.lang.AbstractStringBuilder, java.io.Serializable, Compar
     def toString(self) -> str: ...
     def trimToSize(self) -> None: ...
 
-class StringBuilder(java.lang.AbstractStringBuilder, java.io.Serializable, Comparable['StringBuilder'], CharSequence):
+class StringBuilder(java.lang.AbstractStringBuilder, Appendable, java.io.Serializable, Comparable['StringBuilder'], CharSequence):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3480,10 +3590,191 @@ class StringBuilder(java.lang.AbstractStringBuilder, java.io.Serializable, Compa
     def lastIndexOf(self, string: str) -> int: ...
     @typing.overload
     def lastIndexOf(self, string: str, int: int) -> int: ...
+    @typing.overload
+    def repeat(self, int: int, int2: int) -> 'StringBuilder': ...
+    @typing.overload
+    def repeat(self, charSequence: typing.Union[CharSequence, str], int: int) -> 'StringBuilder': ...
     def replace(self, int: int, int2: int, string: str) -> 'StringBuilder': ...
     def reverse(self) -> 'StringBuilder': ...
     def toString(self) -> str: ...
 
+class Thread(Runnable, _JThread):
+    MIN_PRIORITY: typing.ClassVar[int] = ...
+    NORM_PRIORITY: typing.ClassVar[int] = ...
+    MAX_PRIORITY: typing.ClassVar[int] = ...
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, runnable: typing.Union[Runnable, typing.Callable]): ...
+    @typing.overload
+    def __init__(self, runnable: typing.Union[Runnable, typing.Callable], string: str): ...
+    @typing.overload
+    def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable]): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str, long: int): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', runnable: typing.Union[Runnable, typing.Callable], string: str, long: int, boolean: bool): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', string: str): ...
+    @staticmethod
+    def activeCount() -> int: ...
+    def checkAccess(self) -> None: ...
+    def countStackFrames(self) -> int: ...
+    @staticmethod
+    def currentThread() -> 'Thread': ...
+    @staticmethod
+    def dumpStack() -> None: ...
+    @staticmethod
+    def enumerate(threadArray: typing.Union[typing.List['Thread'], jpype.JArray]) -> int: ...
+    @staticmethod
+    def getAllStackTraces() -> java.util.Map['Thread', typing.MutableSequence[StackTraceElement]]: ...
+    def getContextClassLoader(self) -> ClassLoader: ...
+    @staticmethod
+    def getDefaultUncaughtExceptionHandler() -> 'Thread.UncaughtExceptionHandler': ...
+    def getId(self) -> int: ...
+    def getName(self) -> str: ...
+    def getPriority(self) -> int: ...
+    def getStackTrace(self) -> typing.MutableSequence[StackTraceElement]: ...
+    def getState(self) -> 'Thread.State': ...
+    def getThreadGroup(self) -> 'ThreadGroup': ...
+    def getUncaughtExceptionHandler(self) -> 'Thread.UncaughtExceptionHandler': ...
+    @staticmethod
+    def holdsLock(object: typing.Any) -> bool: ...
+    def interrupt(self) -> None: ...
+    @staticmethod
+    def interrupted() -> bool: ...
+    def isAlive(self) -> bool: ...
+    def isDaemon(self) -> bool: ...
+    def isInterrupted(self) -> bool: ...
+    def isVirtual(self) -> bool: ...
+    @typing.overload
+    def join(self, duration: java.time.Duration) -> bool: ...
+    @typing.overload
+    def join(self) -> None: ...
+    @typing.overload
+    def join(self, long: int) -> None: ...
+    @typing.overload
+    def join(self, long: int, int: int) -> None: ...
+    @staticmethod
+    def ofPlatform() -> 'Thread.Builder.OfPlatform': ...
+    @staticmethod
+    def ofVirtual() -> 'Thread.Builder.OfVirtual': ...
+    @staticmethod
+    def onSpinWait() -> None: ...
+    def resume(self) -> None: ...
+    def run(self) -> None: ...
+    def setContextClassLoader(self, classLoader: ClassLoader) -> None: ...
+    def setDaemon(self, boolean: bool) -> None: ...
+    @staticmethod
+    def setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> None: ...
+    def setName(self, string: str) -> None: ...
+    def setPriority(self, int: int) -> None: ...
+    def setUncaughtExceptionHandler(self, uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> None: ...
+    @typing.overload
+    @staticmethod
+    def sleep(duration: java.time.Duration) -> None: ...
+    @typing.overload
+    @staticmethod
+    def sleep(long: int) -> None: ...
+    @typing.overload
+    @staticmethod
+    def sleep(long: int, int: int) -> None: ...
+    def start(self) -> None: ...
+    @staticmethod
+    def startVirtualThread(runnable: typing.Union[Runnable, typing.Callable]) -> 'Thread': ...
+    def stop(self) -> None: ...
+    def suspend(self) -> None: ...
+    def threadId(self) -> int: ...
+    def toString(self) -> str: ...
+    @staticmethod
+    def yield_() -> None: ...
+    class Builder:
+        def factory(self) -> java.util.concurrent.ThreadFactory: ...
+        def inheritInheritableThreadLocals(self, boolean: bool) -> 'Thread.Builder': ...
+        @typing.overload
+        def name(self, string: str) -> 'Thread.Builder': ...
+        @typing.overload
+        def name(self, string: str, long: int) -> 'Thread.Builder': ...
+        def start(self, runnable: typing.Union[Runnable, typing.Callable]) -> 'Thread': ...
+        def uncaughtExceptionHandler(self, uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> 'Thread.Builder': ...
+        def unstarted(self, runnable: typing.Union[Runnable, typing.Callable]) -> 'Thread': ...
+        class OfPlatform(java.lang.Thread.Builder):
+            @typing.overload
+            def daemon(self, boolean: bool) -> 'Thread.Builder.OfPlatform': ...
+            @typing.overload
+            def daemon(self) -> 'Thread.Builder.OfPlatform': ...
+            def group(self, threadGroup: 'ThreadGroup') -> 'Thread.Builder.OfPlatform': ...
+            def inheritInheritableThreadLocals(self, boolean: bool) -> 'Thread.Builder.OfPlatform': ...
+            @typing.overload
+            def name(self, string: str) -> 'Thread.Builder.OfPlatform': ...
+            @typing.overload
+            def name(self, string: str, long: int) -> 'Thread.Builder.OfPlatform': ...
+            def priority(self, int: int) -> 'Thread.Builder.OfPlatform': ...
+            def stackSize(self, long: int) -> 'Thread.Builder.OfPlatform': ...
+            def uncaughtExceptionHandler(self, uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> 'Thread.Builder.OfPlatform': ...
+        class OfVirtual(java.lang.Thread.Builder):
+            def inheritInheritableThreadLocals(self, boolean: bool) -> 'Thread.Builder.OfVirtual': ...
+            @typing.overload
+            def name(self, string: str) -> 'Thread.Builder.OfVirtual': ...
+            @typing.overload
+            def name(self, string: str, long: int) -> 'Thread.Builder.OfVirtual': ...
+            def uncaughtExceptionHandler(self, uncaughtExceptionHandler: typing.Union['Thread.UncaughtExceptionHandler', typing.Callable]) -> 'Thread.Builder.OfVirtual': ...
+    class State(Enum['Thread.State']):
+        NEW: typing.ClassVar['Thread.State'] = ...
+        RUNNABLE: typing.ClassVar['Thread.State'] = ...
+        BLOCKED: typing.ClassVar['Thread.State'] = ...
+        WAITING: typing.ClassVar['Thread.State'] = ...
+        TIMED_WAITING: typing.ClassVar['Thread.State'] = ...
+        TERMINATED: typing.ClassVar['Thread.State'] = ...
+        _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=Enum)  # <T>
+        @typing.overload
+        @staticmethod
+        def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+        @typing.overload
+        @staticmethod
+        def valueOf(string: str) -> 'Thread.State': ...
+        @staticmethod
+        def values() -> typing.MutableSequence['Thread.State']: ...
+    class UncaughtExceptionHandler:
+        def uncaughtException(self, thread: 'Thread', throwable: Throwable) -> None: ...
+
+class ThreadGroup(Thread.UncaughtExceptionHandler):
+    @typing.overload
+    def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, threadGroup: 'ThreadGroup', string: str): ...
+    def activeCount(self) -> int: ...
+    def activeGroupCount(self) -> int: ...
+    def checkAccess(self) -> None: ...
+    def destroy(self) -> None: ...
+    @typing.overload
+    def enumerate(self, threadGroupArray: typing.Union[typing.List['ThreadGroup'], jpype.JArray]) -> int: ...
+    @typing.overload
+    def enumerate(self, threadGroupArray: typing.Union[typing.List['ThreadGroup'], jpype.JArray], boolean: bool) -> int: ...
+    @typing.overload
+    def enumerate(self, threadArray: typing.Union[typing.List[Thread], jpype.JArray]) -> int: ...
+    @typing.overload
+    def enumerate(self, threadArray: typing.Union[typing.List[Thread], jpype.JArray], boolean: bool) -> int: ...
+    def getMaxPriority(self) -> int: ...
+    def getName(self) -> str: ...
+    def getParent(self) -> 'ThreadGroup': ...
+    def interrupt(self) -> None: ...
+    def isDaemon(self) -> bool: ...
+    def isDestroyed(self) -> bool: ...
+    def list(self) -> None: ...
+    def parentOf(self, threadGroup: 'ThreadGroup') -> bool: ...
+    def resume(self) -> None: ...
+    def setDaemon(self, boolean: bool) -> None: ...
+    def setMaxPriority(self, int: int) -> None: ...
+    def stop(self) -> None: ...
+    def suspend(self) -> None: ...
+    def toString(self) -> str: ...
+    def uncaughtException(self, thread: Thread, throwable: Throwable) -> None: ...
+
 class AbstractStringBuilder: ...
 
 class NamedPackage: ...
@@ -3515,7 +3806,6 @@ class __module_protocol__(Protocol):
     CloneNotSupportedException: typing.Type[CloneNotSupportedException]
     Cloneable: typing.Type[Cloneable]
     Comparable: typing.Type[Comparable]
-    Compiler: typing.Type[Compiler]
     Deprecated: typing.Type[Deprecated]
     Double: typing.Type[Double]
     Enum: typing.Type[Enum]
@@ -3544,6 +3834,7 @@ class __module_protocol__(Protocol):
     LayerInstantiationException: typing.Type[LayerInstantiationException]
     LinkageError: typing.Type[LinkageError]
     Long: typing.Type[Long]
+    MatchException: typing.Type[MatchException]
     Math: typing.Type[Math]
     Module: typing.Type[Module]
     ModuleLayer: typing.Type[ModuleLayer]
@@ -3572,6 +3863,7 @@ class __module_protocol__(Protocol):
     RuntimeException: typing.Type[RuntimeException]
     RuntimePermission: typing.Type[RuntimePermission]
     SafeVarargs: typing.Type[SafeVarargs]
+    ScopedValue: typing.Type[ScopedValue]
     SecurityException: typing.Type[SecurityException]
     SecurityManager: typing.Type[SecurityManager]
     Short: typing.Type[Short]
@@ -3583,6 +3875,7 @@ class __module_protocol__(Protocol):
     StringBuffer: typing.Type[StringBuffer]
     StringBuilder: typing.Type[StringBuilder]
     StringIndexOutOfBoundsException: typing.Type[StringIndexOutOfBoundsException]
+    StringTemplate: typing.Type[StringTemplate]
     SuppressWarnings: typing.Type[SuppressWarnings]
     System: typing.Type[System]
     Thread: typing.Type[Thread]
@@ -3598,8 +3891,10 @@ class __module_protocol__(Protocol):
     VerifyError: typing.Type[VerifyError]
     VirtualMachineError: typing.Type[VirtualMachineError]
     Void: typing.Type[Void]
+    WrongThreadException: typing.Type[WrongThreadException]
     annotation: java.lang.annotation.__module_protocol__
     constant: java.lang.constant.__module_protocol__
+    foreign: java.lang.foreign.__module_protocol__
     instrument: java.lang.instrument.__module_protocol__
     invoke: java.lang.invoke.__module_protocol__
     management: java.lang.management.__module_protocol__
diff --git a/java-stubs/lang/constant/__init__.pyi b/java-stubs/lang/constant/__init__.pyi
index 02b2db79c1c3fbd5a44e7c799f648a0c0dd19214..51dbec61a2213a8ec45b73d2459745c4eb1c4d4c 100644
--- a/java-stubs/lang/constant/__init__.pyi
+++ b/java-stubs/lang/constant/__init__.pyi
@@ -76,9 +76,14 @@ class ConstantDescs:
     CD_char: typing.ClassVar['ClassDesc'] = ...
     CD_boolean: typing.ClassVar['ClassDesc'] = ...
     CD_void: typing.ClassVar['ClassDesc'] = ...
+    BSM_CLASS_DATA: typing.ClassVar['DirectMethodHandleDesc'] = ...
+    BSM_CLASS_DATA_AT: typing.ClassVar['DirectMethodHandleDesc'] = ...
     NULL: typing.ClassVar[ConstantDesc] = ...
     TRUE: typing.ClassVar['DynamicConstantDesc'] = ...
     FALSE: typing.ClassVar['DynamicConstantDesc'] = ...
+    INIT_NAME: typing.ClassVar[str] = ...
+    CLASS_INIT_NAME: typing.ClassVar[str] = ...
+    MTD_void: typing.ClassVar['MethodTypeDesc'] = ...
     @staticmethod
     def ofCallsiteBootstrap(classDesc: 'ClassDesc', string: str, classDesc2: 'ClassDesc', *classDesc3: 'ClassDesc') -> 'DirectMethodHandleDesc': ...
     @staticmethod
@@ -105,6 +110,21 @@ class DynamicCallSiteDesc:
     def withArgs(self, *constantDesc: ConstantDesc) -> 'DynamicCallSiteDesc': ...
     def withNameAndType(self, string: str, methodTypeDesc: 'MethodTypeDesc') -> 'DynamicCallSiteDesc': ...
 
+class ModuleDesc:
+    def equals(self, object: typing.Any) -> bool: ...
+    def name(self) -> str: ...
+    @staticmethod
+    def of(string: str) -> 'ModuleDesc': ...
+
+class PackageDesc:
+    def equals(self, object: typing.Any) -> bool: ...
+    def internalName(self) -> str: ...
+    def name(self) -> str: ...
+    @staticmethod
+    def of(string: str) -> 'PackageDesc': ...
+    @staticmethod
+    def ofInternalName(string: str) -> 'PackageDesc': ...
+
 class ClassDesc(ConstantDesc, java.lang.invoke.TypeDescriptor.OfField['ClassDesc']):
     @typing.overload
     def arrayType(self) -> 'ClassDesc': ...
@@ -129,7 +149,10 @@ class ClassDesc(ConstantDesc, java.lang.invoke.TypeDescriptor.OfField['ClassDesc
     def of(string: str, string2: str) -> 'ClassDesc': ...
     @staticmethod
     def ofDescriptor(string: str) -> 'ClassDesc': ...
+    @staticmethod
+    def ofInternalName(string: str) -> 'ClassDesc': ...
     def packageName(self) -> str: ...
+    def resolveConstantDesc(self, lookup: java.lang.invoke.MethodHandles.Lookup) -> typing.Type[typing.Any]: ...
 
 _DynamicConstantDesc__T = typing.TypeVar('_DynamicConstantDesc__T')  # <T>
 class DynamicConstantDesc(ConstantDesc, typing.Generic[_DynamicConstantDesc__T]):
@@ -169,6 +192,7 @@ class MethodHandleDesc(ConstantDesc):
     def ofField(kind: 'DirectMethodHandleDesc.Kind', classDesc: ClassDesc, string: str, classDesc2: ClassDesc) -> 'DirectMethodHandleDesc': ...
     @staticmethod
     def ofMethod(kind: 'DirectMethodHandleDesc.Kind', classDesc: ClassDesc, string: str, methodTypeDesc: 'MethodTypeDesc') -> 'DirectMethodHandleDesc': ...
+    def resolveConstantDesc(self, lookup: java.lang.invoke.MethodHandles.Lookup) -> java.lang.invoke.MethodHandle: ...
 
 class MethodTypeDesc(ConstantDesc, java.lang.invoke.TypeDescriptor.OfMethod[ClassDesc, 'MethodTypeDesc']):
     def changeParameterType(self, int: int, classDesc: ClassDesc) -> 'MethodTypeDesc': ...
@@ -178,14 +202,22 @@ class MethodTypeDesc(ConstantDesc, java.lang.invoke.TypeDescriptor.OfMethod[Clas
     def dropParameterTypes(self, int: int, int2: int) -> 'MethodTypeDesc': ...
     def equals(self, object: typing.Any) -> bool: ...
     def insertParameterTypes(self, int: int, *classDesc: ClassDesc) -> 'MethodTypeDesc': ...
+    @typing.overload
+    @staticmethod
+    def of(classDesc: ClassDesc) -> 'MethodTypeDesc': ...
+    @typing.overload
     @staticmethod
     def of(classDesc: ClassDesc, *classDesc2: ClassDesc) -> 'MethodTypeDesc': ...
+    @typing.overload
+    @staticmethod
+    def of(classDesc: ClassDesc, list: java.util.List[ClassDesc]) -> 'MethodTypeDesc': ...
     @staticmethod
     def ofDescriptor(string: str) -> 'MethodTypeDesc': ...
     def parameterArray(self) -> typing.MutableSequence[ClassDesc]: ...
     def parameterCount(self) -> int: ...
     def parameterList(self) -> java.util.List[ClassDesc]: ...
     def parameterType(self, int: int) -> ClassDesc: ...
+    def resolveConstantDesc(self, lookup: java.lang.invoke.MethodHandles.Lookup) -> java.lang.invoke.MethodType: ...
     def returnType(self) -> ClassDesc: ...
 
 class DirectMethodHandleDesc(MethodHandleDesc):
@@ -239,3 +271,5 @@ class __module_protocol__(Protocol):
     DynamicConstantDesc: typing.Type[DynamicConstantDesc]
     MethodHandleDesc: typing.Type[MethodHandleDesc]
     MethodTypeDesc: typing.Type[MethodTypeDesc]
+    ModuleDesc: typing.Type[ModuleDesc]
+    PackageDesc: typing.Type[PackageDesc]
diff --git a/java-stubs/lang/foreign/__init__.pyi b/java-stubs/lang/foreign/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..90833820b5239ab3bae347804c3484628c262e57
--- /dev/null
+++ b/java-stubs/lang/foreign/__init__.pyi
@@ -0,0 +1,531 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import java
+import java.lang
+import java.lang.invoke
+import java.nio
+import java.nio.file
+import java.util
+import java.util.function
+import java.util.stream
+import jpype
+import jpype.protocol
+import typing
+
+
+
+class FunctionDescriptor:
+    def appendArgumentLayouts(self, *memoryLayout: 'MemoryLayout') -> 'FunctionDescriptor': ...
+    def argumentLayouts(self) -> java.util.List['MemoryLayout']: ...
+    def changeReturnLayout(self, memoryLayout: 'MemoryLayout') -> 'FunctionDescriptor': ...
+    def dropReturnLayout(self) -> 'FunctionDescriptor': ...
+    def insertArgumentLayouts(self, int: int, *memoryLayout: 'MemoryLayout') -> 'FunctionDescriptor': ...
+    @staticmethod
+    def of(memoryLayout: 'MemoryLayout', *memoryLayout2: 'MemoryLayout') -> 'FunctionDescriptor': ...
+    @staticmethod
+    def ofVoid(*memoryLayout: 'MemoryLayout') -> 'FunctionDescriptor': ...
+    def returnLayout(self) -> java.util.Optional['MemoryLayout']: ...
+    def toMethodType(self) -> java.lang.invoke.MethodType: ...
+
+class Linker:
+    def defaultLookup(self) -> 'SymbolLookup': ...
+    @typing.overload
+    def downcallHandle(self, functionDescriptor: FunctionDescriptor, *option: 'Linker.Option') -> java.lang.invoke.MethodHandle: ...
+    @typing.overload
+    def downcallHandle(self, memorySegment: 'MemorySegment', functionDescriptor: FunctionDescriptor, *option: 'Linker.Option') -> java.lang.invoke.MethodHandle: ...
+    @staticmethod
+    def nativeLinker() -> 'Linker': ...
+    def upcallStub(self, methodHandle: java.lang.invoke.MethodHandle, functionDescriptor: FunctionDescriptor, arena: 'Arena', *option: 'Linker.Option') -> 'MemorySegment': ...
+    class Option:
+        @staticmethod
+        def captureCallState(*string: str) -> 'Linker.Option': ...
+        @staticmethod
+        def captureStateLayout() -> 'StructLayout': ...
+        @staticmethod
+        def firstVariadicArg(int: int) -> 'Linker.Option': ...
+        @staticmethod
+        def isTrivial() -> 'Linker.Option': ...
+
+class MemoryLayout:
+    def byteAlignment(self) -> int: ...
+    def byteOffset(self, *pathElement: 'MemoryLayout.PathElement') -> int: ...
+    def byteOffsetHandle(self, *pathElement: 'MemoryLayout.PathElement') -> java.lang.invoke.MethodHandle: ...
+    def byteSize(self) -> int: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def name(self) -> java.util.Optional[str]: ...
+    @staticmethod
+    def paddingLayout(long: int) -> 'PaddingLayout': ...
+    def select(self, *pathElement: 'MemoryLayout.PathElement') -> 'MemoryLayout': ...
+    @typing.overload
+    @staticmethod
+    def sequenceLayout(memoryLayout: 'MemoryLayout') -> 'SequenceLayout': ...
+    @typing.overload
+    @staticmethod
+    def sequenceLayout(long: int, memoryLayout: 'MemoryLayout') -> 'SequenceLayout': ...
+    def sliceHandle(self, *pathElement: 'MemoryLayout.PathElement') -> java.lang.invoke.MethodHandle: ...
+    @staticmethod
+    def structLayout(*memoryLayout: 'MemoryLayout') -> 'StructLayout': ...
+    def toString(self) -> str: ...
+    @staticmethod
+    def unionLayout(*memoryLayout: 'MemoryLayout') -> 'UnionLayout': ...
+    def varHandle(self, *pathElement: 'MemoryLayout.PathElement') -> java.lang.invoke.VarHandle: ...
+    def withByteAlignment(self, long: int) -> 'MemoryLayout': ...
+    def withName(self, string: str) -> 'MemoryLayout': ...
+    def withoutName(self) -> 'MemoryLayout': ...
+    class PathElement:
+        @staticmethod
+        def dereferenceElement() -> 'MemoryLayout.PathElement': ...
+        @typing.overload
+        @staticmethod
+        def groupElement(string: str) -> 'MemoryLayout.PathElement': ...
+        @typing.overload
+        @staticmethod
+        def groupElement(long: int) -> 'MemoryLayout.PathElement': ...
+        @typing.overload
+        @staticmethod
+        def sequenceElement() -> 'MemoryLayout.PathElement': ...
+        @typing.overload
+        @staticmethod
+        def sequenceElement(long: int) -> 'MemoryLayout.PathElement': ...
+        @typing.overload
+        @staticmethod
+        def sequenceElement(long: int, long2: int) -> 'MemoryLayout.PathElement': ...
+
+class MemorySegment:
+    NULL: typing.ClassVar['MemorySegment'] = ...
+    def address(self) -> int: ...
+    def asByteBuffer(self) -> java.nio.ByteBuffer: ...
+    def asOverlappingSlice(self, memorySegment: 'MemorySegment') -> java.util.Optional['MemorySegment']: ...
+    def asReadOnly(self) -> 'MemorySegment': ...
+    @typing.overload
+    def asSlice(self, long: int) -> 'MemorySegment': ...
+    @typing.overload
+    def asSlice(self, long: int, long2: int) -> 'MemorySegment': ...
+    @typing.overload
+    def asSlice(self, long: int, long2: int, long3: int) -> 'MemorySegment': ...
+    @typing.overload
+    def asSlice(self, long: int, memoryLayout: MemoryLayout) -> 'MemorySegment': ...
+    def byteSize(self) -> int: ...
+    @typing.overload
+    @staticmethod
+    def copy(object: typing.Any, int: int, memorySegment: 'MemorySegment', valueLayout: 'ValueLayout', long: int, int2: int) -> None: ...
+    @typing.overload
+    @staticmethod
+    def copy(memorySegment: 'MemorySegment', valueLayout: 'ValueLayout', long: int, object: typing.Any, int: int, int2: int) -> None: ...
+    @typing.overload
+    @staticmethod
+    def copy(memorySegment: 'MemorySegment', valueLayout: 'ValueLayout', long: int, memorySegment2: 'MemorySegment', valueLayout2: 'ValueLayout', long2: int, long3: int) -> None: ...
+    @typing.overload
+    @staticmethod
+    def copy(memorySegment: 'MemorySegment', long: int, memorySegment2: 'MemorySegment', long2: int, long3: int) -> None: ...
+    def copyFrom(self, memorySegment: 'MemorySegment') -> 'MemorySegment': ...
+    def elements(self, memoryLayout: MemoryLayout) -> java.util.stream.Stream['MemorySegment']: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def fill(self, byte: int) -> 'MemorySegment': ...
+    def force(self) -> None: ...
+    @typing.overload
+    def get(self, ofBoolean: 'ValueLayout.OfBoolean', long: int) -> bool: ...
+    @typing.overload
+    def get(self, ofByte: 'ValueLayout.OfByte', long: int) -> int: ...
+    @typing.overload
+    def get(self, ofChar: 'ValueLayout.OfChar', long: int) -> str: ...
+    @typing.overload
+    def get(self, ofDouble: 'ValueLayout.OfDouble', long: int) -> float: ...
+    @typing.overload
+    def get(self, ofFloat: 'ValueLayout.OfFloat', long: int) -> float: ...
+    @typing.overload
+    def get(self, ofInt: 'ValueLayout.OfInt', long: int) -> int: ...
+    @typing.overload
+    def get(self, addressLayout: 'AddressLayout', long: int) -> 'MemorySegment': ...
+    @typing.overload
+    def get(self, ofLong: 'ValueLayout.OfLong', long: int) -> int: ...
+    @typing.overload
+    def get(self, ofShort: 'ValueLayout.OfShort', long: int) -> int: ...
+    @typing.overload
+    def getAtIndex(self, ofBoolean: 'ValueLayout.OfBoolean', long: int) -> bool: ...
+    @typing.overload
+    def getAtIndex(self, ofByte: 'ValueLayout.OfByte', long: int) -> int: ...
+    @typing.overload
+    def getAtIndex(self, ofChar: 'ValueLayout.OfChar', long: int) -> str: ...
+    @typing.overload
+    def getAtIndex(self, ofDouble: 'ValueLayout.OfDouble', long: int) -> float: ...
+    @typing.overload
+    def getAtIndex(self, ofFloat: 'ValueLayout.OfFloat', long: int) -> float: ...
+    @typing.overload
+    def getAtIndex(self, ofInt: 'ValueLayout.OfInt', long: int) -> int: ...
+    @typing.overload
+    def getAtIndex(self, addressLayout: 'AddressLayout', long: int) -> 'MemorySegment': ...
+    @typing.overload
+    def getAtIndex(self, ofLong: 'ValueLayout.OfLong', long: int) -> int: ...
+    @typing.overload
+    def getAtIndex(self, ofShort: 'ValueLayout.OfShort', long: int) -> int: ...
+    def getUtf8String(self, long: int) -> str: ...
+    def hashCode(self) -> int: ...
+    def heapBase(self) -> java.util.Optional[typing.Any]: ...
+    def isAccessibleBy(self, thread: java.lang.Thread) -> bool: ...
+    def isLoaded(self) -> bool: ...
+    def isMapped(self) -> bool: ...
+    def isNative(self) -> bool: ...
+    def isReadOnly(self) -> bool: ...
+    def load(self) -> None: ...
+    @typing.overload
+    def mismatch(self, memorySegment: 'MemorySegment') -> int: ...
+    @typing.overload
+    @staticmethod
+    def mismatch(memorySegment: 'MemorySegment', long: int, long2: int, memorySegment2: 'MemorySegment', long3: int, long4: int) -> int: ...
+    @staticmethod
+    def ofAddress(long: int) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(charArray: typing.Union[typing.List[str], jpype.JArray]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(floatArray: typing.Union[typing.List[float], jpype.JArray]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(intArray: typing.Union[typing.List[int], jpype.JArray]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(longArray: typing.Union[typing.List[int], jpype.JArray]) -> 'MemorySegment': ...
+    @typing.overload
+    @staticmethod
+    def ofArray(shortArray: typing.Union[typing.List[int], jpype.JArray]) -> 'MemorySegment': ...
+    @staticmethod
+    def ofBuffer(buffer: java.nio.Buffer) -> 'MemorySegment': ...
+    @typing.overload
+    def reinterpret(self, arena: 'Arena', consumer: typing.Union[java.util.function.Consumer['MemorySegment'], typing.Callable[['MemorySegment'], None]]) -> 'MemorySegment': ...
+    @typing.overload
+    def reinterpret(self, long: int) -> 'MemorySegment': ...
+    @typing.overload
+    def reinterpret(self, long: int, arena: 'Arena', consumer: typing.Union[java.util.function.Consumer['MemorySegment'], typing.Callable[['MemorySegment'], None]]) -> 'MemorySegment': ...
+    def scope(self) -> 'MemorySegment.Scope': ...
+    def segmentOffset(self, memorySegment: 'MemorySegment') -> int: ...
+    @typing.overload
+    def set(self, addressLayout: 'AddressLayout', long: int, memorySegment: 'MemorySegment') -> None: ...
+    @typing.overload
+    def set(self, ofBoolean: 'ValueLayout.OfBoolean', long: int, boolean: bool) -> None: ...
+    @typing.overload
+    def set(self, ofByte: 'ValueLayout.OfByte', long: int, byte: int) -> None: ...
+    @typing.overload
+    def set(self, ofChar: 'ValueLayout.OfChar', long: int, char: str) -> None: ...
+    @typing.overload
+    def set(self, ofDouble: 'ValueLayout.OfDouble', long: int, double: float) -> None: ...
+    @typing.overload
+    def set(self, ofFloat: 'ValueLayout.OfFloat', long: int, float: float) -> None: ...
+    @typing.overload
+    def set(self, ofInt: 'ValueLayout.OfInt', long: int, int: int) -> None: ...
+    @typing.overload
+    def set(self, ofLong: 'ValueLayout.OfLong', long: int, long2: int) -> None: ...
+    @typing.overload
+    def set(self, ofShort: 'ValueLayout.OfShort', long: int, short: int) -> None: ...
+    @typing.overload
+    def setAtIndex(self, addressLayout: 'AddressLayout', long: int, memorySegment: 'MemorySegment') -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofBoolean: 'ValueLayout.OfBoolean', long: int, boolean: bool) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofByte: 'ValueLayout.OfByte', long: int, byte: int) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofChar: 'ValueLayout.OfChar', long: int, char: str) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofDouble: 'ValueLayout.OfDouble', long: int, double: float) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofFloat: 'ValueLayout.OfFloat', long: int, float: float) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofInt: 'ValueLayout.OfInt', long: int, int: int) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofLong: 'ValueLayout.OfLong', long: int, long2: int) -> None: ...
+    @typing.overload
+    def setAtIndex(self, ofShort: 'ValueLayout.OfShort', long: int, short: int) -> None: ...
+    def setUtf8String(self, long: int, string: str) -> None: ...
+    def spliterator(self, memoryLayout: MemoryLayout) -> java.util.Spliterator['MemorySegment']: ...
+    @typing.overload
+    def toArray(self, ofByte: 'ValueLayout.OfByte') -> typing.MutableSequence[int]: ...
+    @typing.overload
+    def toArray(self, ofChar: 'ValueLayout.OfChar') -> typing.MutableSequence[str]: ...
+    @typing.overload
+    def toArray(self, ofDouble: 'ValueLayout.OfDouble') -> typing.MutableSequence[float]: ...
+    @typing.overload
+    def toArray(self, ofFloat: 'ValueLayout.OfFloat') -> typing.MutableSequence[float]: ...
+    @typing.overload
+    def toArray(self, ofInt: 'ValueLayout.OfInt') -> typing.MutableSequence[int]: ...
+    @typing.overload
+    def toArray(self, ofLong: 'ValueLayout.OfLong') -> typing.MutableSequence[int]: ...
+    @typing.overload
+    def toArray(self, ofShort: 'ValueLayout.OfShort') -> typing.MutableSequence[int]: ...
+    def unload(self) -> None: ...
+    class Scope:
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def isAlive(self) -> bool: ...
+
+class SegmentAllocator:
+    @typing.overload
+    def allocate(self, long: int, long2: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, addressLayout: 'AddressLayout', memorySegment: MemorySegment) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, memoryLayout: MemoryLayout) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofByte: 'ValueLayout.OfByte', byte: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofChar: 'ValueLayout.OfChar', char: str) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofDouble: 'ValueLayout.OfDouble', double: float) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofFloat: 'ValueLayout.OfFloat', float: float) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofInt: 'ValueLayout.OfInt', int: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofLong: 'ValueLayout.OfLong', long: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofShort: 'ValueLayout.OfShort', short: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, long: int) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, memoryLayout: MemoryLayout, long: int) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofByte: 'ValueLayout.OfByte', *byte: int) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofChar: 'ValueLayout.OfChar', *char: str) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofDouble: 'ValueLayout.OfDouble', *double: float) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofFloat: 'ValueLayout.OfFloat', *float: float) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofInt: 'ValueLayout.OfInt', *int: int) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofLong: 'ValueLayout.OfLong', *long: int) -> MemorySegment: ...
+    @typing.overload
+    def allocateArray(self, ofShort: 'ValueLayout.OfShort', *short: int) -> MemorySegment: ...
+    def allocateUtf8String(self, string: str) -> MemorySegment: ...
+    @staticmethod
+    def prefixAllocator(memorySegment: MemorySegment) -> 'SegmentAllocator': ...
+    @staticmethod
+    def slicingAllocator(memorySegment: MemorySegment) -> 'SegmentAllocator': ...
+
+class SymbolLookup:
+    def find(self, string: str) -> java.util.Optional[MemorySegment]: ...
+    @typing.overload
+    @staticmethod
+    def libraryLookup(string: str, arena: 'Arena') -> 'SymbolLookup': ...
+    @typing.overload
+    @staticmethod
+    def libraryLookup(path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], arena: 'Arena') -> 'SymbolLookup': ...
+    @staticmethod
+    def loaderLookup() -> 'SymbolLookup': ...
+    def or_(self, symbolLookup: typing.Union['SymbolLookup', typing.Callable]) -> 'SymbolLookup': ...
+
+class Arena(SegmentAllocator, java.lang.AutoCloseable):
+    @typing.overload
+    def allocate(self, long: int, long2: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, addressLayout: 'AddressLayout', memorySegment: MemorySegment) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, memoryLayout: MemoryLayout) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofByte: 'ValueLayout.OfByte', byte: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofChar: 'ValueLayout.OfChar', char: str) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofDouble: 'ValueLayout.OfDouble', double: float) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofFloat: 'ValueLayout.OfFloat', float: float) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofInt: 'ValueLayout.OfInt', int: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofLong: 'ValueLayout.OfLong', long: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, ofShort: 'ValueLayout.OfShort', short: int) -> MemorySegment: ...
+    @typing.overload
+    def allocate(self, long: int) -> MemorySegment: ...
+    def close(self) -> None: ...
+    @staticmethod
+    def global_() -> 'Arena': ...
+    @staticmethod
+    def ofAuto() -> 'Arena': ...
+    @staticmethod
+    def ofConfined() -> 'Arena': ...
+    @staticmethod
+    def ofShared() -> 'Arena': ...
+    def scope(self) -> MemorySegment.Scope: ...
+
+class GroupLayout(MemoryLayout):
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def memberLayouts(self) -> java.util.List[MemoryLayout]: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'GroupLayout': ...
+    def withName(self, string: str) -> 'GroupLayout': ...
+    def withoutName(self) -> 'GroupLayout': ...
+
+class PaddingLayout(MemoryLayout):
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'PaddingLayout': ...
+    def withName(self, string: str) -> 'PaddingLayout': ...
+    def withoutName(self) -> 'PaddingLayout': ...
+
+class SequenceLayout(MemoryLayout):
+    def elementCount(self) -> int: ...
+    def elementLayout(self) -> MemoryLayout: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def flatten(self) -> 'SequenceLayout': ...
+    def hashCode(self) -> int: ...
+    def reshape(self, *long: int) -> 'SequenceLayout': ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'SequenceLayout': ...
+    def withElementCount(self, long: int) -> 'SequenceLayout': ...
+    def withName(self, string: str) -> 'SequenceLayout': ...
+    def withoutName(self) -> MemoryLayout: ...
+
+class StructLayout(GroupLayout):
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'StructLayout': ...
+    def withName(self, string: str) -> 'StructLayout': ...
+    def withoutName(self) -> 'StructLayout': ...
+
+class UnionLayout(GroupLayout):
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'UnionLayout': ...
+    def withName(self, string: str) -> 'UnionLayout': ...
+    def withoutName(self) -> 'UnionLayout': ...
+
+class AddressLayout(java.lang.foreign.ValueLayout):
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def targetLayout(self) -> java.util.Optional[MemoryLayout]: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'AddressLayout': ...
+    def withName(self, string: str) -> 'AddressLayout': ...
+    def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'AddressLayout': ...
+    def withTargetLayout(self, memoryLayout: MemoryLayout) -> 'AddressLayout': ...
+    def withoutName(self) -> 'AddressLayout': ...
+    def withoutTargetLayout(self) -> 'AddressLayout': ...
+
+class ValueLayout(MemoryLayout):
+    ADDRESS: typing.ClassVar[AddressLayout] = ...
+    JAVA_BYTE: typing.ClassVar['ValueLayout.OfByte'] = ...
+    JAVA_BOOLEAN: typing.ClassVar['ValueLayout.OfBoolean'] = ...
+    JAVA_CHAR: typing.ClassVar['ValueLayout.OfChar'] = ...
+    JAVA_SHORT: typing.ClassVar['ValueLayout.OfShort'] = ...
+    JAVA_INT: typing.ClassVar['ValueLayout.OfInt'] = ...
+    JAVA_LONG: typing.ClassVar['ValueLayout.OfLong'] = ...
+    JAVA_FLOAT: typing.ClassVar['ValueLayout.OfFloat'] = ...
+    JAVA_DOUBLE: typing.ClassVar['ValueLayout.OfDouble'] = ...
+    ADDRESS_UNALIGNED: typing.ClassVar[AddressLayout] = ...
+    JAVA_CHAR_UNALIGNED: typing.ClassVar['ValueLayout.OfChar'] = ...
+    JAVA_SHORT_UNALIGNED: typing.ClassVar['ValueLayout.OfShort'] = ...
+    JAVA_INT_UNALIGNED: typing.ClassVar['ValueLayout.OfInt'] = ...
+    JAVA_LONG_UNALIGNED: typing.ClassVar['ValueLayout.OfLong'] = ...
+    JAVA_FLOAT_UNALIGNED: typing.ClassVar['ValueLayout.OfFloat'] = ...
+    JAVA_DOUBLE_UNALIGNED: typing.ClassVar['ValueLayout.OfDouble'] = ...
+    def arrayElementVarHandle(self, *int: int) -> java.lang.invoke.VarHandle: ...
+    def carrier(self) -> typing.Type[typing.Any]: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def hashCode(self) -> int: ...
+    def order(self) -> java.nio.ByteOrder: ...
+    def toString(self) -> str: ...
+    def withByteAlignment(self, long: int) -> 'ValueLayout': ...
+    def withName(self, string: str) -> 'ValueLayout': ...
+    def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout': ...
+    def withoutName(self) -> 'ValueLayout': ...
+    class OfBoolean(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfBoolean': ...
+        def withName(self, string: str) -> 'ValueLayout.OfBoolean': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfBoolean': ...
+        def withoutName(self) -> 'ValueLayout.OfBoolean': ...
+    class OfByte(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfByte': ...
+        def withName(self, string: str) -> 'ValueLayout.OfByte': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfByte': ...
+        def withoutName(self) -> 'ValueLayout.OfByte': ...
+    class OfChar(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfChar': ...
+        def withName(self, string: str) -> 'ValueLayout.OfChar': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfChar': ...
+        def withoutName(self) -> 'ValueLayout.OfChar': ...
+    class OfDouble(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfDouble': ...
+        def withName(self, string: str) -> 'ValueLayout.OfDouble': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfDouble': ...
+        def withoutName(self) -> 'ValueLayout.OfDouble': ...
+    class OfFloat(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfFloat': ...
+        def withName(self, string: str) -> 'ValueLayout.OfFloat': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfFloat': ...
+        def withoutName(self) -> 'ValueLayout.OfFloat': ...
+    class OfInt(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfInt': ...
+        def withName(self, string: str) -> 'ValueLayout.OfInt': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfInt': ...
+        def withoutName(self) -> 'ValueLayout.OfInt': ...
+    class OfLong(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfLong': ...
+        def withName(self, string: str) -> 'ValueLayout.OfLong': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfLong': ...
+        def withoutName(self) -> 'ValueLayout.OfLong': ...
+    class OfShort(java.lang.foreign.ValueLayout):
+        def equals(self, object: typing.Any) -> bool: ...
+        def hashCode(self) -> int: ...
+        def toString(self) -> str: ...
+        def withByteAlignment(self, long: int) -> 'ValueLayout.OfShort': ...
+        def withName(self, string: str) -> 'ValueLayout.OfShort': ...
+        def withOrder(self, byteOrder: java.nio.ByteOrder) -> 'ValueLayout.OfShort': ...
+        def withoutName(self) -> 'ValueLayout.OfShort': ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("java.lang.foreign")``.
+
+    AddressLayout: typing.Type[AddressLayout]
+    Arena: typing.Type[Arena]
+    FunctionDescriptor: typing.Type[FunctionDescriptor]
+    GroupLayout: typing.Type[GroupLayout]
+    Linker: typing.Type[Linker]
+    MemoryLayout: typing.Type[MemoryLayout]
+    MemorySegment: typing.Type[MemorySegment]
+    PaddingLayout: typing.Type[PaddingLayout]
+    SegmentAllocator: typing.Type[SegmentAllocator]
+    SequenceLayout: typing.Type[SequenceLayout]
+    StructLayout: typing.Type[StructLayout]
+    SymbolLookup: typing.Type[SymbolLookup]
+    UnionLayout: typing.Type[UnionLayout]
+    ValueLayout: typing.Type[ValueLayout]
diff --git a/java-stubs/lang/invoke/__init__.pyi b/java-stubs/lang/invoke/__init__.pyi
index b51db8dd3d7d25696609c2200b5a34822e6afb38..19bef8a6b0a10bef2cb9d8af0f9832d39a9177e9 100644
--- a/java-stubs/lang/invoke/__init__.pyi
+++ b/java-stubs/lang/invoke/__init__.pyi
@@ -9,6 +9,7 @@ import java
 import java.io
 import java.lang
 import java.lang.constant
+import java.lang.foreign
 import java.lang.reflect
 import java.nio
 import java.util
@@ -154,6 +155,8 @@ class MethodHandles:
     @staticmethod
     def collectArguments(methodHandle: MethodHandle, int: int, methodHandle2: MethodHandle) -> MethodHandle: ...
     @staticmethod
+    def collectCoordinates(varHandle: 'VarHandle', int: int, methodHandle: MethodHandle) -> 'VarHandle': ...
+    @staticmethod
     def constant(class_: typing.Type[typing.Any], object: typing.Any) -> MethodHandle: ...
     @typing.overload
     @staticmethod
@@ -172,6 +175,8 @@ class MethodHandles:
     @staticmethod
     def dropArgumentsToMatch(methodHandle: MethodHandle, int: int, list: java.util.List[typing.Type[typing.Any]], int2: int) -> MethodHandle: ...
     @staticmethod
+    def dropCoordinates(varHandle: 'VarHandle', int: int, *class_: typing.Type[typing.Any]) -> 'VarHandle': ...
+    @staticmethod
     def dropReturn(methodHandle: MethodHandle) -> MethodHandle: ...
     @staticmethod
     def empty(methodType: 'MethodType') -> MethodHandle: ...
@@ -182,7 +187,11 @@ class MethodHandles:
     @staticmethod
     def filterArguments(methodHandle: MethodHandle, int: int, *methodHandle2: MethodHandle) -> MethodHandle: ...
     @staticmethod
+    def filterCoordinates(varHandle: 'VarHandle', int: int, *methodHandle: MethodHandle) -> 'VarHandle': ...
+    @staticmethod
     def filterReturnValue(methodHandle: MethodHandle, methodHandle2: MethodHandle) -> MethodHandle: ...
+    @staticmethod
+    def filterValue(varHandle: 'VarHandle', methodHandle: MethodHandle, methodHandle2: MethodHandle) -> 'VarHandle': ...
     @typing.overload
     @staticmethod
     def foldArguments(methodHandle: MethodHandle, int: int, methodHandle2: MethodHandle) -> MethodHandle: ...
@@ -196,6 +205,8 @@ class MethodHandles:
     @staticmethod
     def insertArguments(methodHandle: MethodHandle, int: int, *object: typing.Any) -> MethodHandle: ...
     @staticmethod
+    def insertCoordinates(varHandle: 'VarHandle', int: int, *object: typing.Any) -> 'VarHandle': ...
+    @staticmethod
     def invoker(methodType: 'MethodType') -> MethodHandle: ...
     @staticmethod
     def iteratedLoop(methodHandle: MethodHandle, methodHandle2: MethodHandle, methodHandle3: MethodHandle) -> MethodHandle: ...
@@ -204,8 +215,12 @@ class MethodHandles:
     @staticmethod
     def loop(*methodHandleArray: typing.Union[typing.List[MethodHandle], jpype.JArray]) -> MethodHandle: ...
     @staticmethod
+    def memorySegmentViewVarHandle(valueLayout: java.lang.foreign.ValueLayout) -> 'VarHandle': ...
+    @staticmethod
     def permuteArguments(methodHandle: MethodHandle, methodType: 'MethodType', *int: int) -> MethodHandle: ...
     @staticmethod
+    def permuteCoordinates(varHandle: 'VarHandle', list: java.util.List[typing.Type[typing.Any]], *int: int) -> 'VarHandle': ...
+    @staticmethod
     def privateLookupIn(class_: typing.Type[typing.Any], lookup: 'MethodHandles.Lookup') -> 'MethodHandles.Lookup': ...
     @staticmethod
     def publicLookup() -> 'MethodHandles.Lookup': ...
@@ -236,13 +251,15 @@ class MethodHandles:
         MODULE: typing.ClassVar[int] = ...
         UNCONDITIONAL: typing.ClassVar[int] = ...
         ORIGINAL: typing.ClassVar[int] = ...
-        def accessClass(self, class_: typing.Type[typing.Any]) -> typing.Type[typing.Any]: ...
+        _accessClass__T = typing.TypeVar('_accessClass__T')  # <T>
+        def accessClass(self, class_: typing.Type[_accessClass__T]) -> typing.Type[_accessClass__T]: ...
         def bind(self, object: typing.Any, string: str, methodType: 'MethodType') -> MethodHandle: ...
         def defineClass(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> typing.Type[typing.Any]: ...
         def defineHiddenClass(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], boolean: bool, *classOption: 'MethodHandles.Lookup.ClassOption') -> 'MethodHandles.Lookup': ...
         def defineHiddenClassWithClassData(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], object: typing.Any, boolean: bool, *classOption: 'MethodHandles.Lookup.ClassOption') -> 'MethodHandles.Lookup': ...
         def dropLookupMode(self, int: int) -> 'MethodHandles.Lookup': ...
-        def ensureInitialized(self, class_: typing.Type[typing.Any]) -> typing.Type[typing.Any]: ...
+        _ensureInitialized__T = typing.TypeVar('_ensureInitialized__T')  # <T>
+        def ensureInitialized(self, class_: typing.Type[_ensureInitialized__T]) -> typing.Type[_ensureInitialized__T]: ...
         def findClass(self, string: str) -> typing.Type[typing.Any]: ...
         def findConstructor(self, class_: typing.Type[typing.Any], methodType: 'MethodType') -> MethodHandle: ...
         def findGetter(self, class_: typing.Type[typing.Any], string: str, class2: typing.Type[typing.Any]) -> MethodHandle: ...
@@ -303,10 +320,17 @@ class StringConcatException(java.lang.Exception):
     def __init__(self, string: str, throwable: java.lang.Throwable): ...
 
 class StringConcatFactory:
+    MAX_INDY_CONCAT_ARG_SLOTS: typing.ClassVar[int] = ...
     @staticmethod
     def makeConcat(lookup: MethodHandles.Lookup, string: str, methodType: 'MethodType') -> CallSite: ...
     @staticmethod
     def makeConcatWithConstants(lookup: MethodHandles.Lookup, string: str, methodType: 'MethodType', string2: str, *object: typing.Any) -> CallSite: ...
+    @staticmethod
+    def makeConcatWithTemplate(list: java.util.List[str], list2: java.util.List[typing.Type[typing.Any]]) -> MethodHandle: ...
+    @staticmethod
+    def makeConcatWithTemplateCluster(list: java.util.List[str], list2: java.util.List[typing.Type[typing.Any]], int: int) -> java.util.List[MethodHandle]: ...
+    @staticmethod
+    def makeConcatWithTemplateGetters(list: java.util.List[str], list2: java.util.List[MethodHandle], int: int) -> MethodHandle: ...
 
 class SwitchPoint:
     def __init__(self): ...
diff --git a/java-stubs/lang/module/__init__.pyi b/java-stubs/lang/module/__init__.pyi
index f0566b4fa50ee500d7af7228bd966b56ef9c1b6f..2c4790fbb8287d24b132a1409db8f369df7dbd05 100644
--- a/java-stubs/lang/module/__init__.pyi
+++ b/java-stubs/lang/module/__init__.pyi
@@ -7,6 +7,7 @@ else:
 
 import java.io
 import java.lang
+import java.lang.reflect
 import java.net
 import java.nio
 import java.nio.file
@@ -53,6 +54,7 @@ class InvalidModuleDescriptorException(java.lang.RuntimeException):
     def __init__(self, string: str): ...
 
 class ModuleDescriptor(java.lang.Comparable['ModuleDescriptor']):
+    def accessFlags(self) -> java.util.Set[java.lang.reflect.AccessFlag]: ...
     def compareTo(self, moduleDescriptor: 'ModuleDescriptor') -> int: ...
     def equals(self, object: typing.Any) -> bool: ...
     def exports(self) -> java.util.Set['ModuleDescriptor.Exports']: ...
@@ -135,6 +137,7 @@ class ModuleDescriptor(java.lang.Comparable['ModuleDescriptor']):
         @typing.overload
         def version(self, version: 'ModuleDescriptor.Version') -> 'ModuleDescriptor.Builder': ...
     class Exports(java.lang.Comparable['ModuleDescriptor.Exports']):
+        def accessFlags(self) -> java.util.Set[java.lang.reflect.AccessFlag]: ...
         def compareTo(self, exports: 'ModuleDescriptor.Exports') -> int: ...
         def equals(self, object: typing.Any) -> bool: ...
         def hashCode(self) -> int: ...
@@ -170,6 +173,7 @@ class ModuleDescriptor(java.lang.Comparable['ModuleDescriptor']):
         @staticmethod
         def values() -> typing.MutableSequence['ModuleDescriptor.Modifier']: ...
     class Opens(java.lang.Comparable['ModuleDescriptor.Opens']):
+        def accessFlags(self) -> java.util.Set[java.lang.reflect.AccessFlag]: ...
         def compareTo(self, opens: 'ModuleDescriptor.Opens') -> int: ...
         def equals(self, object: typing.Any) -> bool: ...
         def hashCode(self) -> int: ...
@@ -198,6 +202,7 @@ class ModuleDescriptor(java.lang.Comparable['ModuleDescriptor']):
         def service(self) -> str: ...
         def toString(self) -> str: ...
     class Requires(java.lang.Comparable['ModuleDescriptor.Requires']):
+        def accessFlags(self) -> java.util.Set[java.lang.reflect.AccessFlag]: ...
         def compareTo(self, requires: 'ModuleDescriptor.Requires') -> int: ...
         def compiledVersion(self) -> java.util.Optional['ModuleDescriptor.Version']: ...
         def equals(self, object: typing.Any) -> bool: ...
diff --git a/java-stubs/lang/reflect/__init__.pyi b/java-stubs/lang/reflect/__init__.pyi
index e1dc934d5e82b194d8e12e0056fbde7f930be226..2708db22c2c0726fbe2a0cb84cab9fd3350142a9 100644
--- a/java-stubs/lang/reflect/__init__.pyi
+++ b/java-stubs/lang/reflect/__init__.pyi
@@ -9,11 +9,73 @@ import java.io
 import java.lang
 import java.lang.annotation
 import java.security
+import java.util
 import jpype
 import typing
 
 
 
+class AccessFlag(java.lang.Enum['AccessFlag']):
+    PUBLIC: typing.ClassVar['AccessFlag'] = ...
+    PRIVATE: typing.ClassVar['AccessFlag'] = ...
+    PROTECTED: typing.ClassVar['AccessFlag'] = ...
+    STATIC: typing.ClassVar['AccessFlag'] = ...
+    FINAL: typing.ClassVar['AccessFlag'] = ...
+    SUPER: typing.ClassVar['AccessFlag'] = ...
+    OPEN: typing.ClassVar['AccessFlag'] = ...
+    TRANSITIVE: typing.ClassVar['AccessFlag'] = ...
+    SYNCHRONIZED: typing.ClassVar['AccessFlag'] = ...
+    STATIC_PHASE: typing.ClassVar['AccessFlag'] = ...
+    VOLATILE: typing.ClassVar['AccessFlag'] = ...
+    BRIDGE: typing.ClassVar['AccessFlag'] = ...
+    TRANSIENT: typing.ClassVar['AccessFlag'] = ...
+    VARARGS: typing.ClassVar['AccessFlag'] = ...
+    NATIVE: typing.ClassVar['AccessFlag'] = ...
+    INTERFACE: typing.ClassVar['AccessFlag'] = ...
+    ABSTRACT: typing.ClassVar['AccessFlag'] = ...
+    STRICT: typing.ClassVar['AccessFlag'] = ...
+    SYNTHETIC: typing.ClassVar['AccessFlag'] = ...
+    ANNOTATION: typing.ClassVar['AccessFlag'] = ...
+    ENUM: typing.ClassVar['AccessFlag'] = ...
+    MANDATED: typing.ClassVar['AccessFlag'] = ...
+    MODULE: typing.ClassVar['AccessFlag'] = ...
+    @typing.overload
+    def locations(self) -> java.util.Set['AccessFlag.Location']: ...
+    @typing.overload
+    def locations(self, classFileFormatVersion: 'ClassFileFormatVersion') -> java.util.Set['AccessFlag.Location']: ...
+    def mask(self) -> int: ...
+    @staticmethod
+    def maskToAccessFlags(int: int, location: 'AccessFlag.Location') -> java.util.Set['AccessFlag']: ...
+    def sourceModifier(self) -> bool: ...
+    _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=java.lang.Enum)  # <T>
+    @typing.overload
+    @staticmethod
+    def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+    @typing.overload
+    @staticmethod
+    def valueOf(string: str) -> 'AccessFlag': ...
+    @staticmethod
+    def values() -> typing.MutableSequence['AccessFlag']: ...
+    class Location(java.lang.Enum['AccessFlag.Location']):
+        CLASS: typing.ClassVar['AccessFlag.Location'] = ...
+        FIELD: typing.ClassVar['AccessFlag.Location'] = ...
+        METHOD: typing.ClassVar['AccessFlag.Location'] = ...
+        INNER_CLASS: typing.ClassVar['AccessFlag.Location'] = ...
+        METHOD_PARAMETER: typing.ClassVar['AccessFlag.Location'] = ...
+        MODULE: typing.ClassVar['AccessFlag.Location'] = ...
+        MODULE_REQUIRES: typing.ClassVar['AccessFlag.Location'] = ...
+        MODULE_EXPORTS: typing.ClassVar['AccessFlag.Location'] = ...
+        MODULE_OPENS: typing.ClassVar['AccessFlag.Location'] = ...
+        _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=java.lang.Enum)  # <T>
+        @typing.overload
+        @staticmethod
+        def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+        @typing.overload
+        @staticmethod
+        def valueOf(string: str) -> 'AccessFlag.Location': ...
+        @staticmethod
+        def values() -> typing.MutableSequence['AccessFlag.Location']: ...
+
 class AnnotatedElement:
     _getAnnotation__T = typing.TypeVar('_getAnnotation__T', bound=java.lang.annotation.Annotation)  # <T>
     def getAnnotation(self, class_: typing.Type[_getAnnotation__T]) -> _getAnnotation__T: ...
@@ -73,6 +135,48 @@ class Array:
     @staticmethod
     def setShort(object: typing.Any, int: int, short: int) -> None: ...
 
+class ClassFileFormatVersion(java.lang.Enum['ClassFileFormatVersion']):
+    RELEASE_0: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_1: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_2: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_3: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_4: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_5: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_6: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_7: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_8: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_9: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_10: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_11: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_12: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_13: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_14: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_15: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_16: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_17: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_18: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_19: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_20: typing.ClassVar['ClassFileFormatVersion'] = ...
+    RELEASE_21: typing.ClassVar['ClassFileFormatVersion'] = ...
+    @staticmethod
+    def fromMajor(int: int) -> 'ClassFileFormatVersion': ...
+    @staticmethod
+    def latest() -> 'ClassFileFormatVersion': ...
+    def major(self) -> int: ...
+    def runtimeVersion(self) -> java.lang.Runtime.Version: ...
+    _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=java.lang.Enum)  # <T>
+    @typing.overload
+    @staticmethod
+    def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+    @typing.overload
+    @staticmethod
+    def valueOf(version: java.lang.Runtime.Version) -> 'ClassFileFormatVersion': ...
+    @typing.overload
+    @staticmethod
+    def valueOf(string: str) -> 'ClassFileFormatVersion': ...
+    @staticmethod
+    def values() -> typing.MutableSequence['ClassFileFormatVersion']: ...
+
 class GenericSignatureFormatError(java.lang.ClassFormatError):
     @typing.overload
     def __init__(self): ...
@@ -113,6 +217,7 @@ class MalformedParametersException(java.lang.RuntimeException):
 class Member:
     PUBLIC: typing.ClassVar[int] = ...
     DECLARED: typing.ClassVar[int] = ...
+    def accessFlags(self) -> java.util.Set[AccessFlag]: ...
     def getDeclaringClass(self) -> typing.Type[typing.Any]: ...
     def getModifiers(self) -> int: ...
     def getName(self) -> str: ...
@@ -235,6 +340,7 @@ class GenericDeclaration(AnnotatedElement):
     def getTypeParameters(self) -> typing.MutableSequence['TypeVariable'[typing.Any]]: ...
 
 class Parameter(AnnotatedElement):
+    def accessFlags(self) -> java.util.Set[AccessFlag]: ...
     def equals(self, object: typing.Any) -> bool: ...
     def getAnnotatedType(self) -> AnnotatedType: ...
     _getAnnotation__T = typing.TypeVar('_getAnnotation__T', bound=java.lang.annotation.Annotation)  # <T>
@@ -307,6 +413,7 @@ class AnnotatedWildcardType(AnnotatedType):
     def getAnnotatedUpperBounds(self) -> typing.MutableSequence[AnnotatedType]: ...
 
 class Executable(AccessibleObject, Member, GenericDeclaration):
+    def accessFlags(self) -> java.util.Set[AccessFlag]: ...
     def getAnnotatedExceptionTypes(self) -> typing.MutableSequence[AnnotatedType]: ...
     def getAnnotatedParameterTypes(self) -> typing.MutableSequence[AnnotatedType]: ...
     def getAnnotatedReceiverType(self) -> AnnotatedType: ...
@@ -332,6 +439,7 @@ class Executable(AccessibleObject, Member, GenericDeclaration):
     def toGenericString(self) -> str: ...
 
 class Field(AccessibleObject, Member):
+    def accessFlags(self) -> java.util.Set[AccessFlag]: ...
     def equals(self, object: typing.Any) -> bool: ...
     def get(self, object: typing.Any) -> typing.Any: ...
     def getAnnotatedType(self) -> AnnotatedType: ...
@@ -440,6 +548,7 @@ class Method(Executable):
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("java.lang.reflect")``.
 
+    AccessFlag: typing.Type[AccessFlag]
     AccessibleObject: typing.Type[AccessibleObject]
     AnnotatedArrayType: typing.Type[AnnotatedArrayType]
     AnnotatedElement: typing.Type[AnnotatedElement]
@@ -448,6 +557,7 @@ class __module_protocol__(Protocol):
     AnnotatedTypeVariable: typing.Type[AnnotatedTypeVariable]
     AnnotatedWildcardType: typing.Type[AnnotatedWildcardType]
     Array: typing.Type[Array]
+    ClassFileFormatVersion: typing.Type[ClassFileFormatVersion]
     Constructor: typing.Type[Constructor]
     Executable: typing.Type[Executable]
     Field: typing.Type[Field]
diff --git a/java-stubs/lang/runtime/__init__.pyi b/java-stubs/lang/runtime/__init__.pyi
index f860a22d63420ffdbfa258fcbedf5dd4e12a62a9..c112535ff2bcc41ffea67fbf1b20ef3502602ee2 100644
--- a/java-stubs/lang/runtime/__init__.pyi
+++ b/java-stubs/lang/runtime/__init__.pyi
@@ -20,9 +20,18 @@ class SwitchBootstraps:
     @staticmethod
     def typeSwitch(lookup: java.lang.invoke.MethodHandles.Lookup, string: str, methodType: java.lang.invoke.MethodType, *object: typing.Any) -> java.lang.invoke.CallSite: ...
 
+class TemplateRuntime:
+    @staticmethod
+    def newLargeStringTemplate(lookup: java.lang.invoke.MethodHandles.Lookup, string: str, methodType: java.lang.invoke.MethodType) -> java.lang.invoke.CallSite: ...
+    @staticmethod
+    def newStringTemplate(lookup: java.lang.invoke.MethodHandles.Lookup, string: str, methodType: java.lang.invoke.MethodType, *string2: str) -> java.lang.invoke.CallSite: ...
+    @staticmethod
+    def processStringTemplate(lookup: java.lang.invoke.MethodHandles.Lookup, string: str, methodType: java.lang.invoke.MethodType, methodHandle: java.lang.invoke.MethodHandle, *string2: str) -> java.lang.invoke.CallSite: ...
+
 
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("java.lang.runtime")``.
 
     ObjectMethods: typing.Type[ObjectMethods]
     SwitchBootstraps: typing.Type[SwitchBootstraps]
+    TemplateRuntime: typing.Type[TemplateRuntime]
diff --git a/java-stubs/math/__init__.pyi b/java-stubs/math/__init__.pyi
index ad61967cbb43a2aad8707d929ce9a385cd7e282c..1bcd6358b0cd5ab79c1bdac7e2bbed29426c9bb5 100644
--- a/java-stubs/math/__init__.pyi
+++ b/java-stubs/math/__init__.pyi
@@ -18,6 +18,7 @@ import typing
 class BigDecimal(java.lang.Number, java.lang.Comparable['BigDecimal'], _JBigDecimal):
     ZERO: typing.ClassVar['BigDecimal'] = ...
     ONE: typing.ClassVar['BigDecimal'] = ...
+    TWO: typing.ClassVar['BigDecimal'] = ...
     TEN: typing.ClassVar['BigDecimal'] = ...
     ROUND_UP: typing.ClassVar[int] = ...
     ROUND_DOWN: typing.ClassVar[int] = ...
@@ -210,6 +211,7 @@ class BigInteger(java.lang.Number, java.lang.Comparable['BigInteger']):
     def nextProbablePrime(self) -> 'BigInteger': ...
     def not_(self) -> 'BigInteger': ...
     def or_(self, bigInteger: 'BigInteger') -> 'BigInteger': ...
+    def parallelMultiply(self, bigInteger: 'BigInteger') -> 'BigInteger': ...
     def pow(self, int: int) -> 'BigInteger': ...
     @staticmethod
     def probablePrime(int: int, random: java.util.Random) -> 'BigInteger': ...
diff --git a/java-stubs/net/__init__.pyi b/java-stubs/net/__init__.pyi
index 38a0b63f0fa492565dcdd9f6c172b51607ec7468..af98fd082c692fb33b3e87ab909e83be9d11e716 100644
--- a/java-stubs/net/__init__.pyi
+++ b/java-stubs/net/__init__.pyi
@@ -500,6 +500,10 @@ class SocketException(java.io.IOException):
     def __init__(self): ...
     @typing.overload
     def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, string: str, throwable: java.lang.Throwable): ...
+    @typing.overload
+    def __init__(self, throwable: java.lang.Throwable): ...
 
 class SocketImplFactory:
     def createSocketImpl(self) -> 'SocketImpl': ...
@@ -639,6 +643,8 @@ class URL(java.io.Serializable):
     def getRef(self) -> str: ...
     def getUserInfo(self) -> str: ...
     def hashCode(self) -> int: ...
+    @staticmethod
+    def of(uRI: URI, uRLStreamHandler: 'URLStreamHandler') -> 'URL': ...
     @typing.overload
     def openConnection(self) -> 'URLConnection': ...
     @typing.overload
diff --git a/java-stubs/net/http/__init__.pyi b/java-stubs/net/http/__init__.pyi
index eb93bcadde69930485bead8100a5ff4c663b2814..6e12d6de701eb90dfe31c7760cf5306f4ec78361 100644
--- a/java-stubs/net/http/__init__.pyi
+++ b/java-stubs/net/http/__init__.pyi
@@ -23,12 +23,15 @@ import typing
 
 
 
-class HttpClient:
+class HttpClient(java.lang.AutoCloseable):
     def authenticator(self) -> java.util.Optional[java.net.Authenticator]: ...
+    def awaitTermination(self, duration: java.time.Duration) -> bool: ...
+    def close(self) -> None: ...
     def connectTimeout(self) -> java.util.Optional[java.time.Duration]: ...
     def cookieHandler(self) -> java.util.Optional[java.net.CookieHandler]: ...
     def executor(self) -> java.util.Optional[java.util.concurrent.Executor]: ...
     def followRedirects(self) -> 'HttpClient.Redirect': ...
+    def isTerminated(self) -> bool: ...
     @staticmethod
     def newBuilder() -> 'HttpClient.Builder': ...
     @staticmethod
@@ -43,6 +46,8 @@ class HttpClient:
     def sendAsync(self, httpRequest: 'HttpRequest', bodyHandler: typing.Union['HttpResponse.BodyHandler'[_sendAsync_0__T], typing.Callable[['HttpResponse.ResponseInfo'], 'HttpResponse.BodySubscriber'[typing.Any]]]) -> java.util.concurrent.CompletableFuture['HttpResponse'[_sendAsync_0__T]]: ...
     @typing.overload
     def sendAsync(self, httpRequest: 'HttpRequest', bodyHandler: typing.Union['HttpResponse.BodyHandler'[_sendAsync_1__T], typing.Callable[['HttpResponse.ResponseInfo'], 'HttpResponse.BodySubscriber'[typing.Any]]], pushPromiseHandler: typing.Union['HttpResponse.PushPromiseHandler'[_sendAsync_1__T], typing.Callable[['HttpRequest', 'HttpRequest', java.util.function.Function['HttpResponse.BodyHandler'[typing.Any], java.util.concurrent.CompletableFuture['HttpResponse'[typing.Any]]]], None]]) -> java.util.concurrent.CompletableFuture['HttpResponse'[_sendAsync_1__T]]: ...
+    def shutdown(self) -> None: ...
+    def shutdownNow(self) -> None: ...
     def sslContext(self) -> javax.net.ssl.SSLContext: ...
     def sslParameters(self) -> javax.net.ssl.SSLParameters: ...
     def version(self) -> 'HttpClient.Version': ...
@@ -54,6 +59,7 @@ class HttpClient:
         def cookieHandler(self, cookieHandler: java.net.CookieHandler) -> 'HttpClient.Builder': ...
         def executor(self, executor: typing.Union[java.util.concurrent.Executor, typing.Callable]) -> 'HttpClient.Builder': ...
         def followRedirects(self, redirect: 'HttpClient.Redirect') -> 'HttpClient.Builder': ...
+        def localAddress(self, inetAddress: java.net.InetAddress) -> 'HttpClient.Builder': ...
         def priority(self, int: int) -> 'HttpClient.Builder': ...
         def proxy(self, proxySelector: java.net.ProxySelector) -> 'HttpClient.Builder': ...
         def sslContext(self, sSLContext: javax.net.ssl.SSLContext) -> 'HttpClient.Builder': ...
@@ -149,6 +155,7 @@ class HttpRequest:
     class Builder:
         def DELETE(self) -> 'HttpRequest.Builder': ...
         def GET(self) -> 'HttpRequest.Builder': ...
+        def HEAD(self) -> 'HttpRequest.Builder': ...
         def POST(self, bodyPublisher: 'HttpRequest.BodyPublisher') -> 'HttpRequest.Builder': ...
         def PUT(self, bodyPublisher: 'HttpRequest.BodyPublisher') -> 'HttpRequest.Builder': ...
         def build(self) -> 'HttpRequest': ...
diff --git a/java-stubs/net/spi/__init__.pyi b/java-stubs/net/spi/__init__.pyi
index e10c759c60fa3487a312a265d7d8b38cb2d16df9..64c7bec81cf16140a0f9ae6e30908179c821d06d 100644
--- a/java-stubs/net/spi/__init__.pyi
+++ b/java-stubs/net/spi/__init__.pyi
@@ -6,14 +6,37 @@ else:
     from typing_extensions import Protocol
 
 import java.net
+import java.util.stream
+import jpype
 import typing
 
 
 
+class InetAddressResolver:
+    def lookupByAddress(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes]) -> str: ...
+    def lookupByName(self, string: str, lookupPolicy: 'InetAddressResolver.LookupPolicy') -> java.util.stream.Stream[java.net.InetAddress]: ...
+    class LookupPolicy:
+        IPV4: typing.ClassVar[int] = ...
+        IPV6: typing.ClassVar[int] = ...
+        IPV4_FIRST: typing.ClassVar[int] = ...
+        IPV6_FIRST: typing.ClassVar[int] = ...
+        def characteristics(self) -> int: ...
+        @staticmethod
+        def of(int: int) -> 'InetAddressResolver.LookupPolicy': ...
+
+class InetAddressResolverProvider:
+    def get(self, configuration: 'InetAddressResolverProvider.Configuration') -> InetAddressResolver: ...
+    def name(self) -> str: ...
+    class Configuration:
+        def builtinResolver(self) -> InetAddressResolver: ...
+        def lookupLocalHostName(self) -> str: ...
+
 class URLStreamHandlerProvider(java.net.URLStreamHandlerFactory): ...
 
 
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("java.net.spi")``.
 
+    InetAddressResolver: typing.Type[InetAddressResolver]
+    InetAddressResolverProvider: typing.Type[InetAddressResolverProvider]
     URLStreamHandlerProvider: typing.Type[URLStreamHandlerProvider]
diff --git a/java-stubs/nio/channels/__init__.pyi b/java-stubs/nio/channels/__init__.pyi
index fcf80a22e2d5e1f4a15e6d0e458c91e1bf089cec..dde9f098451b5e9dd9c741ecc5d474395011420b 100644
--- a/java-stubs/nio/channels/__init__.pyi
+++ b/java-stubs/nio/channels/__init__.pyi
@@ -7,6 +7,7 @@ else:
 
 import java.io
 import java.lang
+import java.lang.foreign
 import java.net
 import java.nio
 import java.nio.channels.spi
@@ -508,8 +509,11 @@ class FileChannel(java.nio.channels.spi.AbstractInterruptibleChannel, SeekableBy
     def lock(self, long: int, long2: int, boolean: bool) -> FileLock: ...
     @typing.overload
     def lock(self) -> FileLock: ...
+    @typing.overload
     def map(self, mapMode: 'FileChannel.MapMode', long: int, long2: int) -> java.nio.MappedByteBuffer: ...
     @typing.overload
+    def map(self, mapMode: 'FileChannel.MapMode', long: int, long2: int, arena: java.lang.foreign.Arena) -> java.lang.foreign.MemorySegment: ...
+    @typing.overload
     @staticmethod
     def open(path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], *openOption: java.nio.file.OpenOption) -> 'FileChannel': ...
     @typing.overload
diff --git a/java-stubs/nio/charset/__init__.pyi b/java-stubs/nio/charset/__init__.pyi
index 1a546f083305d8d8d4ffdaaa6d70cd1d1831d7fb..6e74455786f5d5afd5414b36a89be80b5570ec8d 100644
--- a/java-stubs/nio/charset/__init__.pyi
+++ b/java-stubs/nio/charset/__init__.pyi
@@ -37,8 +37,12 @@ class Charset(java.lang.Comparable['Charset']):
     @typing.overload
     def encode(self, charBuffer: java.nio.CharBuffer) -> java.nio.ByteBuffer: ...
     def equals(self, object: typing.Any) -> bool: ...
+    @typing.overload
     @staticmethod
     def forName(string: str) -> 'Charset': ...
+    @typing.overload
+    @staticmethod
+    def forName(string: str, charset: 'Charset') -> 'Charset': ...
     def hashCode(self) -> int: ...
     def isRegistered(self) -> bool: ...
     @staticmethod
diff --git a/java-stubs/nio/file/spi/__init__.pyi b/java-stubs/nio/file/spi/__init__.pyi
index 29042d1a0fce7318fc028d54a54c1fd9a2f271ea..e91284bb9415dd42d13d8cf4a5a2ee18a7e86401 100644
--- a/java-stubs/nio/file/spi/__init__.pyi
+++ b/java-stubs/nio/file/spi/__init__.pyi
@@ -25,6 +25,7 @@ class FileSystemProvider:
     def createSymbolicLink(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], path2: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], *fileAttribute: java.nio.file.attribute.FileAttribute[typing.Any]) -> None: ...
     def delete(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath]) -> None: ...
     def deleteIfExists(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath]) -> bool: ...
+    def exists(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], *linkOption: java.nio.file.LinkOption) -> bool: ...
     _getFileAttributeView__V = typing.TypeVar('_getFileAttributeView__V', bound=java.nio.file.attribute.FileAttributeView)  # <V>
     def getFileAttributeView(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], class_: typing.Type[_getFileAttributeView__V], *linkOption: java.nio.file.LinkOption) -> _getFileAttributeView__V: ...
     def getFileStore(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath]) -> java.nio.file.FileStore: ...
@@ -51,6 +52,8 @@ class FileSystemProvider:
     def readAttributes(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], class_: typing.Type[_readAttributes_0__A], *linkOption: java.nio.file.LinkOption) -> _readAttributes_0__A: ...
     @typing.overload
     def readAttributes(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], string: str, *linkOption: java.nio.file.LinkOption) -> java.util.Map[str, typing.Any]: ...
+    _readAttributesIfExists__A = typing.TypeVar('_readAttributesIfExists__A', bound=java.nio.file.attribute.BasicFileAttributes)  # <A>
+    def readAttributesIfExists(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], class_: typing.Type[_readAttributesIfExists__A], *linkOption: java.nio.file.LinkOption) -> _readAttributesIfExists__A: ...
     def readSymbolicLink(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath]) -> java.nio.file.Path: ...
     def setAttribute(self, path: typing.Union[java.nio.file.Path, jpype.protocol.SupportsPath], string: str, object: typing.Any, *linkOption: java.nio.file.LinkOption) -> None: ...
 
diff --git a/java-stubs/security/__init__.pyi b/java-stubs/security/__init__.pyi
index 170a4186ee7165c2cef54d344b5da7e333533a51..6692a35a299941b5f17e92d73a6123cb70abac0c 100644
--- a/java-stubs/security/__init__.pyi
+++ b/java-stubs/security/__init__.pyi
@@ -253,6 +253,10 @@ class InvalidParameterException(java.lang.IllegalArgumentException):
     def __init__(self): ...
     @typing.overload
     def __init__(self, string: str): ...
+    @typing.overload
+    def __init__(self, string: str, throwable: java.lang.Throwable): ...
+    @typing.overload
+    def __init__(self, throwable: java.lang.Throwable): ...
 
 class Key(java.io.Serializable):
     serialVersionUID: typing.ClassVar[int] = ...
@@ -316,6 +320,7 @@ class KeyStoreSpi:
     def engineContainsAlias(self, string: str) -> bool: ...
     def engineDeleteEntry(self, string: str) -> None: ...
     def engineEntryInstanceOf(self, string: str, class_: typing.Type['KeyStore.Entry']) -> bool: ...
+    def engineGetAttributes(self, string: str) -> java.util.Set['KeyStore.Entry.Attribute']: ...
     def engineGetCertificate(self, string: str) -> java.security.cert.Certificate: ...
     def engineGetCertificateAlias(self, certificate: java.security.cert.Certificate) -> str: ...
     def engineGetCertificateChain(self, string: str) -> typing.MutableSequence[java.security.cert.Certificate]: ...
@@ -955,6 +960,7 @@ class KeyStore:
     def containsAlias(self, string: str) -> bool: ...
     def deleteEntry(self, string: str) -> None: ...
     def entryInstanceOf(self, string: str, class_: typing.Type['KeyStore.Entry']) -> bool: ...
+    def getAttributes(self, string: str) -> java.util.Set['KeyStore.Entry.Attribute']: ...
     def getCertificate(self, string: str) -> java.security.cert.Certificate: ...
     def getCertificateAlias(self, certificate: java.security.cert.Certificate) -> str: ...
     def getCertificateChain(self, string: str) -> typing.MutableSequence[java.security.cert.Certificate]: ...
diff --git a/java-stubs/text/__init__.pyi b/java-stubs/text/__init__.pyi
index efe5f8c03f5da951c8076bc7f0dd05298cad801b..2d5c0a59685c7f82717b4299148aa420f0af52d5 100644
--- a/java-stubs/text/__init__.pyi
+++ b/java-stubs/text/__init__.pyi
@@ -243,6 +243,7 @@ class DecimalFormatSymbols(java.lang.Cloneable, java.io.Serializable):
     @staticmethod
     def getInstance(locale: java.util.Locale) -> 'DecimalFormatSymbols': ...
     def getInternationalCurrencySymbol(self) -> str: ...
+    def getLocale(self) -> java.util.Locale: ...
     def getMinusSign(self) -> str: ...
     def getMonetaryDecimalSeparator(self) -> str: ...
     def getMonetaryGroupingSeparator(self) -> str: ...
diff --git a/java-stubs/time/__init__.pyi b/java-stubs/time/__init__.pyi
index 84910a6a73b881a824555583edea636d7c25bfec..f45c575c0eff5e42aa3d49d86ad329638a591380 100644
--- a/java-stubs/time/__init__.pyi
+++ b/java-stubs/time/__init__.pyi
@@ -77,6 +77,7 @@ class Duration(java.time.temporal.TemporalAmount, java.lang.Comparable['Duration
     def getUnits(self) -> java.util.List[java.time.temporal.TemporalUnit]: ...
     def hashCode(self) -> int: ...
     def isNegative(self) -> bool: ...
+    def isPositive(self) -> bool: ...
     def isZero(self) -> bool: ...
     @typing.overload
     def minus(self, duration: 'Duration') -> 'Duration': ...
@@ -1183,6 +1184,7 @@ class ZoneOffset(ZoneId, java.time.temporal.TemporalAccessor, java.time.temporal
     def getTotalSeconds(self) -> int: ...
     def hashCode(self) -> int: ...
     def isSupported(self, temporalField: java.time.temporal.TemporalField) -> bool: ...
+    def normalized(self) -> ZoneId: ...
     @typing.overload
     @staticmethod
     def of(string: str) -> ZoneId: ...
diff --git a/java-stubs/time/chrono/__init__.pyi b/java-stubs/time/chrono/__init__.pyi
index 1d8793232fe943520609c7bd5fe3e3ca25314c83..2601dc9a4fa8c07becdc23a3517a68d096dda271 100644
--- a/java-stubs/time/chrono/__init__.pyi
+++ b/java-stubs/time/chrono/__init__.pyi
@@ -202,6 +202,7 @@ class Chronology(java.lang.Comparable['Chronology']):
     def getDisplayName(self, textStyle: java.time.format.TextStyle, locale: java.util.Locale) -> str: ...
     def getId(self) -> str: ...
     def hashCode(self) -> int: ...
+    def isIsoBased(self) -> bool: ...
     def isLeapYear(self, long: int) -> bool: ...
     def localDateTime(self, temporalAccessor: java.time.temporal.TemporalAccessor) -> ChronoLocalDateTime[ChronoLocalDate]: ...
     @staticmethod
@@ -380,6 +381,7 @@ class IsoChronology(AbstractChronology, java.io.Serializable):
     def eras(self) -> java.util.List[Era]: ...
     def getCalendarType(self) -> str: ...
     def getId(self) -> str: ...
+    def isIsoBased(self) -> bool: ...
     def isLeapYear(self, long: int) -> bool: ...
     def localDateTime(self, temporalAccessor: java.time.temporal.TemporalAccessor) -> java.time.LocalDateTime: ...
     def period(self, int: int, int2: int, int3: int) -> java.time.Period: ...
@@ -414,6 +416,7 @@ class JapaneseChronology(AbstractChronology, java.io.Serializable):
     def eras(self) -> java.util.List[Era]: ...
     def getCalendarType(self) -> str: ...
     def getId(self) -> str: ...
+    def isIsoBased(self) -> bool: ...
     def isLeapYear(self, long: int) -> bool: ...
     def localDateTime(self, temporalAccessor: java.time.temporal.TemporalAccessor) -> ChronoLocalDateTime['JapaneseDate']: ...
     def prolepticYear(self, era: typing.Union[Era, typing.Callable], int: int) -> int: ...
@@ -447,6 +450,7 @@ class MinguoChronology(AbstractChronology, java.io.Serializable):
     def eras(self) -> java.util.List[Era]: ...
     def getCalendarType(self) -> str: ...
     def getId(self) -> str: ...
+    def isIsoBased(self) -> bool: ...
     def isLeapYear(self, long: int) -> bool: ...
     def localDateTime(self, temporalAccessor: java.time.temporal.TemporalAccessor) -> ChronoLocalDateTime['MinguoDate']: ...
     def prolepticYear(self, era: typing.Union[Era, typing.Callable], int: int) -> int: ...
@@ -480,6 +484,7 @@ class ThaiBuddhistChronology(AbstractChronology, java.io.Serializable):
     def eras(self) -> java.util.List[Era]: ...
     def getCalendarType(self) -> str: ...
     def getId(self) -> str: ...
+    def isIsoBased(self) -> bool: ...
     def isLeapYear(self, long: int) -> bool: ...
     def localDateTime(self, temporalAccessor: java.time.temporal.TemporalAccessor) -> ChronoLocalDateTime['ThaiBuddhistDate']: ...
     def prolepticYear(self, era: typing.Union[Era, typing.Callable], int: int) -> int: ...
diff --git a/java-stubs/time/format/__init__.pyi b/java-stubs/time/format/__init__.pyi
index 6c3ba241ceae66e7e912790a731606a0825ee7d3..e06b6babd6155e8e69f316b85fbd79730c07c7e4 100644
--- a/java-stubs/time/format/__init__.pyi
+++ b/java-stubs/time/format/__init__.pyi
@@ -49,6 +49,8 @@ class DateTimeFormatter:
     @staticmethod
     def ofLocalizedDateTime(formatStyle: 'FormatStyle', formatStyle2: 'FormatStyle') -> 'DateTimeFormatter': ...
     @staticmethod
+    def ofLocalizedPattern(string: str) -> 'DateTimeFormatter': ...
+    @staticmethod
     def ofLocalizedTime(formatStyle: 'FormatStyle') -> 'DateTimeFormatter': ...
     @typing.overload
     @staticmethod
@@ -103,6 +105,9 @@ class DateTimeFormatterBuilder:
     def appendLiteral(self, char: str) -> 'DateTimeFormatterBuilder': ...
     @typing.overload
     def appendLiteral(self, string: str) -> 'DateTimeFormatterBuilder': ...
+    @typing.overload
+    def appendLocalized(self, string: str) -> 'DateTimeFormatterBuilder': ...
+    @typing.overload
     def appendLocalized(self, formatStyle: 'FormatStyle', formatStyle2: 'FormatStyle') -> 'DateTimeFormatterBuilder': ...
     def appendLocalizedOffset(self, textStyle: 'TextStyle') -> 'DateTimeFormatterBuilder': ...
     def appendOffset(self, string: str, string2: str) -> 'DateTimeFormatterBuilder': ...
@@ -132,6 +137,10 @@ class DateTimeFormatterBuilder:
     def appendZoneText(self, textStyle: 'TextStyle') -> 'DateTimeFormatterBuilder': ...
     @typing.overload
     def appendZoneText(self, textStyle: 'TextStyle', set: java.util.Set[java.time.ZoneId]) -> 'DateTimeFormatterBuilder': ...
+    @typing.overload
+    @staticmethod
+    def getLocalizedDateTimePattern(string: str, chronology: java.time.chrono.Chronology, locale: java.util.Locale) -> str: ...
+    @typing.overload
     @staticmethod
     def getLocalizedDateTimePattern(formatStyle: 'FormatStyle', formatStyle2: 'FormatStyle', chronology: java.time.chrono.Chronology, locale: java.util.Locale) -> str: ...
     def optionalEnd(self) -> 'DateTimeFormatterBuilder': ...
diff --git a/java-stubs/util/__init__.pyi b/java-stubs/util/__init__.pyi
index 9a3f0971da2542618b42bf3b6116503383f43b5d..800dc358470f09a204c07449afc29ed693338e32 100644
--- a/java-stubs/util/__init__.pyi
+++ b/java-stubs/util/__init__.pyi
@@ -16,6 +16,7 @@ import datetime
 import java
 import java.io
 import java.lang
+import java.lang.invoke
 import java.math
 import java.nio
 import java.nio.channels
@@ -1102,6 +1103,9 @@ class Collections:
     _nCopies__T = typing.TypeVar('_nCopies__T')  # <T>
     @staticmethod
     def nCopies(int: int, t: _nCopies__T) -> 'List'[_nCopies__T]: ...
+    _newSequencedSetFromMap__E = typing.TypeVar('_newSequencedSetFromMap__E')  # <E>
+    @staticmethod
+    def newSequencedSetFromMap(sequencedMap: 'SequencedMap'[_newSequencedSetFromMap__E, bool]) -> 'SequencedSet'[_newSequencedSetFromMap__E]: ...
     _newSetFromMap__E = typing.TypeVar('_newSetFromMap__E')  # <E>
     @staticmethod
     def newSetFromMap(map: typing.Union['Map'[_newSetFromMap__E, bool], typing.Mapping[_newSetFromMap__E, bool]]) -> 'Set'[_newSetFromMap__E]: ...
@@ -1126,6 +1130,9 @@ class Collections:
     @typing.overload
     @staticmethod
     def shuffle(list: 'List'[typing.Any], random: 'Random') -> None: ...
+    @typing.overload
+    @staticmethod
+    def shuffle(list: 'List'[typing.Any], randomGenerator: typing.Union[java.util.random.RandomGenerator, typing.Callable]) -> None: ...
     _singleton__T = typing.TypeVar('_singleton__T')  # <T>
     @staticmethod
     def singleton(t: _singleton__T) -> 'Set'[_singleton__T]: ...
@@ -1190,6 +1197,16 @@ class Collections:
     _unmodifiableNavigableSet__T = typing.TypeVar('_unmodifiableNavigableSet__T')  # <T>
     @staticmethod
     def unmodifiableNavigableSet(navigableSet: 'NavigableSet'[_unmodifiableNavigableSet__T]) -> 'NavigableSet'[_unmodifiableNavigableSet__T]: ...
+    _unmodifiableSequencedCollection__T = typing.TypeVar('_unmodifiableSequencedCollection__T')  # <T>
+    @staticmethod
+    def unmodifiableSequencedCollection(sequencedCollection: 'SequencedCollection'[_unmodifiableSequencedCollection__T]) -> 'SequencedCollection'[_unmodifiableSequencedCollection__T]: ...
+    _unmodifiableSequencedMap__K = typing.TypeVar('_unmodifiableSequencedMap__K')  # <K>
+    _unmodifiableSequencedMap__V = typing.TypeVar('_unmodifiableSequencedMap__V')  # <V>
+    @staticmethod
+    def unmodifiableSequencedMap(sequencedMap: 'SequencedMap'[_unmodifiableSequencedMap__K, _unmodifiableSequencedMap__V]) -> 'SequencedMap'[_unmodifiableSequencedMap__K, _unmodifiableSequencedMap__V]: ...
+    _unmodifiableSequencedSet__T = typing.TypeVar('_unmodifiableSequencedSet__T')  # <T>
+    @staticmethod
+    def unmodifiableSequencedSet(sequencedSet: 'SequencedSet'[_unmodifiableSequencedSet__T]) -> 'SequencedSet'[_unmodifiableSequencedSet__T]: ...
     _unmodifiableSet__T = typing.TypeVar('_unmodifiableSet__T')  # <T>
     @staticmethod
     def unmodifiableSet(set: 'Set'[_unmodifiableSet__T]) -> 'Set'[_unmodifiableSet__T]: ...
@@ -1370,6 +1387,13 @@ class EventObject(java.io.Serializable):
     def getSource(self) -> typing.Any: ...
     def toString(self) -> str: ...
 
+class FormatProcessor(java.lang.StringTemplate.Processor[str, java.lang.RuntimeException], java.lang.StringTemplate.Processor.Linkage):
+    FMT: typing.ClassVar['FormatProcessor'] = ...
+    @staticmethod
+    def create(locale: 'Locale') -> 'FormatProcessor': ...
+    def linkage(self, list: 'List'[str], methodType: java.lang.invoke.MethodType) -> java.lang.invoke.MethodHandle: ...
+    def process(self, stringTemplate: java.lang.StringTemplate) -> str: ...
+
 class Formattable:
     def formatTo(self, formatter: 'Formatter', int: int, int2: int, int3: int) -> None: ...
 
@@ -1575,6 +1599,10 @@ class Locale(java.lang.Cloneable, java.io.Serializable):
     def __init__(self, string: str, string2: str): ...
     @typing.overload
     def __init__(self, string: str, string2: str, string3: str): ...
+    @staticmethod
+    def availableLocales() -> java.util.stream.Stream['Locale']: ...
+    @staticmethod
+    def caseFoldLanguageTag(string: str) -> str: ...
     def clone(self) -> typing.Any: ...
     def equals(self, object: typing.Any) -> bool: ...
     @typing.overload
@@ -1646,6 +1674,15 @@ class Locale(java.lang.Cloneable, java.io.Serializable):
     def lookupTag(list: 'List'['Locale.LanguageRange'], collection: typing.Union[Collection[str], typing.Sequence[str], typing.Set[str]]) -> str: ...
     @typing.overload
     @staticmethod
+    def of(string: str) -> 'Locale': ...
+    @typing.overload
+    @staticmethod
+    def of(string: str, string2: str) -> 'Locale': ...
+    @typing.overload
+    @staticmethod
+    def of(string: str, string2: str, string3: str) -> 'Locale': ...
+    @typing.overload
+    @staticmethod
     def setDefault(category: 'Locale.Category', locale: 'Locale') -> None: ...
     @typing.overload
     @staticmethod
@@ -1951,6 +1988,8 @@ class Objects:
     _requireNonNullElseGet__T = typing.TypeVar('_requireNonNullElseGet__T')  # <T>
     @staticmethod
     def requireNonNullElseGet(t: _requireNonNullElseGet__T, supplier: typing.Union[java.util.function.Supplier[_requireNonNullElseGet__T], typing.Callable[[], _requireNonNullElseGet__T]]) -> _requireNonNullElseGet__T: ...
+    @staticmethod
+    def toIdentityString(object: typing.Any) -> str: ...
     @typing.overload
     def toString(self) -> str: ...
     @typing.overload
@@ -2096,6 +2135,8 @@ class Random(java.util.random.RandomGenerator, java.io.Serializable):
     def doubles(self, long: int) -> java.util.stream.DoubleStream: ...
     @typing.overload
     def doubles(self, long: int, double: float, double2: float) -> java.util.stream.DoubleStream: ...
+    @staticmethod
+    def from_(randomGenerator: typing.Union[java.util.random.RandomGenerator, typing.Callable]) -> 'Random': ...
     @typing.overload
     def ints(self) -> java.util.stream.IntStream: ...
     @typing.overload
@@ -2613,98 +2654,6 @@ class InputMismatchException(NoSuchElementException):
     @typing.overload
     def __init__(self, string: str): ...
 
-_List__E = typing.TypeVar('_List__E')  # <E>
-class List(Collection[_List__E], typing.Generic[_List__E], _JList[_List__E]):
-    @typing.overload
-    def add(self, e: _List__E) -> bool: ...
-    @typing.overload
-    def add(self, int: int, e: _List__E) -> None: ...
-    @typing.overload
-    def addAll(self, int: int, collection: typing.Union[Collection[_List__E], typing.Sequence[_List__E], typing.Set[_List__E]]) -> bool: ...
-    @typing.overload
-    def addAll(self, collection: typing.Union[Collection[_List__E], typing.Sequence[_List__E], typing.Set[_List__E]]) -> bool: ...
-    def clear(self) -> None: ...
-    def contains(self, object: typing.Any) -> bool: ...
-    def containsAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
-    _copyOf__E = typing.TypeVar('_copyOf__E')  # <E>
-    @staticmethod
-    def copyOf(collection: typing.Union[Collection[_copyOf__E], typing.Sequence[_copyOf__E], typing.Set[_copyOf__E]]) -> 'List'[_copyOf__E]: ...
-    def equals(self, object: typing.Any) -> bool: ...
-    def get(self, int: int) -> _List__E: ...
-    def hashCode(self) -> int: ...
-    def indexOf(self, object: typing.Any) -> int: ...
-    def isEmpty(self) -> bool: ...
-    def iterator(self) -> Iterator[_List__E]: ...
-    def lastIndexOf(self, object: typing.Any) -> int: ...
-    @typing.overload
-    def listIterator(self) -> 'ListIterator'[_List__E]: ...
-    @typing.overload
-    def listIterator(self, int: int) -> 'ListIterator'[_List__E]: ...
-    _of_0__E = typing.TypeVar('_of_0__E')  # <E>
-    _of_1__E = typing.TypeVar('_of_1__E')  # <E>
-    _of_2__E = typing.TypeVar('_of_2__E')  # <E>
-    _of_3__E = typing.TypeVar('_of_3__E')  # <E>
-    _of_4__E = typing.TypeVar('_of_4__E')  # <E>
-    _of_5__E = typing.TypeVar('_of_5__E')  # <E>
-    _of_6__E = typing.TypeVar('_of_6__E')  # <E>
-    _of_7__E = typing.TypeVar('_of_7__E')  # <E>
-    _of_8__E = typing.TypeVar('_of_8__E')  # <E>
-    _of_9__E = typing.TypeVar('_of_9__E')  # <E>
-    _of_10__E = typing.TypeVar('_of_10__E')  # <E>
-    _of_11__E = typing.TypeVar('_of_11__E')  # <E>
-    @typing.overload
-    @staticmethod
-    def of() -> 'List'[_of_0__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_1__E) -> 'List'[_of_1__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_2__E, e2: _of_2__E) -> 'List'[_of_2__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_3__E, e2: _of_3__E, e3: _of_3__E) -> 'List'[_of_3__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_4__E, e2: _of_4__E, e3: _of_4__E, e4: _of_4__E) -> 'List'[_of_4__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_5__E, e2: _of_5__E, e3: _of_5__E, e4: _of_5__E, e5: _of_5__E) -> 'List'[_of_5__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_6__E, e2: _of_6__E, e3: _of_6__E, e4: _of_6__E, e5: _of_6__E, e6: _of_6__E) -> 'List'[_of_6__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_7__E, e2: _of_7__E, e3: _of_7__E, e4: _of_7__E, e5: _of_7__E, e6: _of_7__E, e7: _of_7__E) -> 'List'[_of_7__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_8__E, e2: _of_8__E, e3: _of_8__E, e4: _of_8__E, e5: _of_8__E, e6: _of_8__E, e7: _of_8__E, e8: _of_8__E) -> 'List'[_of_8__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_9__E, e2: _of_9__E, e3: _of_9__E, e4: _of_9__E, e5: _of_9__E, e6: _of_9__E, e7: _of_9__E, e8: _of_9__E, e9: _of_9__E) -> 'List'[_of_9__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(e: _of_10__E, e2: _of_10__E, e3: _of_10__E, e4: _of_10__E, e5: _of_10__E, e6: _of_10__E, e7: _of_10__E, e8: _of_10__E, e9: _of_10__E, e10: _of_10__E) -> 'List'[_of_10__E]: ...
-    @typing.overload
-    @staticmethod
-    def of(*e: _of_11__E) -> 'List'[_of_11__E]: ...
-    def removeAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
-    def replaceAll(self, unaryOperator: typing.Union[java.util.function.UnaryOperator[_List__E], typing.Callable]) -> None: ...
-    def retainAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
-    def set(self, int: int, e: _List__E) -> _List__E: ...
-    def size(self) -> int: ...
-    def sort(self, comparator: typing.Union[Comparator[_List__E], typing.Callable[[_List__E, _List__E], int]]) -> None: ...
-    def spliterator(self) -> 'Spliterator'[_List__E]: ...
-    def subList(self, int: int, int2: int) -> 'List'[_List__E]: ...
-    _toArray_1__T = typing.TypeVar('_toArray_1__T')  # <T>
-    _toArray_2__T = typing.TypeVar('_toArray_2__T')  # <T>
-    @typing.overload
-    def toArray(self) -> typing.MutableSequence[typing.Any]: ...
-    @typing.overload
-    def toArray(self, tArray: typing.Union[typing.List[_toArray_1__T], jpype.JArray]) -> typing.MutableSequence[_toArray_1__T]: ...
-    @typing.overload
-    def toArray(self, intFunction: typing.Union[java.util.function.IntFunction[typing.Union[typing.List[_toArray_2__T], jpype.JArray]], typing.Callable[[int], typing.Union[typing.List[_toArray_2__T], jpype.JArray]]]) -> typing.MutableSequence[_toArray_2__T]: ...
-
 _ListIterator__E = typing.TypeVar('_ListIterator__E')  # <E>
 class ListIterator(Iterator[_ListIterator__E], typing.Generic[_ListIterator__E]):
     def add(self, e: _ListIterator__E) -> None: ...
@@ -2878,6 +2827,34 @@ class Scanner(Iterator[str], java.io.Closeable):
     def useLocale(self, locale: Locale) -> 'Scanner': ...
     def useRadix(self, int: int) -> 'Scanner': ...
 
+_SequencedCollection__E = typing.TypeVar('_SequencedCollection__E')  # <E>
+class SequencedCollection(Collection[_SequencedCollection__E], typing.Generic[_SequencedCollection__E]):
+    def addFirst(self, e: _SequencedCollection__E) -> None: ...
+    def addLast(self, e: _SequencedCollection__E) -> None: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def getFirst(self) -> _SequencedCollection__E: ...
+    def getLast(self) -> _SequencedCollection__E: ...
+    def hashCode(self) -> int: ...
+    def removeFirst(self) -> _SequencedCollection__E: ...
+    def removeLast(self) -> _SequencedCollection__E: ...
+    def reversed(self) -> 'SequencedCollection'[_SequencedCollection__E]: ...
+
+_SequencedMap__K = typing.TypeVar('_SequencedMap__K')  # <K>
+_SequencedMap__V = typing.TypeVar('_SequencedMap__V')  # <V>
+class SequencedMap(Map[_SequencedMap__K, _SequencedMap__V], typing.Generic[_SequencedMap__K, _SequencedMap__V]):
+    def equals(self, object: typing.Any) -> bool: ...
+    def firstEntry(self) -> Map.Entry[_SequencedMap__K, _SequencedMap__V]: ...
+    def hashCode(self) -> int: ...
+    def lastEntry(self) -> Map.Entry[_SequencedMap__K, _SequencedMap__V]: ...
+    def pollFirstEntry(self) -> Map.Entry[_SequencedMap__K, _SequencedMap__V]: ...
+    def pollLastEntry(self) -> Map.Entry[_SequencedMap__K, _SequencedMap__V]: ...
+    def putFirst(self, k: _SequencedMap__K, v: _SequencedMap__V) -> _SequencedMap__V: ...
+    def putLast(self, k: _SequencedMap__K, v: _SequencedMap__V) -> _SequencedMap__V: ...
+    def reversed(self) -> 'SequencedMap'[_SequencedMap__K, _SequencedMap__V]: ...
+    def sequencedEntrySet(self) -> 'SequencedSet'[Map.Entry[_SequencedMap__K, _SequencedMap__V]]: ...
+    def sequencedKeySet(self) -> 'SequencedSet'[_SequencedMap__K]: ...
+    def sequencedValues(self) -> SequencedCollection[_SequencedMap__V]: ...
+
 _Set__E = typing.TypeVar('_Set__E')  # <E>
 class Set(Collection[_Set__E], typing.Generic[_Set__E], _JSet[_Set__E]):
     def add(self, e: _Set__E) -> bool: ...
@@ -2996,21 +2973,6 @@ class SimpleTimeZone(TimeZone):
     def toString(self) -> str: ...
     def useDaylightTime(self) -> bool: ...
 
-_SortedMap__K = typing.TypeVar('_SortedMap__K')  # <K>
-_SortedMap__V = typing.TypeVar('_SortedMap__V')  # <V>
-class SortedMap(Map[_SortedMap__K, _SortedMap__V], typing.Generic[_SortedMap__K, _SortedMap__V]):
-    def comparator(self) -> Comparator[_SortedMap__K]: ...
-    def entrySet(self) -> Set[Map.Entry[_SortedMap__K, _SortedMap__V]]: ...
-    def equals(self, object: typing.Any) -> bool: ...
-    def firstKey(self) -> _SortedMap__K: ...
-    def hashCode(self) -> int: ...
-    def headMap(self, k: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
-    def keySet(self) -> Set[_SortedMap__K]: ...
-    def lastKey(self) -> _SortedMap__K: ...
-    def subMap(self, k: _SortedMap__K, k2: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
-    def tailMap(self, k: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
-    def values(self) -> Collection[_SortedMap__V]: ...
-
 class StringTokenizer(Enumeration[typing.Any]):
     @typing.overload
     def __init__(self, string: str): ...
@@ -3037,30 +2999,6 @@ class UnknownFormatFlagsException(IllegalFormatException):
     def getFlags(self) -> str: ...
     def getMessage(self) -> str: ...
 
-_AbstractList__E = typing.TypeVar('_AbstractList__E')  # <E>
-class AbstractList(AbstractCollection[_AbstractList__E], List[_AbstractList__E], typing.Generic[_AbstractList__E]):
-    @typing.overload
-    def add(self, e: _AbstractList__E) -> bool: ...
-    @typing.overload
-    def add(self, int: int, e: _AbstractList__E) -> None: ...
-    @typing.overload
-    def addAll(self, collection: typing.Union[Collection[_AbstractList__E], typing.Sequence[_AbstractList__E], typing.Set[_AbstractList__E]]) -> bool: ...
-    @typing.overload
-    def addAll(self, int: int, collection: typing.Union[Collection[_AbstractList__E], typing.Sequence[_AbstractList__E], typing.Set[_AbstractList__E]]) -> bool: ...
-    def clear(self) -> None: ...
-    def equals(self, object: typing.Any) -> bool: ...
-    def get(self, int: int) -> _AbstractList__E: ...
-    def hashCode(self) -> int: ...
-    def indexOf(self, object: typing.Any) -> int: ...
-    def iterator(self) -> Iterator[_AbstractList__E]: ...
-    def lastIndexOf(self, object: typing.Any) -> int: ...
-    @typing.overload
-    def listIterator(self) -> ListIterator[_AbstractList__E]: ...
-    @typing.overload
-    def listIterator(self, int: int) -> ListIterator[_AbstractList__E]: ...
-    def set(self, int: int, e: _AbstractList__E) -> _AbstractList__E: ...
-    def subList(self, int: int, int2: int) -> List[_AbstractList__E]: ...
-
 _AbstractQueue__E = typing.TypeVar('_AbstractQueue__E')  # <E>
 class AbstractQueue(AbstractCollection[_AbstractQueue__E], Queue[_AbstractQueue__E], typing.Generic[_AbstractQueue__E]):
     def add(self, e: _AbstractQueue__E) -> bool: ...
@@ -3079,7 +3017,7 @@ class AbstractSet(AbstractCollection[_AbstractSet__E], Set[_AbstractSet__E], typ
     def removeAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
 
 _Deque__E = typing.TypeVar('_Deque__E')  # <E>
-class Deque(Queue[_Deque__E], typing.Generic[_Deque__E]):
+class Deque(Queue[_Deque__E], SequencedCollection[_Deque__E], typing.Generic[_Deque__E]):
     def add(self, e: _Deque__E) -> bool: ...
     def addAll(self, collection: typing.Union[Collection[_Deque__E], typing.Sequence[_Deque__E], typing.Set[_Deque__E]]) -> bool: ...
     def addFirst(self, e: _Deque__E) -> None: ...
@@ -3111,6 +3049,7 @@ class Deque(Queue[_Deque__E], typing.Generic[_Deque__E]):
     def removeFirstOccurrence(self, object: typing.Any) -> bool: ...
     def removeLast(self) -> _Deque__E: ...
     def removeLastOccurrence(self, object: typing.Any) -> bool: ...
+    def reversed(self) -> 'Deque'[_Deque__E]: ...
     def size(self) -> int: ...
 
 _EnumMap__K = typing.TypeVar('_EnumMap__K', bound=java.lang.Enum)  # <K>
@@ -3165,6 +3104,10 @@ class HashMap(AbstractMap[_HashMap__K, _HashMap__V], Map[_HashMap__K, _HashMap__
     def isEmpty(self) -> bool: ...
     def keySet(self) -> Set[_HashMap__K]: ...
     def merge(self, k: _HashMap__K, v: _HashMap__V, biFunction: typing.Union[java.util.function.BiFunction[_HashMap__V, _HashMap__V, _HashMap__V], typing.Callable[[_HashMap__V, _HashMap__V], _HashMap__V]]) -> _HashMap__V: ...
+    _newHashMap__K = typing.TypeVar('_newHashMap__K')  # <K>
+    _newHashMap__V = typing.TypeVar('_newHashMap__V')  # <V>
+    @staticmethod
+    def newHashMap(int: int) -> 'HashMap'[_newHashMap__K, _newHashMap__V]: ...
     def put(self, k: _HashMap__K, v: _HashMap__V) -> _HashMap__V: ...
     def putAll(self, map: typing.Union[Map[_HashMap__K, _HashMap__V], typing.Mapping[_HashMap__K, _HashMap__V]]) -> None: ...
     def putIfAbsent(self, k: _HashMap__K, v: _HashMap__V) -> _HashMap__V: ...
@@ -3206,94 +3149,164 @@ class IdentityHashMap(AbstractMap[_IdentityHashMap__K, _IdentityHashMap__V], Map
     def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
     @typing.overload
     def remove(self, object: typing.Any) -> _IdentityHashMap__V: ...
+    @typing.overload
+    def replace(self, k: _IdentityHashMap__K, v: _IdentityHashMap__V, v2: _IdentityHashMap__V) -> bool: ...
+    @typing.overload
+    def replace(self, k: _IdentityHashMap__K, v: _IdentityHashMap__V) -> _IdentityHashMap__V: ...
     def replaceAll(self, biFunction: typing.Union[java.util.function.BiFunction[_IdentityHashMap__K, _IdentityHashMap__V, _IdentityHashMap__V], typing.Callable[[_IdentityHashMap__K, _IdentityHashMap__V], _IdentityHashMap__V]]) -> None: ...
     def size(self) -> int: ...
     def values(self) -> Collection[_IdentityHashMap__V]: ...
 
-_NavigableMap__K = typing.TypeVar('_NavigableMap__K')  # <K>
-_NavigableMap__V = typing.TypeVar('_NavigableMap__V')  # <V>
-class NavigableMap(SortedMap[_NavigableMap__K, _NavigableMap__V], typing.Generic[_NavigableMap__K, _NavigableMap__V]):
-    def ceilingEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def ceilingKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
-    def descendingKeySet(self) -> 'NavigableSet'[_NavigableMap__K]: ...
-    def descendingMap(self) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
-    def equals(self, object: typing.Any) -> bool: ...
-    def firstEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def floorEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def floorKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
-    def hashCode(self) -> int: ...
-    @typing.overload
-    def headMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
-    @typing.overload
-    def headMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
-    def higherEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def higherKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
-    def lastEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def lowerEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def lowerKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
-    def navigableKeySet(self) -> 'NavigableSet'[_NavigableMap__K]: ...
-    def pollFirstEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    def pollLastEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
-    @typing.overload
-    def subMap(self, k: _NavigableMap__K, boolean: bool, k2: _NavigableMap__K, boolean2: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
-    @typing.overload
-    def subMap(self, k: _NavigableMap__K, k2: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
-    @typing.overload
-    def tailMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
+_List__E = typing.TypeVar('_List__E')  # <E>
+class List(SequencedCollection[_List__E], typing.Generic[_List__E], _JList[_List__E]):
     @typing.overload
-    def tailMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
-
-class Properties(Hashtable[typing.Any, typing.Any]):
+    def add(self, e: _List__E) -> bool: ...
     @typing.overload
-    def __init__(self): ...
+    def add(self, int: int, e: _List__E) -> None: ...
     @typing.overload
-    def __init__(self, int: int): ...
+    def addAll(self, int: int, collection: typing.Union[Collection[_List__E], typing.Sequence[_List__E], typing.Set[_List__E]]) -> bool: ...
     @typing.overload
-    def __init__(self, properties: 'Properties'): ...
+    def addAll(self, collection: typing.Union[Collection[_List__E], typing.Sequence[_List__E], typing.Set[_List__E]]) -> bool: ...
+    def addFirst(self, e: _List__E) -> None: ...
+    def addLast(self, e: _List__E) -> None: ...
     def clear(self) -> None: ...
-    def clone(self) -> typing.Any: ...
-    def compute(self, object: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
-    def computeIfAbsent(self, object: typing.Any, function: typing.Union[java.util.function.Function[typing.Any, typing.Any], typing.Callable[[typing.Any], typing.Any]]) -> typing.Any: ...
-    def computeIfPresent(self, object: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
     def contains(self, object: typing.Any) -> bool: ...
-    def containsKey(self, object: typing.Any) -> bool: ...
-    def containsValue(self, object: typing.Any) -> bool: ...
-    def elements(self) -> Enumeration[typing.Any]: ...
-    def entrySet(self) -> Set[Map.Entry[typing.Any, typing.Any]]: ...
+    def containsAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    _copyOf__E = typing.TypeVar('_copyOf__E')  # <E>
+    @staticmethod
+    def copyOf(collection: typing.Union[Collection[_copyOf__E], typing.Sequence[_copyOf__E], typing.Set[_copyOf__E]]) -> 'List'[_copyOf__E]: ...
     def equals(self, object: typing.Any) -> bool: ...
-    def forEach(self, biConsumer: typing.Union[java.util.function.BiConsumer[typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], None]]) -> None: ...
-    def get(self, object: typing.Any) -> typing.Any: ...
-    def getOrDefault(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
-    @typing.overload
-    def getProperty(self, string: str) -> str: ...
-    @typing.overload
-    def getProperty(self, string: str, string2: str) -> str: ...
+    def get(self, int: int) -> _List__E: ...
+    def getFirst(self) -> _List__E: ...
+    def getLast(self) -> _List__E: ...
     def hashCode(self) -> int: ...
+    def indexOf(self, object: typing.Any) -> int: ...
     def isEmpty(self) -> bool: ...
-    def keySet(self) -> Set[typing.Any]: ...
-    def keys(self) -> Enumeration[typing.Any]: ...
+    def iterator(self) -> Iterator[_List__E]: ...
+    def lastIndexOf(self, object: typing.Any) -> int: ...
     @typing.overload
-    def list(self, printStream: java.io.PrintStream) -> None: ...
+    def listIterator(self) -> ListIterator[_List__E]: ...
     @typing.overload
-    def list(self, printWriter: java.io.PrintWriter) -> None: ...
+    def listIterator(self, int: int) -> ListIterator[_List__E]: ...
+    _of_0__E = typing.TypeVar('_of_0__E')  # <E>
+    _of_1__E = typing.TypeVar('_of_1__E')  # <E>
+    _of_2__E = typing.TypeVar('_of_2__E')  # <E>
+    _of_3__E = typing.TypeVar('_of_3__E')  # <E>
+    _of_4__E = typing.TypeVar('_of_4__E')  # <E>
+    _of_5__E = typing.TypeVar('_of_5__E')  # <E>
+    _of_6__E = typing.TypeVar('_of_6__E')  # <E>
+    _of_7__E = typing.TypeVar('_of_7__E')  # <E>
+    _of_8__E = typing.TypeVar('_of_8__E')  # <E>
+    _of_9__E = typing.TypeVar('_of_9__E')  # <E>
+    _of_10__E = typing.TypeVar('_of_10__E')  # <E>
+    _of_11__E = typing.TypeVar('_of_11__E')  # <E>
     @typing.overload
-    def load(self, inputStream: java.io.InputStream) -> None: ...
+    @staticmethod
+    def of() -> 'List'[_of_0__E]: ...
     @typing.overload
-    def load(self, reader: java.io.Reader) -> None: ...
-    def loadFromXML(self, inputStream: java.io.InputStream) -> None: ...
-    def merge(self, object: typing.Any, object2: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
-    def propertyNames(self) -> Enumeration[typing.Any]: ...
-    def put(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
-    def putAll(self, map: typing.Union[Map[typing.Any, typing.Any], typing.Mapping[typing.Any, typing.Any]]) -> None: ...
-    def putIfAbsent(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
+    @staticmethod
+    def of(e: _of_1__E) -> 'List'[_of_1__E]: ...
     @typing.overload
-    def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
+    @staticmethod
+    def of(e: _of_2__E, e2: _of_2__E) -> 'List'[_of_2__E]: ...
     @typing.overload
-    def remove(self, object: typing.Any) -> typing.Any: ...
+    @staticmethod
+    def of(e: _of_3__E, e2: _of_3__E, e3: _of_3__E) -> 'List'[_of_3__E]: ...
     @typing.overload
-    def replace(self, object: typing.Any, object2: typing.Any, object3: typing.Any) -> bool: ...
+    @staticmethod
+    def of(e: _of_4__E, e2: _of_4__E, e3: _of_4__E, e4: _of_4__E) -> 'List'[_of_4__E]: ...
     @typing.overload
-    def replace(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
+    @staticmethod
+    def of(e: _of_5__E, e2: _of_5__E, e3: _of_5__E, e4: _of_5__E, e5: _of_5__E) -> 'List'[_of_5__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(e: _of_6__E, e2: _of_6__E, e3: _of_6__E, e4: _of_6__E, e5: _of_6__E, e6: _of_6__E) -> 'List'[_of_6__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(e: _of_7__E, e2: _of_7__E, e3: _of_7__E, e4: _of_7__E, e5: _of_7__E, e6: _of_7__E, e7: _of_7__E) -> 'List'[_of_7__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(e: _of_8__E, e2: _of_8__E, e3: _of_8__E, e4: _of_8__E, e5: _of_8__E, e6: _of_8__E, e7: _of_8__E, e8: _of_8__E) -> 'List'[_of_8__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(e: _of_9__E, e2: _of_9__E, e3: _of_9__E, e4: _of_9__E, e5: _of_9__E, e6: _of_9__E, e7: _of_9__E, e8: _of_9__E, e9: _of_9__E) -> 'List'[_of_9__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(e: _of_10__E, e2: _of_10__E, e3: _of_10__E, e4: _of_10__E, e5: _of_10__E, e6: _of_10__E, e7: _of_10__E, e8: _of_10__E, e9: _of_10__E, e10: _of_10__E) -> 'List'[_of_10__E]: ...
+    @typing.overload
+    @staticmethod
+    def of(*e: _of_11__E) -> 'List'[_of_11__E]: ...
+    def removeAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def removeFirst(self) -> _List__E: ...
+    def removeLast(self) -> _List__E: ...
+    def replaceAll(self, unaryOperator: typing.Union[java.util.function.UnaryOperator[_List__E], typing.Callable]) -> None: ...
+    def retainAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def reversed(self) -> 'List'[_List__E]: ...
+    def set(self, int: int, e: _List__E) -> _List__E: ...
+    def size(self) -> int: ...
+    def sort(self, comparator: typing.Union[Comparator[_List__E], typing.Callable[[_List__E, _List__E], int]]) -> None: ...
+    def spliterator(self) -> 'Spliterator'[_List__E]: ...
+    def subList(self, int: int, int2: int) -> 'List'[_List__E]: ...
+    _toArray_1__T = typing.TypeVar('_toArray_1__T')  # <T>
+    _toArray_2__T = typing.TypeVar('_toArray_2__T')  # <T>
+    @typing.overload
+    def toArray(self) -> typing.MutableSequence[typing.Any]: ...
+    @typing.overload
+    def toArray(self, tArray: typing.Union[typing.List[_toArray_1__T], jpype.JArray]) -> typing.MutableSequence[_toArray_1__T]: ...
+    @typing.overload
+    def toArray(self, intFunction: typing.Union[java.util.function.IntFunction[typing.Union[typing.List[_toArray_2__T], jpype.JArray]], typing.Callable[[int], typing.Union[typing.List[_toArray_2__T], jpype.JArray]]]) -> typing.MutableSequence[_toArray_2__T]: ...
+
+class Properties(Hashtable[typing.Any, typing.Any]):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, int: int): ...
+    @typing.overload
+    def __init__(self, properties: 'Properties'): ...
+    def clear(self) -> None: ...
+    def clone(self) -> typing.Any: ...
+    def compute(self, object: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
+    def computeIfAbsent(self, object: typing.Any, function: typing.Union[java.util.function.Function[typing.Any, typing.Any], typing.Callable[[typing.Any], typing.Any]]) -> typing.Any: ...
+    def computeIfPresent(self, object: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
+    def contains(self, object: typing.Any) -> bool: ...
+    def containsKey(self, object: typing.Any) -> bool: ...
+    def containsValue(self, object: typing.Any) -> bool: ...
+    def elements(self) -> Enumeration[typing.Any]: ...
+    def entrySet(self) -> Set[Map.Entry[typing.Any, typing.Any]]: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def forEach(self, biConsumer: typing.Union[java.util.function.BiConsumer[typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], None]]) -> None: ...
+    def get(self, object: typing.Any) -> typing.Any: ...
+    def getOrDefault(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
+    @typing.overload
+    def getProperty(self, string: str) -> str: ...
+    @typing.overload
+    def getProperty(self, string: str, string2: str) -> str: ...
+    def hashCode(self) -> int: ...
+    def isEmpty(self) -> bool: ...
+    def keySet(self) -> Set[typing.Any]: ...
+    def keys(self) -> Enumeration[typing.Any]: ...
+    @typing.overload
+    def list(self, printStream: java.io.PrintStream) -> None: ...
+    @typing.overload
+    def list(self, printWriter: java.io.PrintWriter) -> None: ...
+    @typing.overload
+    def load(self, inputStream: java.io.InputStream) -> None: ...
+    @typing.overload
+    def load(self, reader: java.io.Reader) -> None: ...
+    def loadFromXML(self, inputStream: java.io.InputStream) -> None: ...
+    def merge(self, object: typing.Any, object2: typing.Any, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> typing.Any: ...
+    def propertyNames(self) -> Enumeration[typing.Any]: ...
+    def put(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
+    def putAll(self, map: typing.Union[Map[typing.Any, typing.Any], typing.Mapping[typing.Any, typing.Any]]) -> None: ...
+    def putIfAbsent(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
+    @typing.overload
+    def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
+    @typing.overload
+    def remove(self, object: typing.Any) -> typing.Any: ...
+    @typing.overload
+    def replace(self, object: typing.Any, object2: typing.Any, object3: typing.Any) -> bool: ...
+    @typing.overload
+    def replace(self, object: typing.Any, object2: typing.Any) -> typing.Any: ...
     def replaceAll(self, biFunction: typing.Union[java.util.function.BiFunction[typing.Any, typing.Any, typing.Any], typing.Callable[[typing.Any, typing.Any], typing.Any]]) -> None: ...
     def save(self, outputStream: java.io.OutputStream, string: str) -> None: ...
     def setProperty(self, string: str, string2: str) -> typing.Any: ...
@@ -3312,17 +3325,29 @@ class Properties(Hashtable[typing.Any, typing.Any]):
     def toString(self) -> str: ...
     def values(self) -> Collection[typing.Any]: ...
 
-_SortedSet__E = typing.TypeVar('_SortedSet__E')  # <E>
-class SortedSet(Set[_SortedSet__E], typing.Generic[_SortedSet__E]):
-    def comparator(self) -> Comparator[_SortedSet__E]: ...
+_SequencedSet__E = typing.TypeVar('_SequencedSet__E')  # <E>
+class SequencedSet(SequencedCollection[_SequencedSet__E], Set[_SequencedSet__E], typing.Generic[_SequencedSet__E]):
     def equals(self, object: typing.Any) -> bool: ...
-    def first(self) -> _SortedSet__E: ...
     def hashCode(self) -> int: ...
-    def headSet(self, e: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
-    def last(self) -> _SortedSet__E: ...
-    def spliterator(self) -> 'Spliterator'[_SortedSet__E]: ...
-    def subSet(self, e: _SortedSet__E, e2: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
-    def tailSet(self, e: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
+    def reversed(self) -> 'SequencedSet'[_SequencedSet__E]: ...
+
+_SortedMap__K = typing.TypeVar('_SortedMap__K')  # <K>
+_SortedMap__V = typing.TypeVar('_SortedMap__V')  # <V>
+class SortedMap(SequencedMap[_SortedMap__K, _SortedMap__V], typing.Generic[_SortedMap__K, _SortedMap__V]):
+    def comparator(self) -> Comparator[_SortedMap__K]: ...
+    def entrySet(self) -> Set[Map.Entry[_SortedMap__K, _SortedMap__V]]: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def firstKey(self) -> _SortedMap__K: ...
+    def hashCode(self) -> int: ...
+    def headMap(self, k: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
+    def keySet(self) -> Set[_SortedMap__K]: ...
+    def lastKey(self) -> _SortedMap__K: ...
+    def putFirst(self, k: _SortedMap__K, v: _SortedMap__V) -> _SortedMap__V: ...
+    def putLast(self, k: _SortedMap__K, v: _SortedMap__V) -> _SortedMap__V: ...
+    def reversed(self) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
+    def subMap(self, k: _SortedMap__K, k2: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
+    def tailMap(self, k: _SortedMap__K) -> 'SortedMap'[_SortedMap__K, _SortedMap__V]: ...
+    def values(self) -> Collection[_SortedMap__V]: ...
 
 _WeakHashMap__K = typing.TypeVar('_WeakHashMap__K')  # <K>
 _WeakHashMap__V = typing.TypeVar('_WeakHashMap__V')  # <V>
@@ -3343,6 +3368,10 @@ class WeakHashMap(AbstractMap[_WeakHashMap__K, _WeakHashMap__V], Map[_WeakHashMa
     def get(self, object: typing.Any) -> _WeakHashMap__V: ...
     def isEmpty(self) -> bool: ...
     def keySet(self) -> Set[_WeakHashMap__K]: ...
+    _newWeakHashMap__K = typing.TypeVar('_newWeakHashMap__K')  # <K>
+    _newWeakHashMap__V = typing.TypeVar('_newWeakHashMap__V')  # <V>
+    @staticmethod
+    def newWeakHashMap(int: int) -> 'WeakHashMap'[_newWeakHashMap__K, _newWeakHashMap__V]: ...
     def put(self, k: _WeakHashMap__K, v: _WeakHashMap__V) -> _WeakHashMap__V: ...
     def putAll(self, map: typing.Union[Map[_WeakHashMap__K, _WeakHashMap__V], typing.Mapping[_WeakHashMap__K, _WeakHashMap__V]]) -> None: ...
     @typing.overload
@@ -3353,23 +3382,29 @@ class WeakHashMap(AbstractMap[_WeakHashMap__K, _WeakHashMap__V], Map[_WeakHashMa
     def size(self) -> int: ...
     def values(self) -> Collection[_WeakHashMap__V]: ...
 
-_AbstractSequentialList__E = typing.TypeVar('_AbstractSequentialList__E')  # <E>
-class AbstractSequentialList(AbstractList[_AbstractSequentialList__E], typing.Generic[_AbstractSequentialList__E]):
+_AbstractList__E = typing.TypeVar('_AbstractList__E')  # <E>
+class AbstractList(AbstractCollection[_AbstractList__E], List[_AbstractList__E], typing.Generic[_AbstractList__E]):
     @typing.overload
-    def add(self, e: _AbstractSequentialList__E) -> bool: ...
+    def add(self, e: _AbstractList__E) -> bool: ...
     @typing.overload
-    def add(self, int: int, e: _AbstractSequentialList__E) -> None: ...
+    def add(self, int: int, e: _AbstractList__E) -> None: ...
     @typing.overload
-    def addAll(self, collection: typing.Union[Collection[_AbstractSequentialList__E], typing.Sequence[_AbstractSequentialList__E], typing.Set[_AbstractSequentialList__E]]) -> bool: ...
+    def addAll(self, collection: typing.Union[Collection[_AbstractList__E], typing.Sequence[_AbstractList__E], typing.Set[_AbstractList__E]]) -> bool: ...
     @typing.overload
-    def addAll(self, int: int, collection: typing.Union[Collection[_AbstractSequentialList__E], typing.Sequence[_AbstractSequentialList__E], typing.Set[_AbstractSequentialList__E]]) -> bool: ...
-    def get(self, int: int) -> _AbstractSequentialList__E: ...
-    def iterator(self) -> Iterator[_AbstractSequentialList__E]: ...
+    def addAll(self, int: int, collection: typing.Union[Collection[_AbstractList__E], typing.Sequence[_AbstractList__E], typing.Set[_AbstractList__E]]) -> bool: ...
+    def clear(self) -> None: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def get(self, int: int) -> _AbstractList__E: ...
+    def hashCode(self) -> int: ...
+    def indexOf(self, object: typing.Any) -> int: ...
+    def iterator(self) -> Iterator[_AbstractList__E]: ...
+    def lastIndexOf(self, object: typing.Any) -> int: ...
     @typing.overload
-    def listIterator(self, int: int) -> ListIterator[_AbstractSequentialList__E]: ...
+    def listIterator(self) -> ListIterator[_AbstractList__E]: ...
     @typing.overload
-    def listIterator(self) -> ListIterator[_AbstractSequentialList__E]: ...
-    def set(self, int: int, e: _AbstractSequentialList__E) -> _AbstractSequentialList__E: ...
+    def listIterator(self, int: int) -> ListIterator[_AbstractList__E]: ...
+    def set(self, int: int, e: _AbstractList__E) -> _AbstractList__E: ...
+    def subList(self, int: int, int2: int) -> List[_AbstractList__E]: ...
 
 _ArrayDeque__E = typing.TypeVar('_ArrayDeque__E')  # <E>
 class ArrayDeque(AbstractCollection[_ArrayDeque__E], Deque[_ArrayDeque__E], java.lang.Cloneable, java.io.Serializable, typing.Generic[_ArrayDeque__E]):
@@ -3426,57 +3461,6 @@ class ArrayDeque(AbstractCollection[_ArrayDeque__E], Deque[_ArrayDeque__E], java
     @typing.overload
     def toArray(self, tArray: typing.Union[typing.List[_toArray_2__T], jpype.JArray]) -> typing.MutableSequence[_toArray_2__T]: ...
 
-_ArrayList__E = typing.TypeVar('_ArrayList__E')  # <E>
-class ArrayList(AbstractList[_ArrayList__E], List[_ArrayList__E], RandomAccess, java.lang.Cloneable, java.io.Serializable, typing.Generic[_ArrayList__E]):
-    @typing.overload
-    def __init__(self): ...
-    @typing.overload
-    def __init__(self, int: int): ...
-    @typing.overload
-    def __init__(self, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]): ...
-    @typing.overload
-    def add(self, e: _ArrayList__E) -> bool: ...
-    @typing.overload
-    def add(self, int: int, e: _ArrayList__E) -> None: ...
-    @typing.overload
-    def addAll(self, int: int, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]) -> bool: ...
-    @typing.overload
-    def addAll(self, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]) -> bool: ...
-    def clear(self) -> None: ...
-    def clone(self) -> typing.Any: ...
-    def contains(self, object: typing.Any) -> bool: ...
-    def ensureCapacity(self, int: int) -> None: ...
-    def equals(self, object: typing.Any) -> bool: ...
-    def forEach(self, consumer: typing.Union[java.util.function.Consumer[_ArrayList__E], typing.Callable[[_ArrayList__E], None]]) -> None: ...
-    def get(self, int: int) -> _ArrayList__E: ...
-    def hashCode(self) -> int: ...
-    def indexOf(self, object: typing.Any) -> int: ...
-    def isEmpty(self) -> bool: ...
-    def iterator(self) -> Iterator[_ArrayList__E]: ...
-    def lastIndexOf(self, object: typing.Any) -> int: ...
-    @typing.overload
-    def listIterator(self) -> ListIterator[_ArrayList__E]: ...
-    @typing.overload
-    def listIterator(self, int: int) -> ListIterator[_ArrayList__E]: ...
-    def removeAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
-    def removeIf(self, predicate: typing.Union[java.util.function.Predicate[_ArrayList__E], typing.Callable[[_ArrayList__E], bool]]) -> bool: ...
-    def replaceAll(self, unaryOperator: typing.Union[java.util.function.UnaryOperator[_ArrayList__E], typing.Callable]) -> None: ...
-    def retainAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
-    def set(self, int: int, e: _ArrayList__E) -> _ArrayList__E: ...
-    def size(self) -> int: ...
-    def sort(self, comparator: typing.Union[Comparator[_ArrayList__E], typing.Callable[[_ArrayList__E, _ArrayList__E], int]]) -> None: ...
-    def spliterator(self) -> 'Spliterator'[_ArrayList__E]: ...
-    def subList(self, int: int, int2: int) -> List[_ArrayList__E]: ...
-    _toArray_0__T = typing.TypeVar('_toArray_0__T')  # <T>
-    _toArray_2__T = typing.TypeVar('_toArray_2__T')  # <T>
-    @typing.overload
-    def toArray(self, intFunction: typing.Union[java.util.function.IntFunction[typing.Union[typing.List[_toArray_0__T], jpype.JArray]], typing.Callable[[int], typing.Union[typing.List[_toArray_0__T], jpype.JArray]]]) -> typing.MutableSequence[_toArray_0__T]: ...
-    @typing.overload
-    def toArray(self) -> typing.MutableSequence[typing.Any]: ...
-    @typing.overload
-    def toArray(self, tArray: typing.Union[typing.List[_toArray_2__T], jpype.JArray]) -> typing.MutableSequence[_toArray_2__T]: ...
-    def trimToSize(self) -> None: ...
-
 _EnumSet__E = typing.TypeVar('_EnumSet__E', bound=java.lang.Enum)  # <E>
 class EnumSet(AbstractSet[_EnumSet__E], java.lang.Cloneable, java.io.Serializable, typing.Generic[_EnumSet__E]):
     _allOf__E = typing.TypeVar('_allOf__E', bound=java.lang.Enum)  # <E>
@@ -3541,6 +3525,9 @@ class HashSet(AbstractSet[_HashSet__E], Set[_HashSet__E], java.lang.Cloneable, j
     def contains(self, object: typing.Any) -> bool: ...
     def isEmpty(self) -> bool: ...
     def iterator(self) -> Iterator[_HashSet__E]: ...
+    _newHashSet__T = typing.TypeVar('_newHashSet__T')  # <T>
+    @staticmethod
+    def newHashSet(int: int) -> 'HashSet'[_newHashSet__T]: ...
     def remove(self, object: typing.Any) -> bool: ...
     def size(self) -> int: ...
     def spliterator(self) -> 'Spliterator'[_HashSet__E]: ...
@@ -3555,7 +3542,7 @@ class HashSet(AbstractSet[_HashSet__E], Set[_HashSet__E], java.lang.Cloneable, j
 
 _LinkedHashMap__K = typing.TypeVar('_LinkedHashMap__K')  # <K>
 _LinkedHashMap__V = typing.TypeVar('_LinkedHashMap__V')  # <V>
-class LinkedHashMap(HashMap[_LinkedHashMap__K, _LinkedHashMap__V], Map[_LinkedHashMap__K, _LinkedHashMap__V], typing.Generic[_LinkedHashMap__K, _LinkedHashMap__V]):
+class LinkedHashMap(HashMap[_LinkedHashMap__K, _LinkedHashMap__V], SequencedMap[_LinkedHashMap__K, _LinkedHashMap__V], typing.Generic[_LinkedHashMap__K, _LinkedHashMap__V]):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3573,34 +3560,52 @@ class LinkedHashMap(HashMap[_LinkedHashMap__K, _LinkedHashMap__V], Map[_LinkedHa
     def get(self, object: typing.Any) -> _LinkedHashMap__V: ...
     def getOrDefault(self, object: typing.Any, v: _LinkedHashMap__V) -> _LinkedHashMap__V: ...
     def keySet(self) -> Set[_LinkedHashMap__K]: ...
+    _newLinkedHashMap__K = typing.TypeVar('_newLinkedHashMap__K')  # <K>
+    _newLinkedHashMap__V = typing.TypeVar('_newLinkedHashMap__V')  # <V>
+    @staticmethod
+    def newLinkedHashMap(int: int) -> 'LinkedHashMap'[_newLinkedHashMap__K, _newLinkedHashMap__V]: ...
+    def putFirst(self, k: _LinkedHashMap__K, v: _LinkedHashMap__V) -> _LinkedHashMap__V: ...
+    def putLast(self, k: _LinkedHashMap__K, v: _LinkedHashMap__V) -> _LinkedHashMap__V: ...
     def replaceAll(self, biFunction: typing.Union[java.util.function.BiFunction[_LinkedHashMap__K, _LinkedHashMap__V, _LinkedHashMap__V], typing.Callable[[_LinkedHashMap__K, _LinkedHashMap__V], _LinkedHashMap__V]]) -> None: ...
+    def reversed(self) -> SequencedMap[_LinkedHashMap__K, _LinkedHashMap__V]: ...
+    def sequencedEntrySet(self) -> SequencedSet[Map.Entry[_LinkedHashMap__K, _LinkedHashMap__V]]: ...
+    def sequencedKeySet(self) -> SequencedSet[_LinkedHashMap__K]: ...
+    def sequencedValues(self) -> SequencedCollection[_LinkedHashMap__V]: ...
     def values(self) -> Collection[_LinkedHashMap__V]: ...
 
-_NavigableSet__E = typing.TypeVar('_NavigableSet__E')  # <E>
-class NavigableSet(SortedSet[_NavigableSet__E], typing.Generic[_NavigableSet__E]):
-    def ceiling(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
-    def descendingIterator(self) -> Iterator[_NavigableSet__E]: ...
-    def descendingSet(self) -> 'NavigableSet'[_NavigableSet__E]: ...
+_NavigableMap__K = typing.TypeVar('_NavigableMap__K')  # <K>
+_NavigableMap__V = typing.TypeVar('_NavigableMap__V')  # <V>
+class NavigableMap(SortedMap[_NavigableMap__K, _NavigableMap__V], typing.Generic[_NavigableMap__K, _NavigableMap__V]):
+    def ceilingEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def ceilingKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
+    def descendingKeySet(self) -> 'NavigableSet'[_NavigableMap__K]: ...
+    def descendingMap(self) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     def equals(self, object: typing.Any) -> bool: ...
-    def floor(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
+    def firstEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def floorEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def floorKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
     def hashCode(self) -> int: ...
     @typing.overload
-    def headSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    def headMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def headSet(self, e: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
-    def higher(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
-    def iterator(self) -> Iterator[_NavigableSet__E]: ...
-    def lower(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
-    def pollFirst(self) -> _NavigableSet__E: ...
-    def pollLast(self) -> _NavigableSet__E: ...
+    def headMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
+    def higherEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def higherKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
+    def lastEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def lowerEntry(self, k: _NavigableMap__K) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def lowerKey(self, k: _NavigableMap__K) -> _NavigableMap__K: ...
+    def navigableKeySet(self) -> 'NavigableSet'[_NavigableMap__K]: ...
+    def pollFirstEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def pollLastEntry(self) -> Map.Entry[_NavigableMap__K, _NavigableMap__V]: ...
+    def reversed(self) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def subSet(self, e: _NavigableSet__E, boolean: bool, e2: _NavigableSet__E, boolean2: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    def subMap(self, k: _NavigableMap__K, boolean: bool, k2: _NavigableMap__K, boolean2: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def subSet(self, e: _NavigableSet__E, e2: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
+    def subMap(self, k: _NavigableMap__K, k2: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def tailSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    def tailMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def tailSet(self, e: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
+    def tailMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
 
 _PriorityQueue__E = typing.TypeVar('_PriorityQueue__E')  # <E>
 class PriorityQueue(AbstractQueue[_PriorityQueue__E], java.io.Serializable, typing.Generic[_PriorityQueue__E]):
@@ -3617,7 +3622,7 @@ class PriorityQueue(AbstractQueue[_PriorityQueue__E], java.io.Serializable, typi
     @typing.overload
     def __init__(self, priorityQueue: 'PriorityQueue'[_PriorityQueue__E]): ...
     @typing.overload
-    def __init__(self, sortedSet: SortedSet[_PriorityQueue__E]): ...
+    def __init__(self, sortedSet: 'SortedSet'[_PriorityQueue__E]): ...
     def add(self, e: _PriorityQueue__E) -> bool: ...
     def clear(self) -> None: ...
     def comparator(self) -> Comparator[_PriorityQueue__E]: ...
@@ -3645,6 +3650,151 @@ class PriorityQueue(AbstractQueue[_PriorityQueue__E], java.io.Serializable, typi
     @typing.overload
     def toArray(self, tArray: typing.Union[typing.List[_toArray_2__T], jpype.JArray]) -> typing.MutableSequence[_toArray_2__T]: ...
 
+_SortedSet__E = typing.TypeVar('_SortedSet__E')  # <E>
+class SortedSet(Set[_SortedSet__E], SequencedSet[_SortedSet__E], typing.Generic[_SortedSet__E]):
+    def addFirst(self, e: _SortedSet__E) -> None: ...
+    def addLast(self, e: _SortedSet__E) -> None: ...
+    def comparator(self) -> Comparator[_SortedSet__E]: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def first(self) -> _SortedSet__E: ...
+    def getFirst(self) -> _SortedSet__E: ...
+    def getLast(self) -> _SortedSet__E: ...
+    def hashCode(self) -> int: ...
+    def headSet(self, e: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
+    def last(self) -> _SortedSet__E: ...
+    def removeFirst(self) -> _SortedSet__E: ...
+    def removeLast(self) -> _SortedSet__E: ...
+    def reversed(self) -> 'SortedSet'[_SortedSet__E]: ...
+    def spliterator(self) -> 'Spliterator'[_SortedSet__E]: ...
+    def subSet(self, e: _SortedSet__E, e2: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
+    def tailSet(self, e: _SortedSet__E) -> 'SortedSet'[_SortedSet__E]: ...
+
+_AbstractSequentialList__E = typing.TypeVar('_AbstractSequentialList__E')  # <E>
+class AbstractSequentialList(AbstractList[_AbstractSequentialList__E], typing.Generic[_AbstractSequentialList__E]):
+    @typing.overload
+    def add(self, e: _AbstractSequentialList__E) -> bool: ...
+    @typing.overload
+    def add(self, int: int, e: _AbstractSequentialList__E) -> None: ...
+    @typing.overload
+    def addAll(self, collection: typing.Union[Collection[_AbstractSequentialList__E], typing.Sequence[_AbstractSequentialList__E], typing.Set[_AbstractSequentialList__E]]) -> bool: ...
+    @typing.overload
+    def addAll(self, int: int, collection: typing.Union[Collection[_AbstractSequentialList__E], typing.Sequence[_AbstractSequentialList__E], typing.Set[_AbstractSequentialList__E]]) -> bool: ...
+    def get(self, int: int) -> _AbstractSequentialList__E: ...
+    def iterator(self) -> Iterator[_AbstractSequentialList__E]: ...
+    @typing.overload
+    def listIterator(self, int: int) -> ListIterator[_AbstractSequentialList__E]: ...
+    @typing.overload
+    def listIterator(self) -> ListIterator[_AbstractSequentialList__E]: ...
+    def set(self, int: int, e: _AbstractSequentialList__E) -> _AbstractSequentialList__E: ...
+
+_ArrayList__E = typing.TypeVar('_ArrayList__E')  # <E>
+class ArrayList(AbstractList[_ArrayList__E], List[_ArrayList__E], RandomAccess, java.lang.Cloneable, java.io.Serializable, typing.Generic[_ArrayList__E]):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, int: int): ...
+    @typing.overload
+    def __init__(self, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]): ...
+    @typing.overload
+    def add(self, e: _ArrayList__E) -> bool: ...
+    @typing.overload
+    def add(self, int: int, e: _ArrayList__E) -> None: ...
+    @typing.overload
+    def addAll(self, int: int, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]) -> bool: ...
+    @typing.overload
+    def addAll(self, collection: typing.Union[Collection[_ArrayList__E], typing.Sequence[_ArrayList__E], typing.Set[_ArrayList__E]]) -> bool: ...
+    def addFirst(self, e: _ArrayList__E) -> None: ...
+    def addLast(self, e: _ArrayList__E) -> None: ...
+    def clear(self) -> None: ...
+    def clone(self) -> typing.Any: ...
+    def contains(self, object: typing.Any) -> bool: ...
+    def ensureCapacity(self, int: int) -> None: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def forEach(self, consumer: typing.Union[java.util.function.Consumer[_ArrayList__E], typing.Callable[[_ArrayList__E], None]]) -> None: ...
+    def get(self, int: int) -> _ArrayList__E: ...
+    def getFirst(self) -> _ArrayList__E: ...
+    def getLast(self) -> _ArrayList__E: ...
+    def hashCode(self) -> int: ...
+    def indexOf(self, object: typing.Any) -> int: ...
+    def isEmpty(self) -> bool: ...
+    def iterator(self) -> Iterator[_ArrayList__E]: ...
+    def lastIndexOf(self, object: typing.Any) -> int: ...
+    @typing.overload
+    def listIterator(self) -> ListIterator[_ArrayList__E]: ...
+    @typing.overload
+    def listIterator(self, int: int) -> ListIterator[_ArrayList__E]: ...
+    def removeAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def removeFirst(self) -> _ArrayList__E: ...
+    def removeIf(self, predicate: typing.Union[java.util.function.Predicate[_ArrayList__E], typing.Callable[[_ArrayList__E], bool]]) -> bool: ...
+    def removeLast(self) -> _ArrayList__E: ...
+    def replaceAll(self, unaryOperator: typing.Union[java.util.function.UnaryOperator[_ArrayList__E], typing.Callable]) -> None: ...
+    def retainAll(self, collection: typing.Union[Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def set(self, int: int, e: _ArrayList__E) -> _ArrayList__E: ...
+    def size(self) -> int: ...
+    def sort(self, comparator: typing.Union[Comparator[_ArrayList__E], typing.Callable[[_ArrayList__E, _ArrayList__E], int]]) -> None: ...
+    def spliterator(self) -> 'Spliterator'[_ArrayList__E]: ...
+    def subList(self, int: int, int2: int) -> List[_ArrayList__E]: ...
+    _toArray_0__T = typing.TypeVar('_toArray_0__T')  # <T>
+    _toArray_2__T = typing.TypeVar('_toArray_2__T')  # <T>
+    @typing.overload
+    def toArray(self, intFunction: typing.Union[java.util.function.IntFunction[typing.Union[typing.List[_toArray_0__T], jpype.JArray]], typing.Callable[[int], typing.Union[typing.List[_toArray_0__T], jpype.JArray]]]) -> typing.MutableSequence[_toArray_0__T]: ...
+    @typing.overload
+    def toArray(self) -> typing.MutableSequence[typing.Any]: ...
+    @typing.overload
+    def toArray(self, tArray: typing.Union[typing.List[_toArray_2__T], jpype.JArray]) -> typing.MutableSequence[_toArray_2__T]: ...
+    def trimToSize(self) -> None: ...
+
+_LinkedHashSet__E = typing.TypeVar('_LinkedHashSet__E')  # <E>
+class LinkedHashSet(HashSet[_LinkedHashSet__E], SequencedSet[_LinkedHashSet__E], java.lang.Cloneable, java.io.Serializable, typing.Generic[_LinkedHashSet__E]):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, int: int): ...
+    @typing.overload
+    def __init__(self, int: int, float: float): ...
+    @typing.overload
+    def __init__(self, collection: typing.Union[Collection[_LinkedHashSet__E], typing.Sequence[_LinkedHashSet__E], typing.Set[_LinkedHashSet__E]]): ...
+    def addFirst(self, e: _LinkedHashSet__E) -> None: ...
+    def addLast(self, e: _LinkedHashSet__E) -> None: ...
+    def getFirst(self) -> _LinkedHashSet__E: ...
+    def getLast(self) -> _LinkedHashSet__E: ...
+    _newLinkedHashSet__T = typing.TypeVar('_newLinkedHashSet__T')  # <T>
+    @staticmethod
+    def newLinkedHashSet(int: int) -> 'LinkedHashSet'[_newLinkedHashSet__T]: ...
+    def removeFirst(self) -> _LinkedHashSet__E: ...
+    def removeLast(self) -> _LinkedHashSet__E: ...
+    def reversed(self) -> SequencedSet[_LinkedHashSet__E]: ...
+    def spliterator(self) -> 'Spliterator'[_LinkedHashSet__E]: ...
+
+_NavigableSet__E = typing.TypeVar('_NavigableSet__E')  # <E>
+class NavigableSet(SortedSet[_NavigableSet__E], typing.Generic[_NavigableSet__E]):
+    def ceiling(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
+    def descendingIterator(self) -> Iterator[_NavigableSet__E]: ...
+    def descendingSet(self) -> 'NavigableSet'[_NavigableSet__E]: ...
+    def equals(self, object: typing.Any) -> bool: ...
+    def floor(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
+    def hashCode(self) -> int: ...
+    @typing.overload
+    def headSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    @typing.overload
+    def headSet(self, e: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
+    def higher(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
+    def iterator(self) -> Iterator[_NavigableSet__E]: ...
+    def lower(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
+    def pollFirst(self) -> _NavigableSet__E: ...
+    def pollLast(self) -> _NavigableSet__E: ...
+    def removeFirst(self) -> _NavigableSet__E: ...
+    def removeLast(self) -> _NavigableSet__E: ...
+    def reversed(self) -> 'NavigableSet'[_NavigableSet__E]: ...
+    @typing.overload
+    def subSet(self, e: _NavigableSet__E, boolean: bool, e2: _NavigableSet__E, boolean2: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    @typing.overload
+    def subSet(self, e: _NavigableSet__E, e2: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
+    @typing.overload
+    def tailSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
+    @typing.overload
+    def tailSet(self, e: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
+
 _TreeMap__K = typing.TypeVar('_TreeMap__K')  # <K>
 _TreeMap__V = typing.TypeVar('_TreeMap__V')  # <V>
 class TreeMap(AbstractMap[_TreeMap__K, _TreeMap__V], NavigableMap[_TreeMap__K, _TreeMap__V], java.lang.Cloneable, java.io.Serializable, typing.Generic[_TreeMap__K, _TreeMap__V]):
@@ -3692,7 +3842,9 @@ class TreeMap(AbstractMap[_TreeMap__K, _TreeMap__V], NavigableMap[_TreeMap__K, _
     def pollLastEntry(self) -> Map.Entry[_TreeMap__K, _TreeMap__V]: ...
     def put(self, k: _TreeMap__K, v: _TreeMap__V) -> _TreeMap__V: ...
     def putAll(self, map: typing.Union[Map[_TreeMap__K, _TreeMap__V], typing.Mapping[_TreeMap__K, _TreeMap__V]]) -> None: ...
+    def putFirst(self, k: _TreeMap__K, v: _TreeMap__V) -> _TreeMap__V: ...
     def putIfAbsent(self, k: _TreeMap__K, v: _TreeMap__V) -> _TreeMap__V: ...
+    def putLast(self, k: _TreeMap__K, v: _TreeMap__V) -> _TreeMap__V: ...
     @typing.overload
     def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
     @typing.overload
@@ -3787,18 +3939,6 @@ class Vector(AbstractList[_Vector__E], List[_Vector__E], RandomAccess, java.lang
     def toString(self) -> str: ...
     def trimToSize(self) -> None: ...
 
-_LinkedHashSet__E = typing.TypeVar('_LinkedHashSet__E')  # <E>
-class LinkedHashSet(HashSet[_LinkedHashSet__E], Set[_LinkedHashSet__E], java.lang.Cloneable, java.io.Serializable, typing.Generic[_LinkedHashSet__E]):
-    @typing.overload
-    def __init__(self): ...
-    @typing.overload
-    def __init__(self, int: int): ...
-    @typing.overload
-    def __init__(self, int: int, float: float): ...
-    @typing.overload
-    def __init__(self, collection: typing.Union[Collection[_LinkedHashSet__E], typing.Sequence[_LinkedHashSet__E], typing.Set[_LinkedHashSet__E]]): ...
-    def spliterator(self) -> 'Spliterator'[_LinkedHashSet__E]: ...
-
 _LinkedList__E = typing.TypeVar('_LinkedList__E')  # <E>
 class LinkedList(AbstractSequentialList[_LinkedList__E], List[_LinkedList__E], Deque[_LinkedList__E], java.lang.Cloneable, java.io.Serializable, typing.Generic[_LinkedList__E]):
     @typing.overload
@@ -3844,6 +3984,7 @@ class LinkedList(AbstractSequentialList[_LinkedList__E], List[_LinkedList__E], D
     def removeFirstOccurrence(self, object: typing.Any) -> bool: ...
     def removeLast(self) -> _LinkedList__E: ...
     def removeLastOccurrence(self, object: typing.Any) -> bool: ...
+    def reversed(self) -> 'LinkedList'[_LinkedList__E]: ...
     def set(self, int: int, e: _LinkedList__E) -> _LinkedList__E: ...
     def size(self) -> int: ...
     def spliterator(self) -> 'Spliterator'[_LinkedList__E]: ...
@@ -3877,6 +4018,8 @@ class TreeSet(AbstractSet[_TreeSet__E], NavigableSet[_TreeSet__E], java.lang.Clo
     def __init__(self, sortedSet: SortedSet[_TreeSet__E]): ...
     def add(self, e: _TreeSet__E) -> bool: ...
     def addAll(self, collection: typing.Union[Collection[_TreeSet__E], typing.Sequence[_TreeSet__E], typing.Set[_TreeSet__E]]) -> bool: ...
+    def addFirst(self, e: _TreeSet__E) -> None: ...
+    def addLast(self, e: _TreeSet__E) -> None: ...
     def ceiling(self, e: _TreeSet__E) -> _TreeSet__E: ...
     def clear(self) -> None: ...
     def clone(self) -> typing.Any: ...
@@ -4131,6 +4274,7 @@ class __module_protocol__(Protocol):
     EventListenerProxy: typing.Type[EventListenerProxy]
     EventObject: typing.Type[EventObject]
     FormatFlagsConversionMismatchException: typing.Type[FormatFlagsConversionMismatchException]
+    FormatProcessor: typing.Type[FormatProcessor]
     Formattable: typing.Type[Formattable]
     FormattableFlags: typing.Type[FormattableFlags]
     Formatter: typing.Type[Formatter]
@@ -4184,6 +4328,9 @@ class __module_protocol__(Protocol):
     RandomAccess: typing.Type[RandomAccess]
     ResourceBundle: typing.Type[ResourceBundle]
     Scanner: typing.Type[Scanner]
+    SequencedCollection: typing.Type[SequencedCollection]
+    SequencedMap: typing.Type[SequencedMap]
+    SequencedSet: typing.Type[SequencedSet]
     ServiceConfigurationError: typing.Type[ServiceConfigurationError]
     ServiceLoader: typing.Type[ServiceLoader]
     Set: typing.Type[Set]
diff --git a/java-stubs/util/concurrent/__init__.pyi b/java-stubs/util/concurrent/__init__.pyi
index 88687a56af627ac3cae705ca4431518dbe84b576..750e4b992114184a9dc1c15419ae4692f6b1e023 100644
--- a/java-stubs/util/concurrent/__init__.pyi
+++ b/java-stubs/util/concurrent/__init__.pyi
@@ -5,6 +5,7 @@ if sys.version_info >= (3, 8):
 else:
     from typing_extensions import Protocol
 
+import datetime
 import java
 import java.io
 import java.lang
@@ -297,6 +298,8 @@ class ConcurrentSkipListSet(java.util.AbstractSet[_ConcurrentSkipListSet__E], ja
     @typing.overload
     def __init__(self, sortedSet: java.util.SortedSet[_ConcurrentSkipListSet__E]): ...
     def add(self, e: _ConcurrentSkipListSet__E) -> bool: ...
+    def addFirst(self, e: _ConcurrentSkipListSet__E) -> None: ...
+    def addLast(self, e: _ConcurrentSkipListSet__E) -> None: ...
     def ceiling(self, e: _ConcurrentSkipListSet__E) -> _ConcurrentSkipListSet__E: ...
     def clear(self) -> None: ...
     def clone(self) -> 'ConcurrentSkipListSet'[_ConcurrentSkipListSet__E]: ...
@@ -348,7 +351,9 @@ class CopyOnWriteArrayList(java.util.List[_CopyOnWriteArrayList__E], java.util.R
     @typing.overload
     def addAll(self, collection: typing.Union[java.util.Collection[_CopyOnWriteArrayList__E], typing.Sequence[_CopyOnWriteArrayList__E], typing.Set[_CopyOnWriteArrayList__E]]) -> bool: ...
     def addAllAbsent(self, collection: typing.Union[java.util.Collection[_CopyOnWriteArrayList__E], typing.Sequence[_CopyOnWriteArrayList__E], typing.Set[_CopyOnWriteArrayList__E]]) -> int: ...
+    def addFirst(self, e: _CopyOnWriteArrayList__E) -> None: ...
     def addIfAbsent(self, e: _CopyOnWriteArrayList__E) -> bool: ...
+    def addLast(self, e: _CopyOnWriteArrayList__E) -> None: ...
     def clear(self) -> None: ...
     def clone(self) -> typing.Any: ...
     def contains(self, object: typing.Any) -> bool: ...
@@ -356,6 +361,8 @@ class CopyOnWriteArrayList(java.util.List[_CopyOnWriteArrayList__E], java.util.R
     def equals(self, object: typing.Any) -> bool: ...
     def forEach(self, consumer: typing.Union[java.util.function.Consumer[_CopyOnWriteArrayList__E], typing.Callable[[_CopyOnWriteArrayList__E], None]]) -> None: ...
     def get(self, int: int) -> _CopyOnWriteArrayList__E: ...
+    def getFirst(self) -> _CopyOnWriteArrayList__E: ...
+    def getLast(self) -> _CopyOnWriteArrayList__E: ...
     def hashCode(self) -> int: ...
     @typing.overload
     def indexOf(self, object: typing.Any) -> int: ...
@@ -372,9 +379,12 @@ class CopyOnWriteArrayList(java.util.List[_CopyOnWriteArrayList__E], java.util.R
     @typing.overload
     def listIterator(self, int: int) -> java.util.ListIterator[_CopyOnWriteArrayList__E]: ...
     def removeAll(self, collection: typing.Union[java.util.Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def removeFirst(self) -> _CopyOnWriteArrayList__E: ...
     def removeIf(self, predicate: typing.Union[java.util.function.Predicate[_CopyOnWriteArrayList__E], typing.Callable[[_CopyOnWriteArrayList__E], bool]]) -> bool: ...
+    def removeLast(self) -> _CopyOnWriteArrayList__E: ...
     def replaceAll(self, unaryOperator: typing.Union[java.util.function.UnaryOperator[_CopyOnWriteArrayList__E], typing.Callable]) -> None: ...
     def retainAll(self, collection: typing.Union[java.util.Collection[typing.Any], typing.Sequence[typing.Any], typing.Set[typing.Any]]) -> bool: ...
+    def reversed(self) -> java.util.List[_CopyOnWriteArrayList__E]: ...
     def set(self, int: int, e: _CopyOnWriteArrayList__E) -> _CopyOnWriteArrayList__E: ...
     def size(self) -> int: ...
     def sort(self, comparator: typing.Union[java.util.Comparator[_CopyOnWriteArrayList__E], typing.Callable[[_CopyOnWriteArrayList__E, _CopyOnWriteArrayList__E], int]]) -> None: ...
@@ -510,6 +520,10 @@ class Executors:
     @typing.overload
     @staticmethod
     def newSingleThreadScheduledExecutor(threadFactory: typing.Union['ThreadFactory', typing.Callable]) -> 'ScheduledExecutorService': ...
+    @staticmethod
+    def newThreadPerTaskExecutor(threadFactory: typing.Union['ThreadFactory', typing.Callable]) -> 'ExecutorService': ...
+    @staticmethod
+    def newVirtualThreadPerTaskExecutor() -> 'ExecutorService': ...
     @typing.overload
     @staticmethod
     def newWorkStealingPool() -> 'ExecutorService': ...
@@ -532,17 +546,35 @@ class Executors:
 class ForkJoinWorkerThread(java.lang.Thread):
     def getPool(self) -> 'ForkJoinPool': ...
     def getPoolIndex(self) -> int: ...
+    def getQueuedTaskCount(self) -> int: ...
     def run(self) -> None: ...
 
 _Future__V = typing.TypeVar('_Future__V')  # <V>
 class Future(typing.Generic[_Future__V]):
     def cancel(self, boolean: bool) -> bool: ...
+    def exceptionNow(self) -> java.lang.Throwable: ...
     @typing.overload
     def get(self) -> _Future__V: ...
     @typing.overload
     def get(self, long: int, timeUnit: 'TimeUnit') -> _Future__V: ...
     def isCancelled(self) -> bool: ...
     def isDone(self) -> bool: ...
+    def resultNow(self) -> _Future__V: ...
+    def state(self) -> 'Future.State': ...
+    class State(java.lang.Enum['Future.State']):
+        RUNNING: typing.ClassVar['Future.State'] = ...
+        SUCCESS: typing.ClassVar['Future.State'] = ...
+        FAILED: typing.ClassVar['Future.State'] = ...
+        CANCELLED: typing.ClassVar['Future.State'] = ...
+        _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=java.lang.Enum)  # <T>
+        @typing.overload
+        @staticmethod
+        def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+        @typing.overload
+        @staticmethod
+        def valueOf(string: str) -> 'Future.State': ...
+        @staticmethod
+        def values() -> typing.MutableSequence['Future.State']: ...
 
 class Phaser:
     @typing.overload
@@ -618,6 +650,12 @@ class Semaphore(java.io.Serializable):
     @typing.overload
     def tryAcquire(self, long: int, timeUnit: 'TimeUnit') -> bool: ...
 
+class StructureViolationException(java.lang.RuntimeException):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, string: str): ...
+
 class ThreadFactory:
     def newThread(self, runnable: typing.Union[java.lang.Runnable, typing.Callable]) -> java.lang.Thread: ...
 
@@ -856,6 +894,7 @@ class CompletableFuture(Future[_CompletableFuture__T], CompletionStage[_Completa
     @typing.overload
     @staticmethod
     def delayedExecutor(long: int, timeUnit: TimeUnit, executor: typing.Union[Executor, typing.Callable]) -> Executor: ...
+    def exceptionNow(self) -> java.lang.Throwable: ...
     def exceptionally(self, function: typing.Union[java.util.function.Function[java.lang.Throwable, _CompletableFuture__T], typing.Callable[[java.lang.Throwable], _CompletableFuture__T]]) -> 'CompletableFuture'[_CompletableFuture__T]: ...
     @typing.overload
     def exceptionallyAsync(self, function: typing.Union[java.util.function.Function[java.lang.Throwable, _CompletableFuture__T], typing.Callable[[java.lang.Throwable], _CompletableFuture__T]]) -> 'CompletableFuture'[_CompletableFuture__T]: ...
@@ -896,6 +935,7 @@ class CompletableFuture(Future[_CompletableFuture__T], CompletionStage[_Completa
     def obtrudeException(self, throwable: java.lang.Throwable) -> None: ...
     def obtrudeValue(self, t: _CompletableFuture__T) -> None: ...
     def orTimeout(self, long: int, timeUnit: TimeUnit) -> 'CompletableFuture'[_CompletableFuture__T]: ...
+    def resultNow(self) -> _CompletableFuture__T: ...
     def runAfterBoth(self, completionStage: CompletionStage[typing.Any], runnable: typing.Union[java.lang.Runnable, typing.Callable]) -> 'CompletableFuture'[None]: ...
     @typing.overload
     def runAfterBothAsync(self, completionStage: CompletionStage[typing.Any], runnable: typing.Union[java.lang.Runnable, typing.Callable]) -> 'CompletableFuture'[None]: ...
@@ -912,6 +952,7 @@ class CompletableFuture(Future[_CompletableFuture__T], CompletionStage[_Completa
     @typing.overload
     @staticmethod
     def runAsync(runnable: typing.Union[java.lang.Runnable, typing.Callable], executor: typing.Union[Executor, typing.Callable]) -> 'CompletableFuture'[None]: ...
+    def state(self) -> Future.State: ...
     _supplyAsync_0__U = typing.TypeVar('_supplyAsync_0__U')  # <U>
     _supplyAsync_1__U = typing.TypeVar('_supplyAsync_1__U')  # <U>
     @typing.overload
@@ -1051,8 +1092,9 @@ class ExecutorCompletionService(CompletionService[_ExecutorCompletionService__V]
     def submit(self, callable: typing.Union[Callable[_ExecutorCompletionService__V], typing.Callable[[], _ExecutorCompletionService__V]]) -> Future[_ExecutorCompletionService__V]: ...
     def take(self) -> Future[_ExecutorCompletionService__V]: ...
 
-class ExecutorService(Executor):
+class ExecutorService(Executor, java.lang.AutoCloseable):
     def awaitTermination(self, long: int, timeUnit: TimeUnit) -> bool: ...
+    def close(self) -> None: ...
     _invokeAll_0__T = typing.TypeVar('_invokeAll_0__T')  # <T>
     _invokeAll_1__T = typing.TypeVar('_invokeAll_1__T')  # <T>
     @typing.overload
@@ -1092,10 +1134,14 @@ class ForkJoinTask(Future[_ForkJoinTask__V], java.io.Serializable, typing.Generi
     @typing.overload
     @staticmethod
     def adapt(callable: typing.Union[Callable[_adapt_2__T], typing.Callable[[], _adapt_2__T]]) -> 'ForkJoinTask'[_adapt_2__T]: ...
+    _adaptInterruptible__T = typing.TypeVar('_adaptInterruptible__T')  # <T>
+    @staticmethod
+    def adaptInterruptible(callable: typing.Union[Callable[_adaptInterruptible__T], typing.Callable[[], _adaptInterruptible__T]]) -> 'ForkJoinTask'[_adaptInterruptible__T]: ...
     def cancel(self, boolean: bool) -> bool: ...
     def compareAndSetForkJoinTaskTag(self, short: int, short2: int) -> bool: ...
     def complete(self, v: _ForkJoinTask__V) -> None: ...
     def completeExceptionally(self, throwable: java.lang.Throwable) -> None: ...
+    def exceptionNow(self) -> java.lang.Throwable: ...
     def fork(self) -> 'ForkJoinTask'[_ForkJoinTask__V]: ...
     @typing.overload
     def get(self) -> _ForkJoinTask__V: ...
@@ -1132,9 +1178,15 @@ class ForkJoinTask(Future[_ForkJoinTask__V], java.io.Serializable, typing.Generi
     def join(self) -> _ForkJoinTask__V: ...
     def quietlyComplete(self) -> None: ...
     def quietlyInvoke(self) -> None: ...
+    @typing.overload
+    def quietlyJoin(self, long: int, timeUnit: TimeUnit) -> bool: ...
+    @typing.overload
     def quietlyJoin(self) -> None: ...
+    def quietlyJoinUninterruptibly(self, long: int, timeUnit: TimeUnit) -> bool: ...
     def reinitialize(self) -> None: ...
+    def resultNow(self) -> _ForkJoinTask__V: ...
     def setForkJoinTaskTag(self, short: int) -> int: ...
+    def state(self) -> Future.State: ...
     def tryUnfork(self) -> bool: ...
 
 _LinkedBlockingQueue__E = typing.TypeVar('_LinkedBlockingQueue__E')  # <E>
@@ -1371,7 +1423,9 @@ class ConcurrentSkipListMap(java.util.AbstractMap[_ConcurrentSkipListMap__K, _Co
     def pollFirstEntry(self) -> java.util.Map.Entry[_ConcurrentSkipListMap__K, _ConcurrentSkipListMap__V]: ...
     def pollLastEntry(self) -> java.util.Map.Entry[_ConcurrentSkipListMap__K, _ConcurrentSkipListMap__V]: ...
     def put(self, k: _ConcurrentSkipListMap__K, v: _ConcurrentSkipListMap__V) -> _ConcurrentSkipListMap__V: ...
+    def putFirst(self, k: _ConcurrentSkipListMap__K, v: _ConcurrentSkipListMap__V) -> _ConcurrentSkipListMap__V: ...
     def putIfAbsent(self, k: _ConcurrentSkipListMap__K, v: _ConcurrentSkipListMap__V) -> _ConcurrentSkipListMap__V: ...
+    def putLast(self, k: _ConcurrentSkipListMap__K, v: _ConcurrentSkipListMap__V) -> _ConcurrentSkipListMap__V: ...
     @typing.overload
     def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
     @typing.overload
@@ -1420,13 +1474,16 @@ class FutureTask(RunnableFuture[_FutureTask__V], typing.Generic[_FutureTask__V])
     @typing.overload
     def __init__(self, callable: typing.Union[Callable[_FutureTask__V], typing.Callable[[], _FutureTask__V]]): ...
     def cancel(self, boolean: bool) -> bool: ...
+    def exceptionNow(self) -> java.lang.Throwable: ...
     @typing.overload
     def get(self) -> _FutureTask__V: ...
     @typing.overload
     def get(self, long: int, timeUnit: TimeUnit) -> _FutureTask__V: ...
     def isCancelled(self) -> bool: ...
     def isDone(self) -> bool: ...
+    def resultNow(self) -> _FutureTask__V: ...
     def run(self) -> None: ...
+    def state(self) -> Future.State: ...
     def toString(self) -> str: ...
 
 _LinkedBlockingDeque__E = typing.TypeVar('_LinkedBlockingDeque__E')  # <E>
@@ -1600,12 +1657,15 @@ class ForkJoinPool(AbstractExecutorService):
     def __init__(self, int: int, forkJoinWorkerThreadFactory: typing.Union['ForkJoinPool.ForkJoinWorkerThreadFactory', typing.Callable], uncaughtExceptionHandler: typing.Union[java.lang.Thread.UncaughtExceptionHandler, typing.Callable], boolean: bool, int2: int, int3: int, int4: int, predicate: typing.Union[java.util.function.Predicate['ForkJoinPool'], typing.Callable[['ForkJoinPool'], bool]], long: int, timeUnit: TimeUnit): ...
     def awaitQuiescence(self, long: int, timeUnit: TimeUnit) -> bool: ...
     def awaitTermination(self, long: int, timeUnit: TimeUnit) -> bool: ...
+    def close(self) -> None: ...
     @staticmethod
     def commonPool() -> 'ForkJoinPool': ...
     @typing.overload
     def execute(self, runnable: typing.Union[java.lang.Runnable, typing.Callable]) -> None: ...
     @typing.overload
     def execute(self, forkJoinTask: ForkJoinTask[typing.Any]) -> None: ...
+    _externalSubmit__T = typing.TypeVar('_externalSubmit__T')  # <T>
+    def externalSubmit(self, forkJoinTask: ForkJoinTask[_externalSubmit__T]) -> ForkJoinTask[_externalSubmit__T]: ...
     def getActiveThreadCount(self) -> int: ...
     def getAsyncMode(self) -> bool: ...
     @staticmethod
@@ -1637,8 +1697,11 @@ class ForkJoinPool(AbstractExecutorService):
     def isShutdown(self) -> bool: ...
     def isTerminated(self) -> bool: ...
     def isTerminating(self) -> bool: ...
+    _lazySubmit__T = typing.TypeVar('_lazySubmit__T')  # <T>
+    def lazySubmit(self, forkJoinTask: ForkJoinTask[_lazySubmit__T]) -> ForkJoinTask[_lazySubmit__T]: ...
     @staticmethod
     def managedBlock(managedBlocker: 'ForkJoinPool.ManagedBlocker') -> None: ...
+    def setParallelism(self, int: int) -> int: ...
     def shutdown(self) -> None: ...
     def shutdownNow(self) -> java.util.List[java.lang.Runnable]: ...
     _submit_1__T = typing.TypeVar('_submit_1__T')  # <T>
@@ -1896,6 +1959,66 @@ class Flow:
         def cancel(self) -> None: ...
         def request(self, long: int) -> None: ...
 
+_StructuredTaskScope__ShutdownOnSuccess__T = typing.TypeVar('_StructuredTaskScope__ShutdownOnSuccess__T')  # <T>
+_StructuredTaskScope__Subtask__T = typing.TypeVar('_StructuredTaskScope__Subtask__T')  # <T>
+_StructuredTaskScope__T = typing.TypeVar('_StructuredTaskScope__T')  # <T>
+class StructuredTaskScope(java.lang.AutoCloseable, typing.Generic[_StructuredTaskScope__T]):
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, string: str, threadFactory: typing.Union[ThreadFactory, typing.Callable]): ...
+    def close(self) -> None: ...
+    _fork__U = typing.TypeVar('_fork__U')  # <U>
+    def fork(self, callable: typing.Union[Callable[_fork__U], typing.Callable[[], _fork__U]]) -> 'StructuredTaskScope.Subtask'[_fork__U]: ...
+    def isShutdown(self) -> bool: ...
+    def join(self) -> 'StructuredTaskScope'[_StructuredTaskScope__T]: ...
+    def joinUntil(self, instant: typing.Union[java.time.Instant, datetime.datetime]) -> 'StructuredTaskScope'[_StructuredTaskScope__T]: ...
+    def shutdown(self) -> None: ...
+    def toString(self) -> str: ...
+    class ShutdownOnFailure(java.util.concurrent.StructuredTaskScope[typing.Any]):
+        @typing.overload
+        def __init__(self): ...
+        @typing.overload
+        def __init__(self, string: str, threadFactory: typing.Union[ThreadFactory, typing.Callable]): ...
+        def exception(self) -> java.util.Optional[java.lang.Throwable]: ...
+        def join(self) -> 'StructuredTaskScope.ShutdownOnFailure': ...
+        def joinUntil(self, instant: typing.Union[java.time.Instant, datetime.datetime]) -> 'StructuredTaskScope.ShutdownOnFailure': ...
+        _throwIfFailed_1__X = typing.TypeVar('_throwIfFailed_1__X', bound=java.lang.Throwable)  # <X>
+        @typing.overload
+        def throwIfFailed(self) -> None: ...
+        @typing.overload
+        def throwIfFailed(self, function: typing.Union[java.util.function.Function[java.lang.Throwable, _throwIfFailed_1__X], typing.Callable[[java.lang.Throwable], _throwIfFailed_1__X]]) -> None: ...
+    class ShutdownOnSuccess(java.util.concurrent.StructuredTaskScope[_StructuredTaskScope__ShutdownOnSuccess__T], typing.Generic[_StructuredTaskScope__ShutdownOnSuccess__T]):
+        @typing.overload
+        def __init__(self): ...
+        @typing.overload
+        def __init__(self, string: str, threadFactory: typing.Union[ThreadFactory, typing.Callable]): ...
+        def join(self) -> 'StructuredTaskScope.ShutdownOnSuccess'[_StructuredTaskScope__ShutdownOnSuccess__T]: ...
+        def joinUntil(self, instant: typing.Union[java.time.Instant, datetime.datetime]) -> 'StructuredTaskScope.ShutdownOnSuccess'[_StructuredTaskScope__ShutdownOnSuccess__T]: ...
+        _result_1__X = typing.TypeVar('_result_1__X', bound=java.lang.Throwable)  # <X>
+        @typing.overload
+        def result(self) -> _StructuredTaskScope__ShutdownOnSuccess__T: ...
+        @typing.overload
+        def result(self, function: typing.Union[java.util.function.Function[java.lang.Throwable, _result_1__X], typing.Callable[[java.lang.Throwable], _result_1__X]]) -> _StructuredTaskScope__ShutdownOnSuccess__T: ...
+    class Subtask(java.util.function.Supplier[_StructuredTaskScope__Subtask__T], typing.Generic[_StructuredTaskScope__Subtask__T]):
+        def exception(self) -> java.lang.Throwable: ...
+        def get(self) -> _StructuredTaskScope__Subtask__T: ...
+        def state(self) -> 'StructuredTaskScope.Subtask.State': ...
+        def task(self) -> Callable[_StructuredTaskScope__Subtask__T]: ...
+        class State(java.lang.Enum['StructuredTaskScope.Subtask.State']):
+            UNAVAILABLE: typing.ClassVar['StructuredTaskScope.Subtask.State'] = ...
+            SUCCESS: typing.ClassVar['StructuredTaskScope.Subtask.State'] = ...
+            FAILED: typing.ClassVar['StructuredTaskScope.Subtask.State'] = ...
+            _valueOf_0__T = typing.TypeVar('_valueOf_0__T', bound=java.lang.Enum)  # <T>
+            @typing.overload
+            @staticmethod
+            def valueOf(class_: typing.Type[_valueOf_0__T], string: str) -> _valueOf_0__T: ...
+            @typing.overload
+            @staticmethod
+            def valueOf(string: str) -> 'StructuredTaskScope.Subtask.State': ...
+            @staticmethod
+            def values() -> typing.MutableSequence['StructuredTaskScope.Subtask.State']: ...
+
 _SubmissionPublisher__T = typing.TypeVar('_SubmissionPublisher__T')  # <T>
 class SubmissionPublisher(Flow.Publisher[_SubmissionPublisher__T], java.lang.AutoCloseable, typing.Generic[_SubmissionPublisher__T]):
     @typing.overload
@@ -1980,6 +2103,8 @@ class __module_protocol__(Protocol):
     ScheduledFuture: typing.Type[ScheduledFuture]
     ScheduledThreadPoolExecutor: typing.Type[ScheduledThreadPoolExecutor]
     Semaphore: typing.Type[Semaphore]
+    StructureViolationException: typing.Type[StructureViolationException]
+    StructuredTaskScope: typing.Type[StructuredTaskScope]
     SubmissionPublisher: typing.Type[SubmissionPublisher]
     SynchronousQueue: typing.Type[SynchronousQueue]
     ThreadFactory: typing.Type[ThreadFactory]
diff --git a/java-stubs/util/regex/__init__.pyi b/java-stubs/util/regex/__init__.pyi
index 0477bc08bfb620b3fb5065391359f703c17bf598..be069c0f55689ddef7d9b68f9f3d768f3b29b171 100644
--- a/java-stubs/util/regex/__init__.pyi
+++ b/java-stubs/util/regex/__init__.pyi
@@ -7,6 +7,7 @@ else:
 
 import java.io
 import java.lang
+import java.util
 import java.util.function
 import java.util.stream
 import typing
@@ -19,14 +20,22 @@ class MatchResult:
     @typing.overload
     def end(self, int: int) -> int: ...
     @typing.overload
+    def end(self, string: str) -> int: ...
+    @typing.overload
     def group(self) -> str: ...
     @typing.overload
     def group(self, int: int) -> str: ...
+    @typing.overload
+    def group(self, string: str) -> str: ...
     def groupCount(self) -> int: ...
+    def hasMatch(self) -> bool: ...
+    def namedGroups(self) -> java.util.Map[str, int]: ...
     @typing.overload
     def start(self) -> int: ...
     @typing.overload
     def start(self, int: int) -> int: ...
+    @typing.overload
+    def start(self, string: str) -> int: ...
 
 class Pattern(java.io.Serializable):
     UNIX_LINES: typing.ClassVar[int] = ...
@@ -50,6 +59,7 @@ class Pattern(java.io.Serializable):
     def matcher(self, charSequence: typing.Union[java.lang.CharSequence, str]) -> 'Matcher': ...
     @staticmethod
     def matches(string: str, charSequence: typing.Union[java.lang.CharSequence, str]) -> bool: ...
+    def namedGroups(self) -> java.util.Map[str, int]: ...
     def pattern(self) -> str: ...
     @staticmethod
     def quote(string: str) -> str: ...
@@ -58,6 +68,7 @@ class Pattern(java.io.Serializable):
     @typing.overload
     def split(self, charSequence: typing.Union[java.lang.CharSequence, str], int: int) -> typing.MutableSequence[str]: ...
     def splitAsStream(self, charSequence: typing.Union[java.lang.CharSequence, str]) -> java.util.stream.Stream[str]: ...
+    def splitWithDelimiters(self, charSequence: typing.Union[java.lang.CharSequence, str], int: int) -> typing.MutableSequence[str]: ...
     def toString(self) -> str: ...
 
 class PatternSyntaxException(java.lang.IllegalArgumentException):
@@ -94,10 +105,12 @@ class Matcher(MatchResult):
     def group(self, string: str) -> str: ...
     def groupCount(self) -> int: ...
     def hasAnchoringBounds(self) -> bool: ...
+    def hasMatch(self) -> bool: ...
     def hasTransparentBounds(self) -> bool: ...
     def hitEnd(self) -> bool: ...
     def lookingAt(self) -> bool: ...
     def matches(self) -> bool: ...
+    def namedGroups(self) -> java.util.Map[str, int]: ...
     def pattern(self) -> Pattern: ...
     @staticmethod
     def quoteReplacement(string: str) -> str: ...
diff --git a/java-stubs/util/spi/__init__.pyi b/java-stubs/util/spi/__init__.pyi
index 4f3a3f92f2d972a55c4e5be3da923a5ebff2debe..86e1ba3e3da7e708043f82d207c3d3e1e2a9551e 100644
--- a/java-stubs/util/spi/__init__.pyi
+++ b/java-stubs/util/spi/__init__.pyi
@@ -22,6 +22,7 @@ class ResourceBundleProvider:
     def getBundle(self, string: str, locale: java.util.Locale) -> java.util.ResourceBundle: ...
 
 class ToolProvider:
+    def description(self) -> java.util.Optional[str]: ...
     @staticmethod
     def findFirst(string: str) -> java.util.Optional['ToolProvider']: ...
     def name(self) -> str: ...
diff --git a/java-stubs/util/zip/__init__.pyi b/java-stubs/util/zip/__init__.pyi
index 982013fba1aeb50e9c99b1ddd6d34ca44d9dd6b5..eabe91fcbbb7c1961ec5c48bb0601162f64eeb85 100644
--- a/java-stubs/util/zip/__init__.pyi
+++ b/java-stubs/util/zip/__init__.pyi
@@ -380,7 +380,14 @@ class ZipInputStream(InflaterInputStream, java.util.zip.ZipConstants):
     def read(self) -> int: ...
     @typing.overload
     def read(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
+    def readAllBytes(self) -> typing.MutableSequence[int]: ...
+    @typing.overload
+    def readNBytes(self, int: int) -> typing.MutableSequence[int]: ...
+    @typing.overload
+    def readNBytes(self, byteArray: typing.Union[typing.List[int], jpype.JArray, bytes], int: int, int2: int) -> int: ...
     def skip(self, long: int) -> int: ...
+    def skipNBytes(self, long: int) -> None: ...
+    def transferTo(self, outputStream: java.io.OutputStream) -> int: ...
 
 class ZipOutputStream(DeflaterOutputStream, java.util.zip.ZipConstants):
     STORED: typing.ClassVar[int] = ...
diff --git a/orekit_jpype/jars/orekit-12.1.2.jar b/orekit_jpype/jars/orekit-12.1.3.jar
similarity index 77%
rename from orekit_jpype/jars/orekit-12.1.2.jar
rename to orekit_jpype/jars/orekit-12.1.3.jar
index 19bed4da8c6a31d494c344b731c351aa1dc6e24c..b0bdaca601d76e17cbbe39bc8b9a3ff4859a4314 100644
Binary files a/orekit_jpype/jars/orekit-12.1.2.jar and b/orekit_jpype/jars/orekit-12.1.3.jar differ
diff --git a/orekit_jpype/jars/rugged-4.0-20240603.065802-2.jar b/orekit_jpype/jars/rugged-4.0-20240823.131215-3.jar
similarity index 73%
rename from orekit_jpype/jars/rugged-4.0-20240603.065802-2.jar
rename to orekit_jpype/jars/rugged-4.0-20240823.131215-3.jar
index 39e1d6041ef3450dcaea3ce95e5859fbfe04a756..fb21fead57a95069be76efceba5a8cfc641f9561 100644
Binary files a/orekit_jpype/jars/rugged-4.0-20240603.065802-2.jar and b/orekit_jpype/jars/rugged-4.0-20240823.131215-3.jar differ
diff --git a/org-stubs/orekit/errors/__init__.pyi b/org-stubs/orekit/errors/__init__.pyi
index 58b5cfae91cf36d9b2cf54be16d4a2b6ae654ace..2d2db437fe21865856d046ee5bb9e0e014af74f6 100644
--- a/org-stubs/orekit/errors/__init__.pyi
+++ b/org-stubs/orekit/errors/__init__.pyi
@@ -369,6 +369,7 @@ class OrekitMessages(java.lang.Enum['OrekitMessages'], org.hipparchus.exception.
     WRONG_EOP_INTERPOLATION_DEGREE: typing.ClassVar['OrekitMessages'] = ...
     WALKER_INCONSISTENT_PLANES: typing.ClassVar['OrekitMessages'] = ...
     INFINITE_NRLMSISE00_DENSITY: typing.ClassVar['OrekitMessages'] = ...
+    FIELD_TOO_LONG: typing.ClassVar['OrekitMessages'] = ...
     def getLocalizedString(self, locale: java.util.Locale) -> str:
         """
         
diff --git a/org-stubs/orekit/estimation/measurements/__init__.pyi b/org-stubs/orekit/estimation/measurements/__init__.pyi
index d9e3cee3bd82483c85e2cdc8e87a2973d1252bc1..57cab09d45f45148240f32d3459312961d0c2b7d 100644
--- a/org-stubs/orekit/estimation/measurements/__init__.pyi
+++ b/org-stubs/orekit/estimation/measurements/__init__.pyi
@@ -1236,7 +1236,7 @@ class EstimatedMeasurementBase(ComparableMeasurement, typing.Generic[_EstimatedM
             later). Intermediate participants relfect the signal (it is the spacecraft for two-way range measurement).
         
             Returns:
-                coordinates of the measurements participants in signal travel order in inertial frame
+                coordinates of the measurements participants in signal travel order in inertial frame of first state
         
         
         """
@@ -1730,6 +1730,9 @@ class EstimatedMeasurement(EstimatedMeasurementBase[_EstimatedMeasurement__T], t
         Since:
             8.0
     """
+    @typing.overload
+    def __init__(self, estimatedMeasurementBase: EstimatedMeasurementBase[_EstimatedMeasurement__T]): ...
+    @typing.overload
     def __init__(self, t: _EstimatedMeasurement__T, int: int, int2: int, spacecraftStateArray: typing.Union[typing.List[org.orekit.propagation.SpacecraftState], jpype.JArray], timeStampedPVCoordinatesArray: typing.Union[typing.List[org.orekit.utils.TimeStampedPVCoordinates], jpype.JArray]): ...
     def getDerivativesDrivers(self) -> java.util.stream.Stream[org.orekit.utils.ParameterDriver]: ...
     @typing.overload
diff --git a/org-stubs/orekit/gnss/__init__.pyi b/org-stubs/orekit/gnss/__init__.pyi
index ca738a0c585e3aa524884fd40c21c01c390d115e..0d3b421dd7c0504c25ce0c574d2658c8e8e6ce29 100644
--- a/org-stubs/orekit/gnss/__init__.pyi
+++ b/org-stubs/orekit/gnss/__init__.pyi
@@ -1223,6 +1223,19 @@ class TimeSystem(java.lang.Enum['TimeSystem']):
                 12.0
         
         
+        """
+        ...
+    def getOneLetterCode(self) -> str:
+        """
+            Get the one letter code.
+        
+            Returns:
+                one letter code (may be null for non-GNSS time systems)
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def getTimeScale(self, timeScales: org.orekit.time.TimeScales) -> org.orekit.time.TimeScale:
@@ -1236,6 +1249,19 @@ class TimeSystem(java.lang.Enum['TimeSystem']):
                 the time scale corresponding to time system in the set of time scales
         
         
+        """
+        ...
+    def getTwoLettersCode(self) -> str:
+        """
+            Get the two letters code.
+        
+            Returns:
+                two letters code (may be null for non-GNSS time systems)
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     @staticmethod
diff --git a/org-stubs/orekit/propagation/__init__.pyi b/org-stubs/orekit/propagation/__init__.pyi
index 26f5113c329073ef67bc7232dd3ef302823bec95..c2eb1fa5a139acb08c27eb9c0504e36aaaa7d63b 100644
--- a/org-stubs/orekit/propagation/__init__.pyi
+++ b/org-stubs/orekit/propagation/__init__.pyi
@@ -2482,6 +2482,38 @@ class StateCovariance(org.orekit.time.TimeStamped):
                 the state transition matrix used to shift the covariance matrix
         
         
+        """
+        ...
+    @staticmethod
+    def inputAndOutputAreIdentical(orbitType: org.orekit.orbits.OrbitType, positionAngleType: org.orekit.orbits.PositionAngleType, orbitType2: org.orekit.orbits.OrbitType, positionAngleType2: org.orekit.orbits.PositionAngleType) -> bool:
+        """
+            Checks if input/output orbit and angle types are identical.
+        
+            Parameters:
+                inOrbitType (:class:`~org.orekit.orbits.OrbitType`): input orbit type
+                inAngleType (:class:`~org.orekit.orbits.PositionAngleType`): input angle type
+                outOrbitType (:class:`~org.orekit.orbits.OrbitType`): output orbit type
+                outAngleType (:class:`~org.orekit.orbits.PositionAngleType`): output angle type
+        
+            Returns:
+                flag defining if input/output orbit and angle types are identical
+        
+        
+        """
+        ...
+    @staticmethod
+    def inputAndOutputOrbitTypesAreCartesian(orbitType: org.orekit.orbits.OrbitType, orbitType2: org.orekit.orbits.OrbitType) -> bool:
+        """
+            Checks if input and output orbit types are both :code:`OrbitType.CARTESIAN`.
+        
+            Parameters:
+                inOrbitType (:class:`~org.orekit.orbits.OrbitType`): input orbit type
+                outOrbitType (:class:`~org.orekit.orbits.OrbitType`): output orbit type
+        
+            Returns:
+                flag defining if input and output orbit types are both :code:`OrbitType.CARTESIAN`
+        
+        
         """
         ...
     def shiftedBy(self, orbit: org.orekit.orbits.Orbit, double: float) -> 'StateCovariance':
diff --git a/org-stubs/orekit/propagation/integration/__init__.pyi b/org-stubs/orekit/propagation/integration/__init__.pyi
index 26337b6536788e02a476991160352d86f52cdd6d..545e4fe47fc5b9ebd1a3d24e325332b76d2209ff 100644
--- a/org-stubs/orekit/propagation/integration/__init__.pyi
+++ b/org-stubs/orekit/propagation/integration/__init__.pyi
@@ -291,6 +291,27 @@ class AbstractIntegratedPropagator(org.orekit.propagation.AbstractPropagator):
         ...
     @typing.overload
     def propagate(self, absoluteDate: org.orekit.time.AbsoluteDate, absoluteDate2: org.orekit.time.AbsoluteDate) -> org.orekit.propagation.SpacecraftState: ...
+    @typing.overload
+    def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
+        """
+            Reset initial state with a given propagation type.
+        
+            By default this method returns the same as :meth:`~org.orekit.propagation.AbstractPropagator.resetInitialState`
+        
+            Its purpose is mostly to be derived in DSSTPropagator
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): new initial state to consider
+                stateType (:class:`~org.orekit.propagation.PropagationType`): type of the new state (mean or osculating)
+        
+            Since:
+                12.1.3
+        
+        
+        """
+        ...
+    @typing.overload
+    def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState, propagationType: org.orekit.propagation.PropagationType) -> None: ...
     def setAttitudeProvider(self, attitudeProvider: org.orekit.attitudes.AttitudeProvider) -> None:
         """
             Set attitude provider.
@@ -640,6 +661,10 @@ class FieldAbstractIntegratedPropagator(org.orekit.propagation.FieldAbstractProp
     def propagate(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldAbstractIntegratedPropagator__T]) -> org.orekit.propagation.FieldSpacecraftState[_FieldAbstractIntegratedPropagator__T]: ...
     @typing.overload
     def propagate(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldAbstractIntegratedPropagator__T], fieldAbsoluteDate2: org.orekit.time.FieldAbsoluteDate[_FieldAbstractIntegratedPropagator__T]) -> org.orekit.propagation.FieldSpacecraftState[_FieldAbstractIntegratedPropagator__T]: ...
+    @typing.overload
+    def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldAbstractIntegratedPropagator__T]) -> None: ...
+    @typing.overload
+    def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldAbstractIntegratedPropagator__T], propagationType: org.orekit.propagation.PropagationType) -> None: ...
     def setAttitudeProvider(self, attitudeProvider: org.orekit.attitudes.AttitudeProvider) -> None:
         """
             Set attitude provider.
diff --git a/org-stubs/orekit/propagation/numerical/__init__.pyi b/org-stubs/orekit/propagation/numerical/__init__.pyi
index d50e51f2e24de35adfbbd38e42492427442e3685..d88ba1c9e48fa88501a30bfba509769d062c23ba 100644
--- a/org-stubs/orekit/propagation/numerical/__init__.pyi
+++ b/org-stubs/orekit/propagation/numerical/__init__.pyi
@@ -321,6 +321,9 @@ class FieldNumericalPropagator(org.orekit.propagation.integration.FieldAbstractI
         
         """
         ...
+    @typing.overload
+    def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldNumericalPropagator__T], propagationType: org.orekit.propagation.PropagationType) -> None: ...
+    @typing.overload
     def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldNumericalPropagator__T]) -> None: ...
     def setIgnoreCentralAttraction(self, boolean: bool) -> None:
         """
@@ -780,6 +783,9 @@ class NumericalPropagator(org.orekit.propagation.integration.AbstractIntegratedP
         
         """
         ...
+    @typing.overload
+    def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState, propagationType: org.orekit.propagation.PropagationType) -> None: ...
+    @typing.overload
     def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
         """
             Reset the propagator initial state.
diff --git a/org-stubs/orekit/propagation/semianalytical/dsst/__init__.pyi b/org-stubs/orekit/propagation/semianalytical/dsst/__init__.pyi
index 378a34d66f502109e18dd87d9c5988971ef1daff..22a759cd9e4d6077d6956bda40565607f9defb3d 100644
--- a/org-stubs/orekit/propagation/semianalytical/dsst/__init__.pyi
+++ b/org-stubs/orekit/propagation/semianalytical/dsst/__init__.pyi
@@ -376,6 +376,7 @@ class DSSTPropagator(org.orekit.propagation.integration.AbstractIntegratedPropag
         
         """
         ...
+    @typing.overload
     def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
         """
             Reset the initial state.
@@ -390,9 +391,30 @@ class DSSTPropagator(org.orekit.propagation.integration.AbstractIntegratedPropag
             Parameters:
                 state (:class:`~org.orekit.propagation.SpacecraftState`): new initial state
         
+            Reset initial state with a given propagation type.
+        
+            By default this method returns the same as :meth:`~org.orekit.propagation.AbstractPropagator.resetInitialState`
+        
+            Its purpose is mostly to be derived in DSSTPropagator.
+        
+            Change parameter :meth:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator.initialIsOsculating` accordingly
+        
+            Overrides:
+                :meth:`~org.orekit.propagation.integration.AbstractIntegratedPropagator.resetInitialState` in
+                class :class:`~org.orekit.propagation.integration.AbstractIntegratedPropagator`
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): new initial state to consider
+                stateType (:class:`~org.orekit.propagation.PropagationType`): type of the new state (mean or osculating)
+        
+            Since:
+                12.1.3
+        
         
         """
         ...
+    @typing.overload
+    def resetInitialState(self, spacecraftState: org.orekit.propagation.SpacecraftState, propagationType: org.orekit.propagation.PropagationType) -> None: ...
     def setAttitudeProvider(self, attitudeProvider: org.orekit.attitudes.AttitudeProvider) -> None:
         """
             Set attitude provider.
@@ -751,7 +773,10 @@ class FieldDSSTPropagator(org.orekit.propagation.integration.FieldAbstractIntegr
         
         """
         ...
+    @typing.overload
     def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldDSSTPropagator__T]) -> None: ...
+    @typing.overload
+    def resetInitialState(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldDSSTPropagator__T], propagationType: org.orekit.propagation.PropagationType) -> None: ...
     def setAttitudeProvider(self, attitudeProvider: org.orekit.attitudes.AttitudeProvider) -> None:
         """
             Set attitude provider.
diff --git a/pom.xml b/pom.xml
index 8b00cbf11586423fc8100b8ccb797bf055de03d8..8d9d6f9f3575e2bedf399d9cdfa3e68c1faa5dba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
   <version>0.0.1-SNAPSHOT</version>
   <properties>
       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-      <orekit.version>12.1.2</orekit.version>
+      <orekit.version>12.1.3</orekit.version>
       <rugged.version>4.0-SNAPSHOT</rugged.version>
       <hipparchus.version>3.1</hipparchus.version>
   </properties>
diff --git a/pyproject.toml b/pyproject.toml
index 8d4329544000faf7d26a21e4f54fec717bc10206..bc56e51cc04df0d4cf500974f58bb502312d6a97 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@ allow-direct-references = true
 
 [project]
 name = "orekit_jpype"
-version = "12.1.2.0"
+version = "12.1.3.0"
 description = "A space dynamics library. This package is a jpype wrapping of the original orekit java code."
 readme = "README.md"
 authors = [{name = "Petrus Hyvönen", email = "petrus.hyvonen@gmail.com"}]