diff --git a/java-stubs/awt/geom/__init__.pyi b/java-stubs/awt/geom/__init__.pyi
index d71c9da7a69d95accde7ef38aa566e879d6f73cf..fb723310058032370cccdab980ed346a9d182c4d 100644
--- a/java-stubs/awt/geom/__init__.pyi
+++ b/java-stubs/awt/geom/__init__.pyi
@@ -408,7 +408,6 @@ 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: ...
@@ -482,6 +481,7 @@ 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,6 +517,7 @@ 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: ...
@@ -927,7 +928,6 @@ 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,6 +996,7 @@ 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: ...
@@ -1026,6 +1027,7 @@ 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 f97cc725ebac10b48666f367b9f91d9b6ad5366e..4d8e0dfc52cb77b3bb4dfba1efbfc4938efa5ca2 100644
--- a/java-stubs/awt/image/__init__.pyi
+++ b/java-stubs/awt/image/__init__.pyi
@@ -38,6 +38,7 @@ 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
@@ -876,6 +877,7 @@ 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 71543abc5a4627c04b9443a6add76ee8c7996b5e..8ddeeca9d9604fd0826e5da6cb6a9c675e87ad72 100644
--- a/java-stubs/io/__init__.pyi
+++ b/java-stubs/io/__init__.pyi
@@ -713,7 +713,6 @@ 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
@@ -818,17 +817,10 @@ 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
@@ -1158,7 +1150,6 @@ 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
@@ -1237,14 +1228,13 @@ 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
@@ -1405,7 +1395,6 @@ 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: ...
@@ -1480,7 +1469,6 @@ 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 115d2364abc5ad4237dcf79a191d2f8a4abaf1dd..48332f97adf2c84c58c397105fda3382dd812b70 100644
--- a/java-stubs/lang/__init__.pyi
+++ b/java-stubs/lang/__init__.pyi
@@ -15,7 +15,6 @@ 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
@@ -63,7 +62,6 @@ 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]: ...
@@ -151,7 +149,6 @@ 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: ...
@@ -194,6 +191,18 @@ _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: ...
@@ -215,7 +224,6 @@ 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
@@ -256,42 +264,6 @@ 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
@@ -306,12 +278,6 @@ 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
@@ -329,12 +295,6 @@ 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
@@ -481,8 +441,6 @@ 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': ...
@@ -506,7 +464,6 @@ 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
@@ -543,7 +500,6 @@ 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):
@@ -564,10 +520,10 @@ class Object:
     def notifyAll(self) -> None: ...
     def toString(self) -> str: ...
     @typing.overload
-    def wait(self) -> None: ...
-    @typing.overload
     def wait(self, long: int) -> None: ...
     @typing.overload
+    def wait(self) -> None: ...
+    @typing.overload
     def wait(self, long: int, int: int) -> None: ...
 
 class Override(java.lang.annotation.Annotation):
@@ -630,44 +586,6 @@ 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: ...
@@ -733,7 +651,6 @@ 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
@@ -774,42 +691,6 @@ 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
@@ -824,12 +705,6 @@ 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
@@ -847,12 +722,6 @@ 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
@@ -999,45 +868,6 @@ 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: ...
@@ -1187,10 +1017,9 @@ 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
@@ -1311,10 +1140,9 @@ 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
@@ -1331,10 +1159,6 @@ 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: ...
@@ -1407,16 +1231,12 @@ 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
@@ -1531,16 +1351,12 @@ 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
@@ -1846,13 +1662,9 @@ 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: ...
@@ -1890,7 +1702,6 @@ 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
@@ -2230,6 +2041,106 @@ 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): ...
 
@@ -2390,9 +2301,6 @@ 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): ...
@@ -2447,6 +2355,40 @@ 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: ...
@@ -2479,16 +2421,6 @@ 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): ...
@@ -2711,18 +2643,6 @@ 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
@@ -3186,25 +3106,6 @@ 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
@@ -3370,13 +3271,6 @@ 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': ...
@@ -3423,7 +3317,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, Appendable, java.io.Serializable, Comparable['StringBuffer'], CharSequence):
+class StringBuffer(java.lang.AbstractStringBuilder, java.io.Serializable, Comparable['StringBuffer'], CharSequence):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3503,10 +3397,6 @@ class StringBuffer(java.lang.AbstractStringBuilder, Appendable, java.io.Serializ
     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: ...
@@ -3519,7 +3409,7 @@ class StringBuffer(java.lang.AbstractStringBuilder, Appendable, java.io.Serializ
     def toString(self) -> str: ...
     def trimToSize(self) -> None: ...
 
-class StringBuilder(java.lang.AbstractStringBuilder, Appendable, java.io.Serializable, Comparable['StringBuilder'], CharSequence):
+class StringBuilder(java.lang.AbstractStringBuilder, java.io.Serializable, Comparable['StringBuilder'], CharSequence):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3590,191 +3480,10 @@ class StringBuilder(java.lang.AbstractStringBuilder, Appendable, java.io.Seriali
     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: ...
@@ -3806,6 +3515,7 @@ 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]
@@ -3834,7 +3544,6 @@ 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]
@@ -3863,7 +3572,6 @@ 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]
@@ -3875,7 +3583,6 @@ 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]
@@ -3891,10 +3598,8 @@ 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 51dbec61a2213a8ec45b73d2459745c4eb1c4d4c..02b2db79c1c3fbd5a44e7c799f648a0c0dd19214 100644
--- a/java-stubs/lang/constant/__init__.pyi
+++ b/java-stubs/lang/constant/__init__.pyi
@@ -76,14 +76,9 @@ 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
@@ -110,21 +105,6 @@ 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': ...
@@ -149,10 +129,7 @@ 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]):
@@ -192,7 +169,6 @@ 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': ...
@@ -202,22 +178,14 @@ 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):
@@ -271,5 +239,3 @@ 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
deleted file mode 100644
index 90833820b5239ab3bae347804c3484628c262e57..0000000000000000000000000000000000000000
--- a/java-stubs/lang/foreign/__init__.pyi
+++ /dev/null
@@ -1,531 +0,0 @@
-
-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 19bef8a6b0a10bef2cb9d8af0f9832d39a9177e9..b51db8dd3d7d25696609c2200b5a34822e6afb38 100644
--- a/java-stubs/lang/invoke/__init__.pyi
+++ b/java-stubs/lang/invoke/__init__.pyi
@@ -9,7 +9,6 @@ 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
@@ -155,8 +154,6 @@ 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
@@ -175,8 +172,6 @@ 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: ...
@@ -187,11 +182,7 @@ 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: ...
@@ -205,8 +196,6 @@ 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: ...
@@ -215,12 +204,8 @@ 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': ...
@@ -251,15 +236,13 @@ class MethodHandles:
         MODULE: typing.ClassVar[int] = ...
         UNCONDITIONAL: typing.ClassVar[int] = ...
         ORIGINAL: typing.ClassVar[int] = ...
-        _accessClass__T = typing.TypeVar('_accessClass__T')  # <T>
-        def accessClass(self, class_: typing.Type[_accessClass__T]) -> typing.Type[_accessClass__T]: ...
+        def accessClass(self, class_: typing.Type[typing.Any]) -> typing.Type[typing.Any]: ...
         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': ...
-        _ensureInitialized__T = typing.TypeVar('_ensureInitialized__T')  # <T>
-        def ensureInitialized(self, class_: typing.Type[_ensureInitialized__T]) -> typing.Type[_ensureInitialized__T]: ...
+        def ensureInitialized(self, class_: typing.Type[typing.Any]) -> typing.Type[typing.Any]: ...
         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: ...
@@ -320,17 +303,10 @@ 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 2c4790fbb8287d24b132a1409db8f369df7dbd05..f0566b4fa50ee500d7af7228bd966b56ef9c1b6f 100644
--- a/java-stubs/lang/module/__init__.pyi
+++ b/java-stubs/lang/module/__init__.pyi
@@ -7,7 +7,6 @@ else:
 
 import java.io
 import java.lang
-import java.lang.reflect
 import java.net
 import java.nio
 import java.nio.file
@@ -54,7 +53,6 @@ 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']: ...
@@ -137,7 +135,6 @@ 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: ...
@@ -173,7 +170,6 @@ 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: ...
@@ -202,7 +198,6 @@ 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 2708db22c2c0726fbe2a0cb84cab9fd3350142a9..e1dc934d5e82b194d8e12e0056fbde7f930be226 100644
--- a/java-stubs/lang/reflect/__init__.pyi
+++ b/java-stubs/lang/reflect/__init__.pyi
@@ -9,73 +9,11 @@ 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: ...
@@ -135,48 +73,6 @@ 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): ...
@@ -217,7 +113,6 @@ 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: ...
@@ -340,7 +235,6 @@ 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>
@@ -413,7 +307,6 @@ 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: ...
@@ -439,7 +332,6 @@ 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: ...
@@ -548,7 +440,6 @@ 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]
@@ -557,7 +448,6 @@ 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 c112535ff2bcc41ffea67fbf1b20ef3502602ee2..f860a22d63420ffdbfa258fcbedf5dd4e12a62a9 100644
--- a/java-stubs/lang/runtime/__init__.pyi
+++ b/java-stubs/lang/runtime/__init__.pyi
@@ -20,18 +20,9 @@ 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 1bcd6358b0cd5ab79c1bdac7e2bbed29426c9bb5..ad61967cbb43a2aad8707d929ce9a385cd7e282c 100644
--- a/java-stubs/math/__init__.pyi
+++ b/java-stubs/math/__init__.pyi
@@ -18,7 +18,6 @@ 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] = ...
@@ -211,7 +210,6 @@ 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 af98fd082c692fb33b3e87ab909e83be9d11e716..38a0b63f0fa492565dcdd9f6c172b51607ec7468 100644
--- a/java-stubs/net/__init__.pyi
+++ b/java-stubs/net/__init__.pyi
@@ -500,10 +500,6 @@ 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': ...
@@ -643,8 +639,6 @@ 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 6e12d6de701eb90dfe31c7760cf5306f4ec78361..eb93bcadde69930485bead8100a5ff4c663b2814 100644
--- a/java-stubs/net/http/__init__.pyi
+++ b/java-stubs/net/http/__init__.pyi
@@ -23,15 +23,12 @@ import typing
 
 
 
-class HttpClient(java.lang.AutoCloseable):
+class HttpClient:
     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
@@ -46,8 +43,6 @@ class HttpClient(java.lang.AutoCloseable):
     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': ...
@@ -59,7 +54,6 @@ class HttpClient(java.lang.AutoCloseable):
         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': ...
@@ -155,7 +149,6 @@ 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 64c7bec81cf16140a0f9ae6e30908179c821d06d..e10c759c60fa3487a312a265d7d8b38cb2d16df9 100644
--- a/java-stubs/net/spi/__init__.pyi
+++ b/java-stubs/net/spi/__init__.pyi
@@ -6,37 +6,14 @@ 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 dde9f098451b5e9dd9c741ecc5d474395011420b..fcf80a22e2d5e1f4a15e6d0e458c91e1bf089cec 100644
--- a/java-stubs/nio/channels/__init__.pyi
+++ b/java-stubs/nio/channels/__init__.pyi
@@ -7,7 +7,6 @@ else:
 
 import java.io
 import java.lang
-import java.lang.foreign
 import java.net
 import java.nio
 import java.nio.channels.spi
@@ -509,11 +508,8 @@ 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 6e74455786f5d5afd5414b36a89be80b5570ec8d..1a546f083305d8d8d4ffdaaa6d70cd1d1831d7fb 100644
--- a/java-stubs/nio/charset/__init__.pyi
+++ b/java-stubs/nio/charset/__init__.pyi
@@ -37,12 +37,8 @@ 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 e91284bb9415dd42d13d8cf4a5a2ee18a7e86401..29042d1a0fce7318fc028d54a54c1fd9a2f271ea 100644
--- a/java-stubs/nio/file/spi/__init__.pyi
+++ b/java-stubs/nio/file/spi/__init__.pyi
@@ -25,7 +25,6 @@ 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: ...
@@ -52,8 +51,6 @@ 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 6692a35a299941b5f17e92d73a6123cb70abac0c..170a4186ee7165c2cef54d344b5da7e333533a51 100644
--- a/java-stubs/security/__init__.pyi
+++ b/java-stubs/security/__init__.pyi
@@ -253,10 +253,6 @@ 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] = ...
@@ -320,7 +316,6 @@ 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]: ...
@@ -960,7 +955,6 @@ 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 2d5c0a59685c7f82717b4299148aa420f0af52d5..efe5f8c03f5da951c8076bc7f0dd05298cad801b 100644
--- a/java-stubs/text/__init__.pyi
+++ b/java-stubs/text/__init__.pyi
@@ -243,7 +243,6 @@ 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 f45c575c0eff5e42aa3d49d86ad329638a591380..84910a6a73b881a824555583edea636d7c25bfec 100644
--- a/java-stubs/time/__init__.pyi
+++ b/java-stubs/time/__init__.pyi
@@ -77,7 +77,6 @@ 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': ...
@@ -1184,7 +1183,6 @@ 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 2601dc9a4fa8c07becdc23a3517a68d096dda271..1d8793232fe943520609c7bd5fe3e3ca25314c83 100644
--- a/java-stubs/time/chrono/__init__.pyi
+++ b/java-stubs/time/chrono/__init__.pyi
@@ -202,7 +202,6 @@ 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
@@ -381,7 +380,6 @@ 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: ...
@@ -416,7 +414,6 @@ 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: ...
@@ -450,7 +447,6 @@ 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: ...
@@ -484,7 +480,6 @@ 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 e06b6babd6155e8e69f316b85fbd79730c07c7e4..6c3ba241ceae66e7e912790a731606a0825ee7d3 100644
--- a/java-stubs/time/format/__init__.pyi
+++ b/java-stubs/time/format/__init__.pyi
@@ -49,8 +49,6 @@ 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
@@ -105,9 +103,6 @@ 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': ...
@@ -137,10 +132,6 @@ 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 800dc358470f09a204c07449afc29ed693338e32..9a3f0971da2542618b42bf3b6116503383f43b5d 100644
--- a/java-stubs/util/__init__.pyi
+++ b/java-stubs/util/__init__.pyi
@@ -16,7 +16,6 @@ import datetime
 import java
 import java.io
 import java.lang
-import java.lang.invoke
 import java.math
 import java.nio
 import java.nio.channels
@@ -1103,9 +1102,6 @@ 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]: ...
@@ -1130,9 +1126,6 @@ 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]: ...
@@ -1197,16 +1190,6 @@ 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]: ...
@@ -1387,13 +1370,6 @@ 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: ...
 
@@ -1599,10 +1575,6 @@ 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
@@ -1674,15 +1646,6 @@ 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
@@ -1988,8 +1951,6 @@ 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
@@ -2135,8 +2096,6 @@ 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
@@ -2654,6 +2613,98 @@ 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: ...
@@ -2827,34 +2878,6 @@ 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: ...
@@ -2973,6 +2996,21 @@ 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): ...
@@ -2999,6 +3037,30 @@ 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: ...
@@ -3017,7 +3079,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], SequencedCollection[_Deque__E], typing.Generic[_Deque__E]):
+class Deque(Queue[_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: ...
@@ -3049,7 +3111,6 @@ class Deque(Queue[_Deque__E], SequencedCollection[_Deque__E], typing.Generic[_De
     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>
@@ -3104,10 +3165,6 @@ 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: ...
@@ -3149,162 +3206,92 @@ 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]: ...
 
-_List__E = typing.TypeVar('_List__E')  # <E>
-class List(SequencedCollection[_List__E], typing.Generic[_List__E], _JList[_List__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 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 add(self, e: _List__E) -> bool: ...
+    def headMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    def add(self, int: int, e: _List__E) -> None: ...
+    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 addAll(self, int: int, collection: typing.Union[Collection[_List__E], typing.Sequence[_List__E], typing.Set[_List__E]]) -> bool: ...
+    def subMap(self, k: _NavigableMap__K, boolean: bool, k2: _NavigableMap__K, boolean2: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
     @typing.overload
-    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 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]: ...
+    @typing.overload
+    def tailMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
+
+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 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 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 get(self, int: int) -> _List__E: ...
-    def getFirst(self) -> _List__E: ...
-    def getLast(self) -> _List__E: ...
+    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 indexOf(self, object: typing.Any) -> int: ...
     def isEmpty(self) -> bool: ...
-    def iterator(self) -> Iterator[_List__E]: ...
-    def lastIndexOf(self, object: typing.Any) -> int: ...
+    def keySet(self) -> Set[typing.Any]: ...
+    def keys(self) -> Enumeration[typing.Any]: ...
     @typing.overload
-    def listIterator(self) -> ListIterator[_List__E]: ...
+    def list(self, printStream: java.io.PrintStream) -> None: ...
     @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>
+    def list(self, printWriter: java.io.PrintWriter) -> None: ...
     @typing.overload
-    @staticmethod
-    def of() -> 'List'[_of_0__E]: ...
+    def load(self, inputStream: java.io.InputStream) -> None: ...
     @typing.overload
-    @staticmethod
-    def of(e: _of_1__E) -> 'List'[_of_1__E]: ...
+    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
-    @staticmethod
-    def of(e: _of_2__E, e2: _of_2__E) -> 'List'[_of_2__E]: ...
+    def remove(self, object: typing.Any, object2: typing.Any) -> bool: ...
     @typing.overload
-    @staticmethod
-    def of(e: _of_3__E, e2: _of_3__E, e3: _of_3__E) -> 'List'[_of_3__E]: ...
+    def remove(self, object: typing.Any) -> typing.Any: ...
     @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 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: ...
+    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: ...
@@ -3325,29 +3312,17 @@ class Properties(Hashtable[typing.Any, typing.Any]):
     def toString(self) -> str: ...
     def values(self) -> Collection[typing.Any]: ...
 
-_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 hashCode(self) -> int: ...
-    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]]: ...
+_SortedSet__E = typing.TypeVar('_SortedSet__E')  # <E>
+class SortedSet(Set[_SortedSet__E], typing.Generic[_SortedSet__E]):
+    def comparator(self) -> Comparator[_SortedSet__E]: ...
     def equals(self, object: typing.Any) -> bool: ...
-    def firstKey(self) -> _SortedMap__K: ...
+    def first(self) -> _SortedSet__E: ...
     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]: ...
+    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]: ...
 
 _WeakHashMap__K = typing.TypeVar('_WeakHashMap__K')  # <K>
 _WeakHashMap__V = typing.TypeVar('_WeakHashMap__V')  # <V>
@@ -3368,10 +3343,6 @@ 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
@@ -3382,29 +3353,23 @@ class WeakHashMap(AbstractMap[_WeakHashMap__K, _WeakHashMap__V], Map[_WeakHashMa
     def size(self) -> int: ...
     def values(self) -> Collection[_WeakHashMap__V]: ...
 
-_AbstractList__E = typing.TypeVar('_AbstractList__E')  # <E>
-class AbstractList(AbstractCollection[_AbstractList__E], List[_AbstractList__E], typing.Generic[_AbstractList__E]):
+_AbstractSequentialList__E = typing.TypeVar('_AbstractSequentialList__E')  # <E>
+class AbstractSequentialList(AbstractList[_AbstractSequentialList__E], typing.Generic[_AbstractSequentialList__E]):
     @typing.overload
-    def add(self, e: _AbstractList__E) -> bool: ...
+    def add(self, e: _AbstractSequentialList__E) -> bool: ...
     @typing.overload
-    def add(self, int: int, e: _AbstractList__E) -> None: ...
+    def add(self, int: int, e: _AbstractSequentialList__E) -> None: ...
     @typing.overload
-    def addAll(self, collection: typing.Union[Collection[_AbstractList__E], typing.Sequence[_AbstractList__E], typing.Set[_AbstractList__E]]) -> bool: ...
+    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[_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: ...
+    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) -> ListIterator[_AbstractList__E]: ...
+    def listIterator(self, int: int) -> ListIterator[_AbstractSequentialList__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]: ...
+    def listIterator(self) -> ListIterator[_AbstractSequentialList__E]: ...
+    def set(self, int: int, e: _AbstractSequentialList__E) -> _AbstractSequentialList__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]):
@@ -3461,6 +3426,57 @@ 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>
@@ -3525,9 +3541,6 @@ 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]: ...
@@ -3542,7 +3555,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], SequencedMap[_LinkedHashMap__K, _LinkedHashMap__V], typing.Generic[_LinkedHashMap__K, _LinkedHashMap__V]):
+class LinkedHashMap(HashMap[_LinkedHashMap__K, _LinkedHashMap__V], Map[_LinkedHashMap__K, _LinkedHashMap__V], typing.Generic[_LinkedHashMap__K, _LinkedHashMap__V]):
     @typing.overload
     def __init__(self): ...
     @typing.overload
@@ -3560,52 +3573,34 @@ class LinkedHashMap(HashMap[_LinkedHashMap__K, _LinkedHashMap__V], SequencedMap[
     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]: ...
 
-_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]: ...
+_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 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 floor(self, e: _NavigableSet__E) -> _NavigableSet__E: ...
     def hashCode(self) -> int: ...
     @typing.overload
-    def headMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
+    def headSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
     @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]: ...
-    def reversed(self) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
+    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: ...
     @typing.overload
-    def subMap(self, k: _NavigableMap__K, boolean: bool, k2: _NavigableMap__K, boolean2: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
+    def subSet(self, e: _NavigableSet__E, boolean: bool, e2: _NavigableSet__E, boolean2: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
     @typing.overload
-    def subMap(self, k: _NavigableMap__K, k2: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
+    def subSet(self, e: _NavigableSet__E, e2: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
     @typing.overload
-    def tailMap(self, k: _NavigableMap__K, boolean: bool) -> 'NavigableMap'[_NavigableMap__K, _NavigableMap__V]: ...
+    def tailSet(self, e: _NavigableSet__E, boolean: bool) -> 'NavigableSet'[_NavigableSet__E]: ...
     @typing.overload
-    def tailMap(self, k: _NavigableMap__K) -> SortedMap[_NavigableMap__K, _NavigableMap__V]: ...
+    def tailSet(self, e: _NavigableSet__E) -> SortedSet[_NavigableSet__E]: ...
 
 _PriorityQueue__E = typing.TypeVar('_PriorityQueue__E')  # <E>
 class PriorityQueue(AbstractQueue[_PriorityQueue__E], java.io.Serializable, typing.Generic[_PriorityQueue__E]):
@@ -3622,7 +3617,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]: ...
@@ -3650,151 +3645,6 @@ 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]):
@@ -3842,9 +3692,7 @@ 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
@@ -3939,6 +3787,18 @@ 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
@@ -3984,7 +3844,6 @@ 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]: ...
@@ -4018,8 +3877,6 @@ 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: ...
@@ -4274,7 +4131,6 @@ 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]
@@ -4328,9 +4184,6 @@ 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 750e4b992114184a9dc1c15419ae4692f6b1e023..88687a56af627ac3cae705ca4431518dbe84b576 100644
--- a/java-stubs/util/concurrent/__init__.pyi
+++ b/java-stubs/util/concurrent/__init__.pyi
@@ -5,7 +5,6 @@ if sys.version_info >= (3, 8):
 else:
     from typing_extensions import Protocol
 
-import datetime
 import java
 import java.io
 import java.lang
@@ -298,8 +297,6 @@ 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]: ...
@@ -351,9 +348,7 @@ 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: ...
@@ -361,8 +356,6 @@ 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: ...
@@ -379,12 +372,9 @@ 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: ...
@@ -520,10 +510,6 @@ 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': ...
@@ -546,35 +532,17 @@ 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
@@ -650,12 +618,6 @@ 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: ...
 
@@ -894,7 +856,6 @@ 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]: ...
@@ -935,7 +896,6 @@ 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]: ...
@@ -952,7 +912,6 @@ 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
@@ -1092,9 +1051,8 @@ 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, java.lang.AutoCloseable):
+class ExecutorService(Executor):
     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
@@ -1134,14 +1092,10 @@ 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: ...
@@ -1178,15 +1132,9 @@ 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>
@@ -1423,9 +1371,7 @@ 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
@@ -1474,16 +1420,13 @@ 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>
@@ -1657,15 +1600,12 @@ 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
@@ -1697,11 +1637,8 @@ 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>
@@ -1959,66 +1896,6 @@ 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
@@ -2103,8 +1980,6 @@ 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 be069c0f55689ddef7d9b68f9f3d768f3b29b171..0477bc08bfb620b3fb5065391359f703c17bf598 100644
--- a/java-stubs/util/regex/__init__.pyi
+++ b/java-stubs/util/regex/__init__.pyi
@@ -7,7 +7,6 @@ else:
 
 import java.io
 import java.lang
-import java.util
 import java.util.function
 import java.util.stream
 import typing
@@ -20,22 +19,14 @@ 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] = ...
@@ -59,7 +50,6 @@ 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: ...
@@ -68,7 +58,6 @@ 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):
@@ -105,12 +94,10 @@ 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 86e1ba3e3da7e708043f82d207c3d3e1e2a9551e..4f3a3f92f2d972a55c4e5be3da923a5ebff2debe 100644
--- a/java-stubs/util/spi/__init__.pyi
+++ b/java-stubs/util/spi/__init__.pyi
@@ -22,7 +22,6 @@ 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 eabe91fcbbb7c1961ec5c48bb0601162f64eeb85..982013fba1aeb50e9c99b1ddd6d34ca44d9dd6b5 100644
--- a/java-stubs/util/zip/__init__.pyi
+++ b/java-stubs/util/zip/__init__.pyi
@@ -380,14 +380,7 @@ 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/hipparchus-core-3.1.jar b/orekit_jpype/jars/hipparchus-core-3.1.jar
index 3474aa93f142c168e81faf682375b6f8f0b51215..9828548756266b7f9aeddc829cd35b60bbcb7e32 100644
Binary files a/orekit_jpype/jars/hipparchus-core-3.1.jar and b/orekit_jpype/jars/hipparchus-core-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-filtering-3.1.jar b/orekit_jpype/jars/hipparchus-filtering-3.1.jar
index cdadd3540a04b2e2ac45c0f9937071f24dcdce62..a9a3c0214a98a226f42d16fb6f2311c9f2bb4d2e 100644
Binary files a/orekit_jpype/jars/hipparchus-filtering-3.1.jar and b/orekit_jpype/jars/hipparchus-filtering-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-fitting-3.1.jar b/orekit_jpype/jars/hipparchus-fitting-3.1.jar
index 70dce54fb26ea7db9f77ffe3890f830a1e4da360..06e43406e2ab48aa046fe3484972c63f2d3257c5 100644
Binary files a/orekit_jpype/jars/hipparchus-fitting-3.1.jar and b/orekit_jpype/jars/hipparchus-fitting-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-geometry-3.1.jar b/orekit_jpype/jars/hipparchus-geometry-3.1.jar
index ccf03f2c984b089200df136ff27cef15f0ce6f63..140ffb04e1ff180bc4bbb25f1ed81b37f30b6d10 100644
Binary files a/orekit_jpype/jars/hipparchus-geometry-3.1.jar and b/orekit_jpype/jars/hipparchus-geometry-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-ode-3.1.jar b/orekit_jpype/jars/hipparchus-ode-3.1.jar
index b50e6486b50f1d1c84f939ccfd676770e10b89b3..bb33ce1c9a6accca7ea7b8fa4d4af8fd4cbcdec3 100644
Binary files a/orekit_jpype/jars/hipparchus-ode-3.1.jar and b/orekit_jpype/jars/hipparchus-ode-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-optim-3.1.jar b/orekit_jpype/jars/hipparchus-optim-3.1.jar
index c84bdb44e36e0a979b831bbd1c8d6f673494810d..f0f17da3b2dcb34d1e0e7b5f4cfdcb1b4772bfc5 100644
Binary files a/orekit_jpype/jars/hipparchus-optim-3.1.jar and b/orekit_jpype/jars/hipparchus-optim-3.1.jar differ
diff --git a/orekit_jpype/jars/hipparchus-stat-3.1.jar b/orekit_jpype/jars/hipparchus-stat-3.1.jar
index 311e1a67608c7d7d1165041143303d66a4152b26..1e917e1cbd83c8fd9fab99ded9d3558b29b02a22 100644
Binary files a/orekit_jpype/jars/hipparchus-stat-3.1.jar and b/orekit_jpype/jars/hipparchus-stat-3.1.jar differ
diff --git a/orekit_jpype/jars/orekit-12.1.3.jar b/orekit_jpype/jars/orekit-12.2.jar
similarity index 78%
rename from orekit_jpype/jars/orekit-12.1.3.jar
rename to orekit_jpype/jars/orekit-12.2.jar
index b0bdaca601d76e17cbbe39bc8b9a3ff4859a4314..e6c29f3c19efff7e6ed28ee9d0d193add1ce3b02 100644
Binary files a/orekit_jpype/jars/orekit-12.1.3.jar and b/orekit_jpype/jars/orekit-12.2.jar differ
diff --git a/org-stubs/orekit/__init__.pyi b/org-stubs/orekit/__init__.pyi
index 7e254eb26a7d75e8c622610a55c66b61fe48a7c4..377074d2104f27f0dd147cc17236ac0de99ce2fe 100644
--- a/org-stubs/orekit/__init__.pyi
+++ b/org-stubs/orekit/__init__.pyi
@@ -9,6 +9,7 @@ import org.orekit.annotation
 import org.orekit.attitudes
 import org.orekit.bodies
 import org.orekit.compiler
+import org.orekit.control
 import org.orekit.data
 import org.orekit.errors
 import org.orekit.estimation
@@ -34,6 +35,7 @@ class __module_protocol__(Protocol):
     attitudes: org.orekit.attitudes.__module_protocol__
     bodies: org.orekit.bodies.__module_protocol__
     compiler: org.orekit.compiler.__module_protocol__
+    control: org.orekit.control.__module_protocol__
     data: org.orekit.data.__module_protocol__
     errors: org.orekit.errors.__module_protocol__
     estimation: org.orekit.estimation.__module_protocol__
diff --git a/org-stubs/orekit/attitudes/__init__.pyi b/org-stubs/orekit/attitudes/__init__.pyi
index 63cca048441014f35d446f25bdc922a3d3f826fe..9c865be87bb1185705f3ccf4fd2d908428d745f1 100644
--- a/org-stubs/orekit/attitudes/__init__.pyi
+++ b/org-stubs/orekit/attitudes/__init__.pyi
@@ -6,13 +6,17 @@ else:
     from typing_extensions import Protocol
 
 import java.io
+import java.lang
 import java.util
 import org.hipparchus
+import org.hipparchus.analysis.differentiation
 import org.hipparchus.geometry.euclidean.threed
+import org.hipparchus.ode.events
 import org.orekit.bodies
 import org.orekit.frames
 import org.orekit.propagation
 import org.orekit.propagation.events
+import org.orekit.propagation.events.handlers
 import org.orekit.time
 import org.orekit.utils
 import typing
@@ -579,6 +583,144 @@ class InertiaAxis:
         """
         ...
 
+class TargetProvider:
+    """
+    public interface TargetProvider
+    
+        Provider for target vector.
+    
+        Since:
+            12.2
+    """
+    _getDerivative2TargetDirection_0__T = typing.TypeVar('_getDerivative2TargetDirection_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getDerivative2TargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedFieldPVCoordinates: org.orekit.utils.TimeStampedFieldPVCoordinates[_getDerivative2TargetDirection_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[org.hipparchus.analysis.differentiation.FieldUnivariateDerivative2[_getDerivative2TargetDirection_0__T]]: ...
+    @typing.overload
+    def getDerivative2TargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedPVCoordinates: org.orekit.utils.TimeStampedPVCoordinates, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[org.hipparchus.analysis.differentiation.UnivariateDerivative2]: ...
+    _getTargetDirection_0__T = typing.TypeVar('_getTargetDirection_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getTargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedFieldPVCoordinates: org.orekit.utils.TimeStampedFieldPVCoordinates[_getTargetDirection_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getTargetDirection_0__T]:
+        """
+            Get a target vector.
+        
+            Parameters:
+                sun (:class:`~org.orekit.utils.ExtendedPositionProvider`): Sun model
+                earth (:class:`~org.orekit.bodies.OneAxisEllipsoid`): Earth model
+                pv (:class:`~org.orekit.utils.TimeStampedFieldPVCoordinates`<T> pv): spacecraft position and velocity
+                frame (:class:`~org.orekit.frames.Frame`): inertial frame
+        
+            Returns:
+                target direction in the spacecraft state frame
+        
+        
+        """
+        ...
+    @typing.overload
+    def getTargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedPVCoordinates: org.orekit.utils.TimeStampedPVCoordinates, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Get a target vector.
+        
+            Parameters:
+                sun (:class:`~org.orekit.utils.ExtendedPositionProvider`): Sun model
+                earth (:class:`~org.orekit.bodies.OneAxisEllipsoid`): Earth model
+                pv (:class:`~org.orekit.utils.TimeStampedPVCoordinates`): spacecraft position and velocity
+                frame (:class:`~org.orekit.frames.Frame`): inertial frame
+        
+            Returns:
+                target direction in the spacecraft state frame
+        
+        """
+        ...
+
+class AlignedAndConstrained(AttitudeProvider):
+    """
+    public class AlignedAndConstrained extends :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.attitudes.AttitudeProvider`
+    
+        Attitude provider with one satellite vector aligned and another one constrained to two targets.
+    
+        Since:
+            12.2
+    """
+    def __init__(self, vector3D: org.hipparchus.geometry.euclidean.threed.Vector3D, targetProvider: typing.Union[TargetProvider, typing.Callable], vector3D2: org.hipparchus.geometry.euclidean.threed.Vector3D, targetProvider2: typing.Union[TargetProvider, typing.Callable], extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid): ...
+    _getAttitude_1__T = typing.TypeVar('_getAttitude_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getAttitude(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], absoluteDate: org.orekit.time.AbsoluteDate, frame: org.orekit.frames.Frame) -> Attitude:
+        """
+            Compute the attitude corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitude` in interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.PVCoordinatesProvider`): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.AbsoluteDate`): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                attitude on the specified date and position-velocity state
+        
+        """
+        ...
+    @typing.overload
+    def getAttitude(self, fieldPVCoordinatesProvider: typing.Union[org.orekit.utils.FieldPVCoordinatesProvider[_getAttitude_1__T], typing.Callable[[org.orekit.time.FieldAbsoluteDate[org.hipparchus.CalculusFieldElement], org.orekit.frames.Frame], org.orekit.utils.TimeStampedFieldPVCoordinates[org.hipparchus.CalculusFieldElement]]], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getAttitude_1__T], frame: org.orekit.frames.Frame) -> FieldAttitude[_getAttitude_1__T]:
+        """
+            Compute the attitude corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitude` in interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.FieldPVCoordinatesProvider`<T> pvProv): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                attitude on the specified date and position-velocity state
+        
+        
+        """
+        ...
+    _getAttitudeRotation_0__T = typing.TypeVar('_getAttitudeRotation_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getAttitudeRotation(self, fieldPVCoordinatesProvider: typing.Union[org.orekit.utils.FieldPVCoordinatesProvider[_getAttitudeRotation_0__T], typing.Callable[[org.orekit.time.FieldAbsoluteDate[org.hipparchus.CalculusFieldElement], org.orekit.frames.Frame], org.orekit.utils.TimeStampedFieldPVCoordinates[org.hipparchus.CalculusFieldElement]]], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getAttitudeRotation_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldRotation[_getAttitudeRotation_0__T]:
+        """
+            Compute the attitude-related rotation corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitudeRotation` in
+                interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.FieldPVCoordinatesProvider`<T> pvProv): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                rotation on the specified date and position-velocity state
+        
+        
+        """
+        ...
+    @typing.overload
+    def getAttitudeRotation(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], absoluteDate: org.orekit.time.AbsoluteDate, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Rotation:
+        """
+            Compute the attitude-related rotation corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitudeRotation` in
+                interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.PVCoordinatesProvider`): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.AbsoluteDate`): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                attitude-related rotation on the specified date and position-velocity state
+        
+        """
+        ...
+
 class AttitudeProviderModifier(AttitudeProvider):
     """
     public interface AttitudeProviderModifier extends :class:`~org.orekit.attitudes.AttitudeProvider`
@@ -797,6 +939,7 @@ class AttitudesSequence(AttitudeProvider):
         
         """
         ...
+    def getSwitches(self) -> java.util.List['AttitudesSequence.Switch']: ...
     _registerSwitchEvents_0__T = typing.TypeVar('_registerSwitchEvents_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @typing.overload
     def registerSwitchEvents(self, field: org.hipparchus.Field[_registerSwitchEvents_0__T], fieldPropagator: org.orekit.propagation.FieldPropagator[_registerSwitchEvents_0__T]) -> None:
@@ -839,6 +982,18 @@ class AttitudesSequence(AttitudeProvider):
         
         """
         ...
+    class Switch(org.orekit.propagation.events.EventDetector, org.orekit.propagation.events.handlers.EventHandler):
+        def eventOccurred(self, spacecraftState: org.orekit.propagation.SpacecraftState, eventDetector: org.orekit.propagation.events.EventDetector, boolean: bool) -> org.hipparchus.ode.events.Action: ...
+        def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float: ...
+        def getHandler(self) -> org.orekit.propagation.events.handlers.EventHandler: ...
+        def getMaxCheckInterval(self) -> org.orekit.propagation.events.AdaptableInterval: ...
+        def getMaxIterationCount(self) -> int: ...
+        def getThreshold(self) -> float: ...
+        @typing.overload
+        def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate, eventDetector: org.orekit.propagation.events.EventDetector) -> None: ...
+        @typing.overload
+        def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate) -> None: ...
+        def resetState(self, eventDetector: org.orekit.propagation.events.EventDetector, spacecraftState: org.orekit.propagation.SpacecraftState) -> org.orekit.propagation.SpacecraftState: ...
     class SwitchHandler:
         def switchOccurred(self, attitudeProvider: AttitudeProvider, attitudeProvider2: AttitudeProvider, spacecraftState: org.orekit.propagation.SpacecraftState) -> None: ...
 
@@ -1077,6 +1232,46 @@ class FixedRate(AttitudeProvider):
                 attitude on the specified date and position-velocity state
         
         
+        """
+        ...
+    _getAttitudeRotation_0__T = typing.TypeVar('_getAttitudeRotation_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getAttitudeRotation(self, fieldPVCoordinatesProvider: typing.Union[org.orekit.utils.FieldPVCoordinatesProvider[_getAttitudeRotation_0__T], typing.Callable[[org.orekit.time.FieldAbsoluteDate[org.hipparchus.CalculusFieldElement], org.orekit.frames.Frame], org.orekit.utils.TimeStampedFieldPVCoordinates[org.hipparchus.CalculusFieldElement]]], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getAttitudeRotation_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldRotation[_getAttitudeRotation_0__T]:
+        """
+            Compute the attitude-related rotation corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitudeRotation` in
+                interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.FieldPVCoordinatesProvider`<T> pvProv): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                rotation on the specified date and position-velocity state
+        
+        
+        """
+        ...
+    @typing.overload
+    def getAttitudeRotation(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], absoluteDate: org.orekit.time.AbsoluteDate, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Rotation:
+        """
+            Compute the attitude-related rotation corresponding to an orbital state.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.AttitudeProvider.getAttitudeRotation` in
+                interface :class:`~org.orekit.attitudes.AttitudeProvider`
+        
+            Parameters:
+                pvProv (:class:`~org.orekit.utils.PVCoordinatesProvider`): local position-velocity provider around current date
+                date (:class:`~org.orekit.time.AbsoluteDate`): current date
+                frame (:class:`~org.orekit.frames.Frame`): reference frame from which attitude is computed
+        
+            Returns:
+                attitude-related rotation on the specified date and position-velocity state
+        
         """
         ...
     def getReferenceAttitude(self) -> Attitude:
@@ -1205,6 +1400,64 @@ class FrameAlignedProvider(AttitudeProvider):
         """
         ...
 
+class GroundPointTarget(TargetProvider):
+    """
+    public class GroundPointTarget extends :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.attitudes.TargetProvider`
+    
+        Ground point target for :class:`~org.orekit.attitudes.AlignedAndConstrained`.
+    
+        Since:
+            12.2
+    """
+    def __init__(self, vector3D: org.hipparchus.geometry.euclidean.threed.Vector3D): ...
+    _getDerivative2TargetDirection_0__T = typing.TypeVar('_getDerivative2TargetDirection_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getDerivative2TargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedFieldPVCoordinates: org.orekit.utils.TimeStampedFieldPVCoordinates[_getDerivative2TargetDirection_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[org.hipparchus.analysis.differentiation.FieldUnivariateDerivative2[_getDerivative2TargetDirection_0__T]]: ...
+    @typing.overload
+    def getDerivative2TargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedPVCoordinates: org.orekit.utils.TimeStampedPVCoordinates, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[org.hipparchus.analysis.differentiation.UnivariateDerivative2]: ...
+    _getTargetDirection_0__T = typing.TypeVar('_getTargetDirection_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getTargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedFieldPVCoordinates: org.orekit.utils.TimeStampedFieldPVCoordinates[_getTargetDirection_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getTargetDirection_0__T]:
+        """
+            Get a target vector.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.TargetProvider.getTargetDirection` in
+                interface :class:`~org.orekit.attitudes.TargetProvider`
+        
+            Parameters:
+                sun (:class:`~org.orekit.utils.ExtendedPositionProvider`): Sun model
+                earth (:class:`~org.orekit.bodies.OneAxisEllipsoid`): Earth model
+                pv (:class:`~org.orekit.utils.TimeStampedFieldPVCoordinates`<T> pv): spacecraft position and velocity
+                frame (:class:`~org.orekit.frames.Frame`): inertial frame
+        
+            Returns:
+                target direction in the spacecraft state frame
+        
+        
+        """
+        ...
+    @typing.overload
+    def getTargetDirection(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, timeStampedPVCoordinates: org.orekit.utils.TimeStampedPVCoordinates, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Get a target vector.
+        
+            Specified by:
+                :meth:`~org.orekit.attitudes.TargetProvider.getTargetDirection` in
+                interface :class:`~org.orekit.attitudes.TargetProvider`
+        
+            Parameters:
+                sun (:class:`~org.orekit.utils.ExtendedPositionProvider`): Sun model
+                earth (:class:`~org.orekit.bodies.OneAxisEllipsoid`): Earth model
+                pv (:class:`~org.orekit.utils.TimeStampedPVCoordinates`): spacecraft position and velocity
+                frame (:class:`~org.orekit.frames.Frame`): inertial frame
+        
+            Returns:
+                target direction in the spacecraft state frame
+        
+        """
+        ...
+
 class GroundPointing(AttitudeProvider):
     """
     public abstract class GroundPointing extends :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.attitudes.AttitudeProvider`
@@ -1429,6 +1682,65 @@ class LofOffset(AttitudeProvider):
         """
         ...
 
+class PredefinedTarget(java.lang.Enum['PredefinedTarget'], TargetProvider):
+    """
+    public enum PredefinedTarget extends :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.Enum?is`<:class:`~org.orekit.attitudes.PredefinedTarget`> implements :class:`~org.orekit.attitudes.TargetProvider`
+    
+        Predefined targets for :class:`~org.orekit.attitudes.AlignedAndConstrained`.
+    
+        Since:
+            12.2
+    """
+    SUN: typing.ClassVar['PredefinedTarget'] = ...
+    EARTH: typing.ClassVar['PredefinedTarget'] = ...
+    NADIR: typing.ClassVar['PredefinedTarget'] = ...
+    NORTH: typing.ClassVar['PredefinedTarget'] = ...
+    EAST: typing.ClassVar['PredefinedTarget'] = ...
+    VELOCITY: typing.ClassVar['PredefinedTarget'] = ...
+    MOMENTUM: typing.ClassVar['PredefinedTarget'] = ...
+    _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) -> 'PredefinedTarget':
+        """
+            Returns the enum constant of this type with the specified name. The string must match *exactly* an identifier used to
+            declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
+        
+            Parameters:
+                name (:class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is`): the name of the enum constant to be returned.
+        
+            Returns:
+                the enum constant with the specified name
+        
+            Raises:
+                :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.IllegalArgumentException?is`: if this enum type has no constant with the specified name
+                :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.NullPointerException?is`: if the argument is null
+        
+        
+        """
+        ...
+    @staticmethod
+    def values() -> typing.MutableSequence['PredefinedTarget']:
+        """
+            Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to
+            iterate over the constants as follows:
+        
+            .. code-block: java
+            
+            for (PredefinedTarget c : PredefinedTarget.values())
+                System.out.println(c);
+            
+        
+            Returns:
+                an array containing the constants of this enum type, in the order they are declared
+        
+        
+        """
+        ...
+
 class TorqueFree(AttitudeProvider):
     """
     public class TorqueFree extends :class:`~org.orekit.attitudes.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.attitudes.AttitudeProvider`
@@ -2526,6 +2838,7 @@ class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("org.orekit.attitudes")``.
 
     AggregateBoundedAttitudeProvider: typing.Type[AggregateBoundedAttitudeProvider]
+    AlignedAndConstrained: typing.Type[AlignedAndConstrained]
     Attitude: typing.Type[Attitude]
     AttitudeBuilder: typing.Type[AttitudeBuilder]
     AttitudeInterpolator: typing.Type[AttitudeInterpolator]
@@ -2542,6 +2855,7 @@ class __module_protocol__(Protocol):
     FixedFrameBuilder: typing.Type[FixedFrameBuilder]
     FixedRate: typing.Type[FixedRate]
     FrameAlignedProvider: typing.Type[FrameAlignedProvider]
+    GroundPointTarget: typing.Type[GroundPointTarget]
     GroundPointing: typing.Type[GroundPointing]
     GroundPointingAttitudeModifier: typing.Type[GroundPointingAttitudeModifier]
     Inertia: typing.Type[Inertia]
@@ -2549,10 +2863,12 @@ class __module_protocol__(Protocol):
     LofOffset: typing.Type[LofOffset]
     LofOffsetPointing: typing.Type[LofOffsetPointing]
     NadirPointing: typing.Type[NadirPointing]
+    PredefinedTarget: typing.Type[PredefinedTarget]
     SpinStabilized: typing.Type[SpinStabilized]
     TabulatedLofOffset: typing.Type[TabulatedLofOffset]
     TabulatedProvider: typing.Type[TabulatedProvider]
     TargetPointing: typing.Type[TargetPointing]
+    TargetProvider: typing.Type[TargetProvider]
     TorqueFree: typing.Type[TorqueFree]
     YawCompensation: typing.Type[YawCompensation]
     YawSteering: typing.Type[YawSteering]
diff --git a/org-stubs/orekit/bodies/__init__.pyi b/org-stubs/orekit/bodies/__init__.pyi
index 1c3c8b7dc027fbcdd3564e237c02df38c22b55da..608016c65e0dba8bb19382b4e45bad8a91225bd3 100644
--- a/org-stubs/orekit/bodies/__init__.pyi
+++ b/org-stubs/orekit/bodies/__init__.pyi
@@ -19,6 +19,62 @@ import typing
 
 
 
+class AnalyticalSolarPositionProvider(org.orekit.utils.ExtendedPositionProvider):
+    """
+    public class AnalyticalSolarPositionProvider extends :class:`~org.orekit.bodies.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.utils.ExtendedPositionProvider`
+    
+        Class computing low-fidelity positions for the Sun. They should only be used in the decades around the year 2000.
+    
+    
+        Reference: Montenbruck, Oliver, and Gill, Eberhard. Satellite orbits : models, methods, and applications. Berlin New
+        York: Springer, 2000.
+    
+        Since:
+            12.2
+    """
+    @typing.overload
+    def __init__(self): ...
+    @typing.overload
+    def __init__(self, dataContext: org.orekit.data.DataContext): ...
+    _getPosition_0__T = typing.TypeVar('_getPosition_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getPosition(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getPosition_0__T], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getPosition_0__T]:
+        """
+            Get the position in the selected frame.
+        
+            Specified by:
+                :meth:`~org.orekit.utils.ExtendedPositionProvider.getPosition` in
+                interface :class:`~org.orekit.utils.ExtendedPositionProvider`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): current date
+                frame (:class:`~org.orekit.frames.Frame`): the frame where to define the position
+        
+            Returns:
+                position
+        
+        
+        """
+        ...
+    @typing.overload
+    def getPosition(self, absoluteDate: org.orekit.time.AbsoluteDate, frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Get the position of the body in the selected frame.
+        
+            Specified by:
+                :meth:`~org.orekit.utils.PVCoordinatesProvider.getPosition` in
+                interface :class:`~org.orekit.utils.PVCoordinatesProvider`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): current date
+                frame (:class:`~org.orekit.frames.Frame`): the frame where to define the position
+        
+            Returns:
+                position of the body (m and)
+        
+        """
+        ...
+
 class BodyShape(java.io.Serializable):
     """
     public interface BodyShape extends :class:`~org.orekit.bodies.https:.docs.oracle.com.javase.8.docs.api.java.io.Serializable?is`
@@ -1221,6 +1277,19 @@ class FieldGeodeticPoint(typing.Generic[_FieldGeodeticPoint__T]):
                 class :class:`~org.orekit.bodies.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
         
         
+        """
+        ...
+    def toGeodeticPoint(self) -> 'GeodeticPoint':
+        """
+            Get non-Field equivalent.
+        
+            Returns:
+                geodetic point
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def toString(self) -> str:
@@ -2613,6 +2682,7 @@ class OneAxisEllipsoid(Ellipsoid, BodyShape):
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("org.orekit.bodies")``.
 
+    AnalyticalSolarPositionProvider: typing.Type[AnalyticalSolarPositionProvider]
     BodyShape: typing.Type[BodyShape]
     CR3BPFactory: typing.Type[CR3BPFactory]
     CR3BPSystem: typing.Type[CR3BPSystem]
diff --git a/org-stubs/orekit/control/__init__.pyi b/org-stubs/orekit/control/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..5fbe48ef62e9733feb0b26e5807fd2bb11f98fa9
--- /dev/null
+++ b/org-stubs/orekit/control/__init__.pyi
@@ -0,0 +1,15 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import org.orekit.control.indirect
+import typing
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control")``.
+
+    indirect: org.orekit.control.indirect.__module_protocol__
diff --git a/org-stubs/orekit/control/indirect/__init__.pyi b/org-stubs/orekit/control/indirect/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..427a6c3cef307ea091dd744f20dfec583bb73e0a
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/__init__.pyi
@@ -0,0 +1,17 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import org.orekit.control.indirect.adjoint
+import org.orekit.control.indirect.shooting
+import typing
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect")``.
+
+    adjoint: org.orekit.control.indirect.adjoint.__module_protocol__
+    shooting: org.orekit.control.indirect.shooting.__module_protocol__
diff --git a/org-stubs/orekit/control/indirect/adjoint/__init__.pyi b/org-stubs/orekit/control/indirect/adjoint/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..e8c7185aca23f159576d30003fe48fee2d793815
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/adjoint/__init__.pyi
@@ -0,0 +1,883 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import jpype
+import org.hipparchus
+import org.hipparchus.geometry.euclidean.threed
+import org.orekit.control.indirect.adjoint.cost
+import org.orekit.frames
+import org.orekit.propagation
+import org.orekit.propagation.integration
+import org.orekit.time
+import org.orekit.utils
+import typing
+
+
+
+class AbstractCartesianAdjointDerivativesProvider:
+    """
+    public class AbstractCartesianAdjointDerivativesProvider extends :class:`~org.orekit.control.indirect.adjoint.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Abstract class defining common things for Cartesian adjoint dynamics between standard and Field versions.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.integration.AdditionalDerivativesProvider`,
+            :class:`~org.orekit.propagation.numerical.NumericalPropagator`
+    """
+    def __init__(self, cartesianCost: org.orekit.control.indirect.adjoint.cost.CartesianCost): ...
+    def getCost(self) -> org.orekit.control.indirect.adjoint.cost.CartesianCost:
+        """
+            Getter for the cost.
+        
+            Returns:
+                cost
+        
+        
+        """
+        ...
+    def getDimension(self) -> int:
+        """
+            Getter for the dimension.
+        
+            Returns:
+                dimension
+        
+        
+        """
+        ...
+    def getName(self) -> str:
+        """
+            Getter for the name.
+        
+            Returns:
+                name
+        
+        
+        """
+        ...
+
+class CartesianAdjointEquationTerm:
+    """
+    public interface CartesianAdjointEquationTerm
+    
+        Interface to define terms in the adjoint equations and Hamiltonian for Cartesian coordinates.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider`,
+            :class:`~org.orekit.control.indirect.adjoint.FieldCartesianAdjointDerivativesProvider`
+    """
+    _getFieldHamiltonianContribution__T = typing.TypeVar('_getFieldHamiltonianContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldHamiltonianContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldHamiltonianContribution__T], tArray: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> _getFieldHamiltonianContribution__T:
+        """
+            Computes the contribution to the Hamiltonian.
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the Hamiltonian
+        
+        
+        """
+        ...
+    _getFieldRatesContribution__T = typing.TypeVar('_getFieldRatesContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldRatesContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldRatesContribution__T], tArray: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getFieldRatesContribution__T]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+    def getHamiltonianContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> float:
+        """
+            Computes the contribution to the Hamiltonian.
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the Hamiltonian
+        
+        
+        """
+        ...
+    def getRatesContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+
+class AbstractCartesianAdjointEquationTerm(CartesianAdjointEquationTerm):
+    """
+    public abstract class AbstractCartesianAdjointEquationTerm extends :class:`~org.orekit.control.indirect.adjoint.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+    
+        Abstract class to define terms in the adjoint equations and Hamiltonian for Cartesian coordinates.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider`,
+            :class:`~org.orekit.control.indirect.adjoint.FieldCartesianAdjointDerivativesProvider`
+    """
+    def __init__(self): ...
+    _getFieldHamiltonianContribution__T = typing.TypeVar('_getFieldHamiltonianContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldHamiltonianContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldHamiltonianContribution__T], tArray: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> _getFieldHamiltonianContribution__T:
+        """
+            Computes the contribution to the Hamiltonian.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getFieldHamiltonianContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the Hamiltonian
+        
+        
+        """
+        ...
+    _getFieldRatesContribution__T = typing.TypeVar('_getFieldRatesContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldRatesContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldRatesContribution__T], tArray: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getFieldRatesContribution__T]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getFieldRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+    def getHamiltonianContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> float:
+        """
+            Computes the contribution to the Hamiltonian.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getHamiltonianContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the Hamiltonian
+        
+        
+        """
+        ...
+    def getRatesContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+
+class CartesianAdjointDerivativesProvider(AbstractCartesianAdjointDerivativesProvider, org.orekit.propagation.integration.AdditionalDerivativesProvider):
+    """
+    public class CartesianAdjointDerivativesProvider extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointDerivativesProvider` implements :class:`~org.orekit.propagation.integration.AdditionalDerivativesProvider`
+    
+        Class defining the adjoint dynamics, as defined in the Pontryagin Maximum Principle, in the case where Cartesian
+        coordinates in an inertial frame are the dependent variable. The time derivatives of the adjoint variables are obtained
+        by differentiating the so-called Hamiltonian. They depend on the force model and the cost being minimized. For the
+        former, it is the user's responsibility to make sure the provided
+        :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm` are consistent with the
+        :class:`~org.orekit.forces.ForceModel`. For the latter, the cost function is represented through the interface
+        :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.integration.AdditionalDerivativesProvider`,
+            :class:`~org.orekit.propagation.numerical.NumericalPropagator`
+    """
+    def __init__(self, cartesianCost: org.orekit.control.indirect.adjoint.cost.CartesianCost, *cartesianAdjointEquationTerm: CartesianAdjointEquationTerm): ...
+    def combinedDerivatives(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> org.orekit.propagation.integration.CombinedDerivatives:
+        """
+            Compute the derivatives related to the additional state (and optionally main state increments).
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.integration.AdditionalDerivativesProvider.combinedDerivatives` in
+                interface :class:`~org.orekit.propagation.integration.AdditionalDerivativesProvider`
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): current state information: date, kinematics, attitude, and additional states this equations depend on (according to the
+                    :meth:`~org.orekit.propagation.integration.AdditionalDerivativesProvider.yields` method)
+        
+            Returns:
+                computed combined derivatives, which may include some incremental coupling effect to add to main state derivatives
+        
+        
+        """
+        ...
+    def evaluateHamiltonian(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
+        """
+            Evaluate the Hamiltonian from Pontryagin's Maximum Principle.
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): state assumed to hold the adjoint variables
+        
+            Returns:
+                Hamiltonian
+        
+        
+        """
+        ...
+    def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate) -> None:
+        """
+            Initialize the generator at the start of propagation.
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.integration.AdditionalDerivativesProvider.init` in
+                interface :class:`~org.orekit.propagation.integration.AdditionalDerivativesProvider`
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.SpacecraftState`): initial state information at the start of propagation
+                target (:class:`~org.orekit.time.AbsoluteDate`): date of propagation
+        
+        
+        """
+        ...
+
+_FieldCartesianAdjointDerivativesProvider__T = typing.TypeVar('_FieldCartesianAdjointDerivativesProvider__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldCartesianAdjointDerivativesProvider(AbstractCartesianAdjointDerivativesProvider, org.orekit.propagation.integration.FieldAdditionalDerivativesProvider[_FieldCartesianAdjointDerivativesProvider__T], typing.Generic[_FieldCartesianAdjointDerivativesProvider__T]):
+    """
+    public class FieldCartesianAdjointDerivativesProvider<T extends :class:`~org.orekit.control.indirect.adjoint.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointDerivativesProvider` implements :class:`~org.orekit.propagation.integration.FieldAdditionalDerivativesProvider`<T>
+    
+        Class defining the Field version of the adjoint dynamics for Cartesian coordinates, as defined in the Pontryagin Maximum
+        Principle.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.integration.FieldAdditionalDerivativesProvider`,
+            :class:`~org.orekit.propagation.numerical.FieldNumericalPropagator`,
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider`
+    """
+    def __init__(self, cartesianCost: org.orekit.control.indirect.adjoint.cost.CartesianCost, *cartesianAdjointEquationTerm: CartesianAdjointEquationTerm): ...
+    def combinedDerivatives(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldCartesianAdjointDerivativesProvider__T]) -> org.orekit.propagation.integration.FieldCombinedDerivatives[_FieldCartesianAdjointDerivativesProvider__T]: ...
+    def evaluateHamiltonian(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldCartesianAdjointDerivativesProvider__T]) -> _FieldCartesianAdjointDerivativesProvider__T: ...
+    def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldCartesianAdjointDerivativesProvider__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldCartesianAdjointDerivativesProvider__T]) -> None: ...
+
+class AbstractCartesianAdjointGravitationalTerm(AbstractCartesianAdjointEquationTerm):
+    """
+    public abstract class AbstractCartesianAdjointGravitationalTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+    
+        Abstract class for common computations regarding adjoint dynamics and gravity for Cartesian coordinates.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+    """
+    _getFieldRatesContribution__T = typing.TypeVar('_getFieldRatesContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldRatesContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldRatesContribution__T], tArray: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getFieldRatesContribution__T]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getFieldRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Overrides:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getFieldRatesContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+    def getMu(self) -> float:
+        """
+            Getter for the gravitational constant.
+        
+            Returns:
+                mu
+        
+        
+        """
+        ...
+    def getRatesContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Overrides:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getRatesContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+
+class CartesianAdjointInertialTerm(AbstractCartesianAdjointEquationTerm):
+    """
+    public class CartesianAdjointInertialTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+    
+        Class defining inertial forces' contributions in the adjoint equations for Cartesian coordinates. If present, then the
+        propagator should also include inertial forces.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`,
+            :class:`~org.orekit.forces.inertia.InertialForces`
+    """
+    def __init__(self, frame: org.orekit.frames.Frame): ...
+    def getAcceleration(self, transform: org.orekit.frames.Transform, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+            Evaluates the inertial acceleration vector.
+        
+            Parameters:
+                inertialToPropagationFrame (:class:`~org.orekit.frames.Transform`): transform from inertial to propagation frame
+                stateVariables (double[]): state variables
+        
+            Returns:
+                acceleration
+        
+        
+        """
+        ...
+    _getFieldRatesContribution__T = typing.TypeVar('_getFieldRatesContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldRatesContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldRatesContribution__T], tArray: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getFieldRatesContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getFieldRatesContribution__T]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getFieldRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Overrides:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getFieldRatesContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+    def getRatesContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to the rates of the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm.getRatesContribution` in
+                interface :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+        
+            Overrides:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getRatesContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to the adjoint derivative vector
+        
+        
+        """
+        ...
+    def getReferenceInertialFrame(self) -> org.orekit.frames.Frame:
+        """
+            Getter for reference frame.
+        
+            Returns:
+                frame
+        
+        
+        """
+        ...
+
+class AbstractCartesianAdjointNewtonianTerm(AbstractCartesianAdjointGravitationalTerm):
+    """
+    public abstract class AbstractCartesianAdjointNewtonianTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+    
+        Abstract class for common computations regarding adjoint dynamics and Newtonian gravity for Cartesian coordinates.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+    """
+    ...
+
+class CartesianAdjointJ2Term(AbstractCartesianAdjointGravitationalTerm):
+    """
+    public class CartesianAdjointJ2Term extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+    
+        Class defining a (constant) J2 contributions in the adjoint equations for Cartesian coordinates. If present, then the
+        propagator should also include a constant J2 term (oblateness) of the central body.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`,
+            :class:`~org.orekit.forces.gravity.J2OnlyPerturbation`
+    """
+    def __init__(self, double: float, double2: float, double3: float, frame: org.orekit.frames.Frame): ...
+    def getAcceleration(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+    _getFieldAcceleration__T = typing.TypeVar('_getFieldAcceleration__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldAcceleration(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldAcceleration__T], tArray: typing.Union[typing.List[_getFieldAcceleration__T], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getFieldAcceleration__T]:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getFieldAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+    def getJ2(self) -> float:
+        """
+            Getter for J2.
+        
+            Returns:
+                J2 coefficient
+        
+        
+        """
+        ...
+    def getPositionAdjointContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+    _getPositionAdjointFieldContribution__T = typing.TypeVar('_getPositionAdjointFieldContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getPositionAdjointFieldContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getPositionAdjointFieldContribution__T], tArray: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getPositionAdjointFieldContribution__T]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointFieldContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+    def getrEq(self) -> float:
+        """
+            Getter for central body equatorial radius.
+        
+            Returns:
+                equatorial radius
+        
+        
+        """
+        ...
+
+class AbstractCartesianAdjointNonCentralBodyTerm(AbstractCartesianAdjointNewtonianTerm):
+    """
+    public abstract class AbstractCartesianAdjointNonCentralBodyTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointNewtonianTerm`
+    
+        Abstract class defining the contributions of a point-mass, single body gravity in the adjoint equations for Cartesian
+        coordinates.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`
+    """
+    def getPositionAdjointContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+    _getPositionAdjointFieldContribution__T = typing.TypeVar('_getPositionAdjointFieldContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getPositionAdjointFieldContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getPositionAdjointFieldContribution__T], tArray: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getPositionAdjointFieldContribution__T]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointFieldContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+
+class CartesianAdjointKeplerianTerm(AbstractCartesianAdjointNewtonianTerm):
+    """
+    public class CartesianAdjointKeplerianTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointNewtonianTerm`
+    
+        Class defining the Keplerian contributions in the adjoint equations for Cartesian coordinates. If present, then the
+        propagator should also include the Newtonian attraction of a central body.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`,
+            :class:`~org.orekit.forces.gravity.NewtonianAttraction`
+    """
+    def __init__(self, double: float): ...
+    def getPositionAdjointContribution(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], doubleArray2: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[float]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                adjointVariables (double[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+    _getPositionAdjointFieldContribution__T = typing.TypeVar('_getPositionAdjointFieldContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getPositionAdjointFieldContribution(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getPositionAdjointFieldContribution__T], tArray: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], tArray2: typing.Union[typing.List[_getPositionAdjointFieldContribution__T], jpype.JArray], frame: org.orekit.frames.Frame) -> typing.MutableSequence[_getPositionAdjointFieldContribution__T]:
+        """
+            Computes the contribution to position adjoint derivatives.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm.getPositionAdjointFieldContribution` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointGravitationalTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                adjointVariables (T[]): adjoint variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                contribution to position adjoint derivatives
+        
+        
+        """
+        ...
+
+class CartesianAdjointSingleBodyTerm(AbstractCartesianAdjointNonCentralBodyTerm):
+    """
+    public class CartesianAdjointSingleBodyTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointNonCentralBodyTerm`
+    
+        Class defining the contributions of a point-mass, single body gravity in the adjoint equations for Cartesian
+        coordinates. If present, then the propagator should also include the Newtonian attraction of a body. This is similar to
+        :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointKeplerianTerm` but with the body not necessarily a central
+        one.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`,
+            :class:`~org.orekit.forces.gravity.SingleBodyAbsoluteAttraction`
+    """
+    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable]): ...
+    def getAcceleration(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+    _getFieldAcceleration__T = typing.TypeVar('_getFieldAcceleration__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldAcceleration(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldAcceleration__T], tArray: typing.Union[typing.List[_getFieldAcceleration__T], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getFieldAcceleration__T]:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getFieldAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+
+class CartesianAdjointThirdBodyTerm(AbstractCartesianAdjointNonCentralBodyTerm):
+    """
+    public class CartesianAdjointThirdBodyTerm extends :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointNonCentralBodyTerm`
+    
+        Class defining the contributions of a point-mass, third body in the adjoint equations for Cartesian coordinates. If
+        present, then the propagator should also include a :class:`~org.orekit.forces.gravity.ThirdBodyAttraction`.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm`,
+            :class:`~org.orekit.forces.gravity.ThirdBodyAttraction`
+    """
+    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable]): ...
+    def getAcceleration(self, absoluteDate: org.orekit.time.AbsoluteDate, doubleArray: typing.Union[typing.List[float], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.AbsoluteDate`): date
+                stateVariables (double[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+    _getFieldAcceleration__T = typing.TypeVar('_getFieldAcceleration__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldAcceleration(self, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_getFieldAcceleration__T], tArray: typing.Union[typing.List[_getFieldAcceleration__T], jpype.JArray], frame: org.orekit.frames.Frame) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getFieldAcceleration__T]:
+        """
+            Compute the acceleration vector.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm.getFieldAcceleration` in
+                class :class:`~org.orekit.control.indirect.adjoint.AbstractCartesianAdjointEquationTerm`
+        
+            Parameters:
+                date (:class:`~org.orekit.time.FieldAbsoluteDate`<T> date): date
+                stateVariables (T[]): state variables
+                frame (:class:`~org.orekit.frames.Frame`): propagation frame
+        
+            Returns:
+                acceleration vector
+        
+        
+        """
+        ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect.adjoint")``.
+
+    AbstractCartesianAdjointDerivativesProvider: typing.Type[AbstractCartesianAdjointDerivativesProvider]
+    AbstractCartesianAdjointEquationTerm: typing.Type[AbstractCartesianAdjointEquationTerm]
+    AbstractCartesianAdjointGravitationalTerm: typing.Type[AbstractCartesianAdjointGravitationalTerm]
+    AbstractCartesianAdjointNewtonianTerm: typing.Type[AbstractCartesianAdjointNewtonianTerm]
+    AbstractCartesianAdjointNonCentralBodyTerm: typing.Type[AbstractCartesianAdjointNonCentralBodyTerm]
+    CartesianAdjointDerivativesProvider: typing.Type[CartesianAdjointDerivativesProvider]
+    CartesianAdjointEquationTerm: typing.Type[CartesianAdjointEquationTerm]
+    CartesianAdjointInertialTerm: typing.Type[CartesianAdjointInertialTerm]
+    CartesianAdjointJ2Term: typing.Type[CartesianAdjointJ2Term]
+    CartesianAdjointKeplerianTerm: typing.Type[CartesianAdjointKeplerianTerm]
+    CartesianAdjointSingleBodyTerm: typing.Type[CartesianAdjointSingleBodyTerm]
+    CartesianAdjointThirdBodyTerm: typing.Type[CartesianAdjointThirdBodyTerm]
+    FieldCartesianAdjointDerivativesProvider: typing.Type[FieldCartesianAdjointDerivativesProvider]
+    cost: org.orekit.control.indirect.adjoint.cost.__module_protocol__
diff --git a/org-stubs/orekit/control/indirect/adjoint/cost/__init__.pyi b/org-stubs/orekit/control/indirect/adjoint/cost/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..5bc553e1375dbb2b410d751c2a92fad57d2dfb49
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/adjoint/cost/__init__.pyi
@@ -0,0 +1,402 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import java.util
+import java.util.stream
+import jpype
+import org
+import org.hipparchus
+import org.hipparchus.geometry.euclidean.threed
+import org.orekit.propagation.events
+import org.orekit.utils
+import typing
+
+
+
+class CartesianCost(org.orekit.propagation.events.EventDetectorsProvider):
+    """
+    public interface CartesianCost extends :class:`~org.orekit.propagation.events.EventDetectorsProvider`
+    
+        Interface to definite cost function in the frame of Pontryagin's Maximum Principle using Cartesian coordinates. It
+        provides the link between the optimal control and the adjoint variables. This relationship is obtained by maximizing the
+        Hamiltonian. The choice of control vector impacts on it. Both standard (double type) and (Calculus)Field versions are to
+        be implemented by inheritors.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider`
+    """
+    def getAdjointDimension(self) -> int:
+        """
+            Getter for adjoint vector dimension. Default is 7 (six for Cartesian coordinates and one for mass).
+        
+            Returns:
+                adjoint dimension
+        
+        
+        """
+        ...
+    def getAdjointName(self) -> str:
+        """
+            Getter for adjoint vector name.
+        
+            Returns:
+                adjoint vector name
+        
+        
+        """
+        ...
+    _getFieldHamiltonianContribution__T = typing.TypeVar('_getFieldHamiltonianContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldHamiltonianContribution(self, tArray: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], t2: _getFieldHamiltonianContribution__T) -> _getFieldHamiltonianContribution__T:
+        """
+            Computes the Hamiltonian contribution of the cost function.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+        
+            Returns:
+                contribution to Hamiltonian
+        
+        
+        """
+        ...
+    _getFieldThrustAccelerationVector__T = typing.TypeVar('_getFieldThrustAccelerationVector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldThrustAccelerationVector(self, tArray: typing.Union[typing.List[_getFieldThrustAccelerationVector__T], jpype.JArray], t2: _getFieldThrustAccelerationVector__T) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getFieldThrustAccelerationVector__T]:
+        """
+            Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+        
+            Returns:
+                thrust vector
+        
+        
+        """
+        ...
+    def getHamiltonianContribution(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float) -> float:
+        """
+            Computes the Hamiltonian contribution of the cost function.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+        
+            Returns:
+                contribution to Hamiltonian
+        
+        
+        """
+        ...
+    def getMassFlowRateFactor(self) -> float:
+        """
+            Getter for mass flow rate factor. It is negated and multiplied by the thrust force magnitude to obtain the mass time
+            derivative. The fact that it is a constant means that the exhaust speed is assumed to be independent of time.
+        
+            Returns:
+                mass flow rate factor
+        
+        
+        """
+        ...
+    def getThrustAccelerationVector(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+        
+            Returns:
+                thrust vector
+        
+        
+        """
+        ...
+    def updateAdjointDerivatives(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float, doubleArray2: typing.Union[typing.List[float], jpype.JArray]) -> None:
+        """
+            Update the adjoint derivatives if necessary.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+                adjointDerivatives (double[]): derivatives to update
+        
+        
+        """
+        ...
+    _updateFieldAdjointDerivatives__T = typing.TypeVar('_updateFieldAdjointDerivatives__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def updateFieldAdjointDerivatives(self, tArray: typing.Union[typing.List[_updateFieldAdjointDerivatives__T], jpype.JArray], t2: _updateFieldAdjointDerivatives__T, tArray2: typing.Union[typing.List[_updateFieldAdjointDerivatives__T], jpype.JArray]) -> None:
+        """
+            Update the adjoint derivatives if necessary.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+                adjointDerivatives (T[]): derivatives to update
+        
+        
+        """
+        ...
+
+class AbstractCartesianEnergy(CartesianCost):
+    """
+    public abstract class AbstractCartesianEnergy extends :class:`~org.orekit.control.indirect.adjoint.cost.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`
+    
+        Abstract class for energy cost with Cartesian coordinates. An energy cost is proportional to the integral over time of
+        the Euclidean norm of the control vector, often scaled with 1/2. This type of cost is not optimal in terms of mass
+        consumption, however its solutions showcase a smoother behavior favorable for convergence in shooting techniques.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`
+    """
+    def getAdjointName(self) -> str:
+        """
+            Getter for adjoint vector name.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.cost.CartesianCost.getAdjointName` in
+                interface :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`
+        
+            Returns:
+                name
+        
+        
+        """
+        ...
+    def getMassFlowRateFactor(self) -> float:
+        """
+            Getter for mass flow rate factor. It is negated and multiplied by the thrust force magnitude to obtain the mass time
+            derivative. The fact that it is a constant means that the exhaust speed is assumed to be independent of time.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.cost.CartesianCost.getMassFlowRateFactor` in
+                interface :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`
+        
+            Returns:
+                mass flow rate factor
+        
+        
+        """
+        ...
+
+class UnboundedCartesianEnergyNeglectingMass(AbstractCartesianEnergy):
+    """
+    public class UnboundedCartesianEnergyNeglectingMass extends :class:`~org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy`
+    
+        Class for unbounded energy cost with Cartesian coordinates neglecting the mass consumption. Under this assumption, the
+        mass is constant and there is no need to consider the corresponding adjoint variable. Here, the control vector is chosen
+        as the acceleration given by thrusting, expressed in the propagation frame. This leads to the optimal thrust force being
+        equal to the adjoint velocity vector times the mass.
+    
+        Since:
+            12.2
+    """
+    def __init__(self, string: str): ...
+    def getAdjointDimension(self) -> int:
+        """
+            Getter for adjoint vector dimension. Default is 7 (six for Cartesian coordinates and one for mass).
+        
+            Returns:
+                adjoint dimension
+        
+        
+        """
+        ...
+    @typing.overload
+    def getEventDetectors(self, list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    @typing.overload
+    def getEventDetectors(self) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEventDetectors_0__T = typing.TypeVar('_getFieldEventDetectors_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    _getFieldEventDetectors_1__T = typing.TypeVar('_getFieldEventDetectors_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_0__T], list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_0__T]]: ...
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_1__T]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_1__T]]: ...
+    _getFieldHamiltonianContribution__T = typing.TypeVar('_getFieldHamiltonianContribution__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldHamiltonianContribution(self, tArray: typing.Union[typing.List[_getFieldHamiltonianContribution__T], jpype.JArray], t2: _getFieldHamiltonianContribution__T) -> _getFieldHamiltonianContribution__T:
+        """
+            Computes the Hamiltonian contribution of the cost function.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+        
+            Returns:
+                contribution to Hamiltonian
+        
+        
+        """
+        ...
+    _getFieldThrustAccelerationVector__T = typing.TypeVar('_getFieldThrustAccelerationVector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldThrustAccelerationVector(self, tArray: typing.Union[typing.List[_getFieldThrustAccelerationVector__T], jpype.JArray], t2: _getFieldThrustAccelerationVector__T) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_getFieldThrustAccelerationVector__T]:
+        """
+            Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+        
+            Returns:
+                thrust vector
+        
+        
+        """
+        ...
+    def getHamiltonianContribution(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float) -> float:
+        """
+            Computes the Hamiltonian contribution of the cost function.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+        
+            Returns:
+                contribution to Hamiltonian
+        
+        
+        """
+        ...
+    def getMassFlowRateFactor(self) -> float:
+        """
+            Getter for mass flow rate factor. It is negated and multiplied by the thrust force magnitude to obtain the mass time
+            derivative. The fact that it is a constant means that the exhaust speed is assumed to be independent of time.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.adjoint.cost.CartesianCost.getMassFlowRateFactor` in
+                interface :class:`~org.orekit.control.indirect.adjoint.cost.CartesianCost`
+        
+            Overrides:
+                :meth:`~org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy.getMassFlowRateFactor` in
+                class :class:`~org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy`
+        
+            Returns:
+                mass flow rate factor
+        
+        
+        """
+        ...
+    def getThrustAccelerationVector(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+        
+            Returns:
+                thrust vector
+        
+        
+        """
+        ...
+    def updateAdjointDerivatives(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], double2: float, doubleArray2: typing.Union[typing.List[float], jpype.JArray]) -> None:
+        """
+            Description copied from
+            interface: :meth:`~org.orekit.control.indirect.adjoint.cost.CartesianCost.updateAdjointDerivatives`
+            Update the adjoint derivatives if necessary.
+        
+            Parameters:
+                adjointVariables (double[]): adjoint vector
+                mass (double): mass
+                adjointDerivatives (double[]): derivatives to update
+        
+        
+        """
+        ...
+    _updateFieldAdjointDerivatives__T = typing.TypeVar('_updateFieldAdjointDerivatives__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def updateFieldAdjointDerivatives(self, tArray: typing.Union[typing.List[_updateFieldAdjointDerivatives__T], jpype.JArray], t2: _updateFieldAdjointDerivatives__T, tArray2: typing.Union[typing.List[_updateFieldAdjointDerivatives__T], jpype.JArray]) -> None:
+        """
+            Description copied from
+            interface: :meth:`~org.orekit.control.indirect.adjoint.cost.CartesianCost.updateFieldAdjointDerivatives`
+            Update the adjoint derivatives if necessary.
+        
+            Parameters:
+                adjointVariables (T[]): adjoint vector
+                mass (T): mass
+                adjointDerivatives (T[]): derivatives to update
+        
+        
+        """
+        ...
+
+class BoundedCartesianEnergy(org.orekit.control.indirect.adjoint.cost.CartesianEnergyConsideringMass):
+    """
+    public class BoundedCartesianEnergy extends :class:`~org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy`
+    
+        Class for bounded energy cost with Cartesian coordinates. Here, the control vector is chosen as the thrust force divided
+        by the maximum thrust magnitude and expressed in the propagation frame. It has a unit Euclidean norm.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.cost.UnboundedCartesianEnergyNeglectingMass`
+    """
+    @typing.overload
+    def __init__(self, string: str, double: float, double2: float): ...
+    @typing.overload
+    def __init__(self, string: str, double: float, double2: float, eventDetectionSettings: org.orekit.propagation.events.EventDetectionSettings): ...
+    @typing.overload
+    def getEventDetectors(self, list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    @typing.overload
+    def getEventDetectors(self) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEventDetectors_0__T = typing.TypeVar('_getFieldEventDetectors_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    _getFieldEventDetectors_1__T = typing.TypeVar('_getFieldEventDetectors_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_0__T], list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_0__T]]: ...
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_1__T]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_1__T]]: ...
+
+class UnboundedCartesianEnergy(org.orekit.control.indirect.adjoint.cost.CartesianEnergyConsideringMass):
+    """
+    public class UnboundedCartesianEnergy extends :class:`~org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy`
+    
+        Class for unbounded energy cost with Cartesian coordinates. Here, the control vector is chosen as the thrust force,
+        expressed in the propagation frame. This leads to the optimal thrust being in the same direction as the adjoint
+        velocity.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.cost.UnboundedCartesianEnergyNeglectingMass`
+    """
+    @typing.overload
+    def __init__(self, string: str, double: float): ...
+    @typing.overload
+    def __init__(self, string: str, double: float, eventDetectionSettings: org.orekit.propagation.events.EventDetectionSettings): ...
+    @typing.overload
+    def getEventDetectors(self, list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    @typing.overload
+    def getEventDetectors(self) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEventDetectors_0__T = typing.TypeVar('_getFieldEventDetectors_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    _getFieldEventDetectors_1__T = typing.TypeVar('_getFieldEventDetectors_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_0__T], list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_0__T]]: ...
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_1__T]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_1__T]]: ...
+
+class CartesianEnergyConsideringMass: ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect.adjoint.cost")``.
+
+    AbstractCartesianEnergy: typing.Type[AbstractCartesianEnergy]
+    BoundedCartesianEnergy: typing.Type[BoundedCartesianEnergy]
+    CartesianCost: typing.Type[CartesianCost]
+    CartesianEnergyConsideringMass: typing.Type[CartesianEnergyConsideringMass]
+    UnboundedCartesianEnergy: typing.Type[UnboundedCartesianEnergy]
+    UnboundedCartesianEnergyNeglectingMass: typing.Type[UnboundedCartesianEnergyNeglectingMass]
diff --git a/org-stubs/orekit/control/indirect/shooting/__init__.pyi b/org-stubs/orekit/control/indirect/shooting/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..bb0f02c58ad556ebc5e7438c25b20a1dad080752
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/shooting/__init__.pyi
@@ -0,0 +1,234 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import jpype
+import org.orekit.control.indirect.shooting.boundary
+import org.orekit.control.indirect.shooting.propagation
+import org.orekit.propagation
+import typing
+
+
+
+class AbstractIndirectShooting:
+    """
+    public abstract class AbstractIndirectShooting extends :class:`~org.orekit.control.indirect.shooting.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Abstract class for indirect shooting methods with numerical propagation.
+    
+        Since:
+            12.2
+    """
+    DEFAULT_TOLERANCE_MASS_ADJOINT: typing.ClassVar[float] = ...
+    """
+    public static final double DEFAULT_TOLERANCE_MASS_ADJOINT
+    
+        Default value for convergence tolerance on mass adjoint variable.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    def getPropagationSettings(self) -> org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings:
+        """
+            Getter for the propagation settings.
+        
+            Returns:
+                propagation settings
+        
+        
+        """
+        ...
+    def solve(self, double: float, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> 'ShootingBoundaryOutput':
+        """
+            Solve for the boundary conditions, given an initial mass and an initial guess for the adjoint variables.
+        
+            Parameters:
+                initialMass (double): initial mass
+                initialGuess (double[]): initial guess
+        
+            Returns:
+                boundary problem solution
+        
+        
+        """
+        ...
+
+class ShootingBoundaryOutput:
+    """
+    public class ShootingBoundaryOutput extends :class:`~org.orekit.control.indirect.shooting.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Data container for two-point boundary output of indirect shooting methods.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.AbstractIndirectShooting`
+    """
+    def __init__(self, boolean: bool, int: int, spacecraftState: org.orekit.propagation.SpacecraftState, shootingPropagationSettings: org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings, spacecraftState2: org.orekit.propagation.SpacecraftState): ...
+    def getInitialState(self) -> org.orekit.propagation.SpacecraftState:
+        """
+            Getter for the initial state.
+        
+            Returns:
+                initial state
+        
+        
+        """
+        ...
+    def getIterationCount(self) -> int:
+        """
+            Getter for the iteration number.
+        
+            Returns:
+                count
+        
+        
+        """
+        ...
+    def getShootingPropagationSettings(self) -> org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings:
+        """
+            Getter for the shooting propagation settings.
+        
+            Returns:
+                propagation settings
+        
+        
+        """
+        ...
+    def getTerminalState(self) -> org.orekit.propagation.SpacecraftState:
+        """
+            Getter for the terminal state.
+        
+            Returns:
+                terminal state
+        
+        
+        """
+        ...
+    def isConverged(self) -> bool:
+        """
+            Getter for convergence flag.
+        
+            Returns:
+                convergence flag
+        
+        
+        """
+        ...
+
+class AbstractFixedBoundaryCartesianSingleShooting(AbstractIndirectShooting):
+    """
+    public abstract class AbstractFixedBoundaryCartesianSingleShooting extends :class:`~org.orekit.control.indirect.shooting.AbstractIndirectShooting`
+    
+        Abstract class for indirect single shooting methods with Cartesian coordinates for fixed time fixed boundary. Inheritors
+        must implement the iteration update, assuming derivatives are needed. Terminal mass is assumed to be free, thus
+        corresponding adjoint must vanish at terminal time. On the other hand, other terminal adjoint variables are free because
+        the Cartesian state is fixed.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider`,
+            :class:`~org.orekit.control.indirect.adjoint.FieldCartesianAdjointDerivativesProvider`
+    """
+    def getScalePositionDefects(self) -> float:
+        """
+            Getter for scale of position defects.
+        
+            Returns:
+                scale
+        
+        
+        """
+        ...
+    def getScaleVelocityDefects(self) -> float:
+        """
+            Getter for scale of velocity defects.
+        
+            Returns:
+                scale
+        
+        
+        """
+        ...
+    def setScalePositionDefects(self, double: float) -> None:
+        """
+            Setter for scale of position defects.
+        
+            Parameters:
+                scalePositionDefects (double): new scale
+        
+        
+        """
+        ...
+    def setScaleVelocityDefects(self, double: float) -> None:
+        """
+            Setter for scale of velocity defects.
+        
+            Parameters:
+                scaleVelocityDefects (double): new scale
+        
+        
+        """
+        ...
+    def setToleranceMassAdjoint(self, double: float) -> None:
+        """
+            Setter for mass adjoint tolerance.
+        
+            Parameters:
+                toleranceMassAdjoint (double): new tolerance value
+        
+        
+        """
+        ...
+    def solve(self, double: float, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> ShootingBoundaryOutput:
+        """
+            Solve for the boundary conditions, given an initial mass and an initial guess for the adjoint variables.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.AbstractIndirectShooting.solve` in
+                class :class:`~org.orekit.control.indirect.shooting.AbstractIndirectShooting`
+        
+            Parameters:
+                initialMass (double): initial mass
+                initialGuess (double[]): initial guess
+        
+            Returns:
+                boundary problem solution
+        
+        
+        """
+        ...
+
+class NewtonFixedBoundaryCartesianSingleShooting(AbstractFixedBoundaryCartesianSingleShooting):
+    """
+    public class NewtonFixedBoundaryCartesianSingleShooting extends :class:`~org.orekit.control.indirect.shooting.AbstractFixedBoundaryCartesianSingleShooting`
+    
+        Class for indirect single shooting methods with Cartesian coordinates for fixed time fixed boundary. Update is the
+        classical Newton-Raphson one.
+    
+        Since:
+            12.2
+    """
+    @typing.overload
+    def __init__(self, shootingPropagationSettings: org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings, fixedTimeBoundaryOrbits: org.orekit.control.indirect.shooting.boundary.FixedTimeBoundaryOrbits, cartesianBoundaryConditionChecker: org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker): ...
+    @typing.overload
+    def __init__(self, shootingPropagationSettings: org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings, fixedTimeCartesianBoundaryStates: org.orekit.control.indirect.shooting.boundary.FixedTimeCartesianBoundaryStates, cartesianBoundaryConditionChecker: org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker): ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect.shooting")``.
+
+    AbstractFixedBoundaryCartesianSingleShooting: typing.Type[AbstractFixedBoundaryCartesianSingleShooting]
+    AbstractIndirectShooting: typing.Type[AbstractIndirectShooting]
+    NewtonFixedBoundaryCartesianSingleShooting: typing.Type[NewtonFixedBoundaryCartesianSingleShooting]
+    ShootingBoundaryOutput: typing.Type[ShootingBoundaryOutput]
+    boundary: org.orekit.control.indirect.shooting.boundary.__module_protocol__
+    propagation: org.orekit.control.indirect.shooting.propagation.__module_protocol__
diff --git a/org-stubs/orekit/control/indirect/shooting/boundary/__init__.pyi b/org-stubs/orekit/control/indirect/shooting/boundary/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..84c84a98806680e2393fb7911cee980fa0033d29
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/shooting/boundary/__init__.pyi
@@ -0,0 +1,185 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import org.orekit.orbits
+import org.orekit.utils
+import typing
+
+
+
+class CartesianBoundaryConditionChecker:
+    """
+    public interface CartesianBoundaryConditionChecker
+    
+        Interface defining convergence criterion when the terminal condition is on a Cartesian state.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.AbstractFixedBoundaryCartesianSingleShooting`
+    """
+    def getMaximumIterationCount(self) -> int:
+        """
+            Returns the maximum number of iterations.
+        
+            Returns:
+                maximum iterations
+        
+        
+        """
+        ...
+    def isConverged(self, pVCoordinates: org.orekit.utils.PVCoordinates, pVCoordinates2: org.orekit.utils.PVCoordinates) -> bool:
+        """
+            Asserts convergence.
+        
+            Parameters:
+                targetPV (:class:`~org.orekit.utils.PVCoordinates`): target position-velocity
+                actualPV (:class:`~org.orekit.utils.PVCoordinates`): actual position-velocity
+        
+            Returns:
+                convergence flag
+        
+        
+        """
+        ...
+
+class FixedTimeBoundaryOrbits:
+    """
+    public class FixedTimeBoundaryOrbits extends :class:`~org.orekit.control.indirect.shooting.boundary.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Defines two-point boundary values for indirect shooting methods with Cartesian coordinates. This class represents the
+        case where the initial and terminal times are fixed as well as the full Cartesian coordinates (position and velocity
+        vectors in some frame), using :class:`~org.orekit.orbits.Orbit` as data holder.
+    
+    
+        The terminal condition can be anterior in time to the initial one, it just means that the shooting method will perform
+        backward propagation. Also note that any acceleration vector passed in the :class:`~org.orekit.orbits.Orbit` is ignored.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.boundary.FixedTimeCartesianBoundaryStates`
+    """
+    def __init__(self, orbit: org.orekit.orbits.Orbit, orbit2: org.orekit.orbits.Orbit): ...
+    def getInitialOrbit(self) -> org.orekit.orbits.Orbit:
+        """
+            Getter for the initial condition.
+        
+            Returns:
+                initial condition
+        
+        
+        """
+        ...
+    def getTerminalOrbit(self) -> org.orekit.orbits.Orbit:
+        """
+            Getter for the terminal condition.
+        
+            Returns:
+                terminal condition
+        
+        
+        """
+        ...
+
+class FixedTimeCartesianBoundaryStates:
+    """
+    public class FixedTimeCartesianBoundaryStates extends :class:`~org.orekit.control.indirect.shooting.boundary.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Defines two-point boundary values for indirect shooting methods with Cartesian coordinates. This class represents the
+        case where the initial and terminal times are fixed as well as the full Cartesian coordinates (position and velocity
+        vectors in some frame), using :class:`~org.orekit.utils.AbsolutePVCoordinates` as data holder.
+    
+    
+        The terminal condition can be anterior in time to the initial one, it just means that the shooting method will perform
+        backward propagation. Also note that any acceleration vector passed in the
+        :class:`~org.orekit.utils.AbsolutePVCoordinates` is ignored.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.boundary.FixedTimeBoundaryOrbits`
+    """
+    def __init__(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates, absolutePVCoordinates2: org.orekit.utils.AbsolutePVCoordinates): ...
+    def getInitialCartesianState(self) -> org.orekit.utils.AbsolutePVCoordinates:
+        """
+            Getter for the initial Cartesian condition.
+        
+            Returns:
+                initial condition
+        
+        
+        """
+        ...
+    def getTerminalCartesianState(self) -> org.orekit.utils.AbsolutePVCoordinates:
+        """
+            Getter for the terminal Cartesian condition.
+        
+            Returns:
+                terminal condition
+        
+        
+        """
+        ...
+
+class NormBasedCartesianConditionChecker(CartesianBoundaryConditionChecker):
+    """
+    public class NormBasedCartesianConditionChecker extends :class:`~org.orekit.control.indirect.shooting.boundary.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker`
+    
+        Class defining convergence criterion on the norm of relative position and velocity vectors, with absolute tolerances.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.AbstractFixedBoundaryCartesianSingleShooting`
+    """
+    def __init__(self, int: int, double: float, double2: float): ...
+    def getMaximumIterationCount(self) -> int:
+        """
+            Returns the maximum number of iterations.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker.getMaximumIterationCount` in
+                interface :class:`~org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker`
+        
+            Returns:
+                maximum iterations
+        
+        
+        """
+        ...
+    def isConverged(self, pVCoordinates: org.orekit.utils.PVCoordinates, pVCoordinates2: org.orekit.utils.PVCoordinates) -> bool:
+        """
+            Asserts convergence.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker.isConverged` in
+                interface :class:`~org.orekit.control.indirect.shooting.boundary.CartesianBoundaryConditionChecker`
+        
+            Parameters:
+                targetPV (:class:`~org.orekit.utils.PVCoordinates`): target position-velocity
+                actualPV (:class:`~org.orekit.utils.PVCoordinates`): actual position-velocity
+        
+            Returns:
+                convergence flag
+        
+        
+        """
+        ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect.shooting.boundary")``.
+
+    CartesianBoundaryConditionChecker: typing.Type[CartesianBoundaryConditionChecker]
+    FixedTimeBoundaryOrbits: typing.Type[FixedTimeBoundaryOrbits]
+    FixedTimeCartesianBoundaryStates: typing.Type[FixedTimeCartesianBoundaryStates]
+    NormBasedCartesianConditionChecker: typing.Type[NormBasedCartesianConditionChecker]
diff --git a/org-stubs/orekit/control/indirect/shooting/propagation/__init__.pyi b/org-stubs/orekit/control/indirect/shooting/propagation/__init__.pyi
new file mode 100644
index 0000000000000000000000000000000000000000..66303c2030083f65f96c05371da7f7c1d66ce4c9
--- /dev/null
+++ b/org-stubs/orekit/control/indirect/shooting/propagation/__init__.pyi
@@ -0,0 +1,327 @@
+
+import sys
+if sys.version_info >= (3, 8):
+    from typing import Protocol
+else:
+    from typing_extensions import Protocol
+
+import java.util
+import org.hipparchus
+import org.orekit.attitudes
+import org.orekit.control.indirect.adjoint
+import org.orekit.control.indirect.adjoint.cost
+import org.orekit.forces
+import org.orekit.frames
+import org.orekit.propagation.conversion
+import org.orekit.propagation.integration
+import typing
+
+
+
+class AdjointDynamicsProvider:
+    """
+    public interface AdjointDynamicsProvider
+    
+        Interface for adjoint derivatives provider (both standard and Field).
+    
+        Since:
+            12.2
+    """
+    def buildAdditionalDerivativesProvider(self) -> org.orekit.propagation.integration.AdditionalDerivativesProvider:
+        """
+            Builds adjoint derivatives provider.
+        
+            Returns:
+                derivatives provider
+        
+        
+        """
+        ...
+    _buildFieldAdditionalDerivativesProvider__T = typing.TypeVar('_buildFieldAdditionalDerivativesProvider__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def buildFieldAdditionalDerivativesProvider(self, field: org.hipparchus.Field[_buildFieldAdditionalDerivativesProvider__T]) -> org.orekit.propagation.integration.FieldAdditionalDerivativesProvider[_buildFieldAdditionalDerivativesProvider__T]:
+        """
+            Builds Field adjoint derivatives provider.
+        
+            Parameters:
+                field (:class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): input field
+        
+            Returns:
+                derivatives provider
+        
+        
+        """
+        ...
+    def getAdjointName(self) -> str:
+        """
+            Getter for adjoint vector name.
+        
+            Returns:
+                name
+        
+        
+        """
+        ...
+
+class ShootingIntegrationSettings:
+    """
+    public interface ShootingIntegrationSettings
+    
+        Defines integration settings for indirect shooting methods. Gives standard and Field integrator builders.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.control.indirect.shooting.propagation.ShootingPropagationSettings`,
+            :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`,
+            :class:`~org.orekit.propagation.conversion.FieldODEIntegratorBuilder`
+    """
+    _getFieldIntegratorBuilder__T = typing.TypeVar('_getFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldIntegratorBuilder(self, field: org.hipparchus.Field[_getFieldIntegratorBuilder__T]) -> org.orekit.propagation.conversion.FieldODEIntegratorBuilder[_getFieldIntegratorBuilder__T]:
+        """
+            Returns a Field ODE integrator builder.
+        
+            Parameters:
+                field (:class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): field for builder
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+    def getIntegratorBuilder(self) -> org.orekit.propagation.conversion.ODEIntegratorBuilder:
+        """
+            Returns an ODE integrator builder.
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+
+class ShootingPropagationSettings:
+    """
+    public class ShootingPropagationSettings extends :class:`~org.orekit.control.indirect.shooting.propagation.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Defines propagation settings for indirect shooting methods. The provided list of :class:`~org.orekit.forces.ForceModel`
+        should have their counterpart in the provided adjoint equations encapsulated in
+        :class:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider`. Note that in case of orbit-based
+        propagation (with a central body), the Newtonian term still needs to be passed explicitly (with its adjoint equivalent).
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.numerical.NumericalPropagator`,
+            :class:`~org.orekit.propagation.numerical.FieldNumericalPropagator`
+    """
+    @typing.overload
+    def __init__(self, list: java.util.List[org.orekit.forces.ForceModel], adjointDynamicsProvider: AdjointDynamicsProvider, shootingIntegrationSettings: ShootingIntegrationSettings): ...
+    @typing.overload
+    def __init__(self, list: java.util.List[org.orekit.forces.ForceModel], adjointDynamicsProvider: AdjointDynamicsProvider, frame: org.orekit.frames.Frame, shootingIntegrationSettings: ShootingIntegrationSettings, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
+    def getAdjointDynamicsProvider(self) -> AdjointDynamicsProvider:
+        """
+            Getter for adjoint dynamics provider.
+        
+            Returns:
+                adjoint dynamics
+        
+        
+        """
+        ...
+    def getAttitudeProvider(self) -> org.orekit.attitudes.AttitudeProvider:
+        """
+            Getter for the attitude provider.
+        
+            Returns:
+                attitude provider.
+        
+        
+        """
+        ...
+    def getForceModels(self) -> java.util.List[org.orekit.forces.ForceModel]: ...
+    def getIntegrationSettings(self) -> ShootingIntegrationSettings:
+        """
+            Getter for the integration settings.
+        
+            Returns:
+                integration settings
+        
+        
+        """
+        ...
+    def getPropagationFrame(self) -> org.orekit.frames.Frame:
+        """
+            Getter for the propagation frame.
+        
+            Returns:
+                propagation frame
+        
+        
+        """
+        ...
+
+class CartesianAdjointDynamicsProvider(AdjointDynamicsProvider):
+    """
+    public class CartesianAdjointDynamicsProvider extends :class:`~org.orekit.control.indirect.shooting.propagation.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider`
+    
+        Class for Cartesian adjoint derivatives provider (both standard and Field).
+    
+        Since:
+            12.2
+    """
+    def __init__(self, cartesianCost: org.orekit.control.indirect.adjoint.cost.CartesianCost, *cartesianAdjointEquationTerm: org.orekit.control.indirect.adjoint.CartesianAdjointEquationTerm): ...
+    def buildAdditionalDerivativesProvider(self) -> org.orekit.control.indirect.adjoint.CartesianAdjointDerivativesProvider:
+        """
+            Builds adjoint derivatives provider.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider.buildAdditionalDerivativesProvider` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider`
+        
+            Returns:
+                derivatives provider
+        
+        
+        """
+        ...
+    _buildFieldAdditionalDerivativesProvider__T = typing.TypeVar('_buildFieldAdditionalDerivativesProvider__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def buildFieldAdditionalDerivativesProvider(self, field: org.hipparchus.Field[_buildFieldAdditionalDerivativesProvider__T]) -> org.orekit.control.indirect.adjoint.FieldCartesianAdjointDerivativesProvider[_buildFieldAdditionalDerivativesProvider__T]:
+        """
+            Builds Field adjoint derivatives provider.
+        
+            Specified by:
+                
+                meth:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider.buildFieldAdditionalDerivativesProvider` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider`
+        
+            Parameters:
+                field (:class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): input field
+        
+            Returns:
+                derivatives provider
+        
+        
+        """
+        ...
+    def getAdjointName(self) -> str:
+        """
+            Getter for adjoint vector name.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider.getAdjointName` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.AdjointDynamicsProvider`
+        
+            Returns:
+                name
+        
+        
+        """
+        ...
+
+class ClassicalRungeKuttaIntegrationSettings(ShootingIntegrationSettings):
+    """
+    public class ClassicalRungeKuttaIntegrationSettings extends :class:`~org.orekit.control.indirect.shooting.propagation.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+    
+        Integration settings using the classical Runge-Kutta 4 scheme.
+    
+        Since:
+            12.2
+    
+        Also see:
+            
+            class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.ode.nonstiff.ClassicalRungeKuttaIntegrator?is`
+    """
+    def __init__(self, double: float): ...
+    _getFieldIntegratorBuilder__T = typing.TypeVar('_getFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldIntegratorBuilder(self, field: org.hipparchus.Field[_getFieldIntegratorBuilder__T]) -> org.orekit.propagation.conversion.ClassicalRungeKuttaFieldIntegratorBuilder[_getFieldIntegratorBuilder__T]:
+        """
+            Returns a Field ODE integrator builder.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings.getFieldIntegratorBuilder` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+        
+            Parameters:
+                field (:class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): field for builder
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+    def getIntegratorBuilder(self) -> org.orekit.propagation.conversion.ClassicalRungeKuttaIntegratorBuilder:
+        """
+            Returns an ODE integrator builder.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings.getIntegratorBuilder` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+
+class DormandPrince54IntegrationSettings(ShootingIntegrationSettings):
+    """
+    public class DormandPrince54IntegrationSettings extends :class:`~org.orekit.control.indirect.shooting.propagation.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+    
+        Integration settings using the Dormand-Prince 5(4) scheme.
+    
+        Since:
+            12.2
+    
+        Also see:
+            
+            class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.ode.nonstiff.ClassicalRungeKuttaIntegrator?is`
+    """
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    _getFieldIntegratorBuilder__T = typing.TypeVar('_getFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldIntegratorBuilder(self, field: org.hipparchus.Field[_getFieldIntegratorBuilder__T]) -> org.orekit.propagation.conversion.DormandPrince54FieldIntegratorBuilder[_getFieldIntegratorBuilder__T]:
+        """
+            Returns a Field ODE integrator builder.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings.getFieldIntegratorBuilder` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+        
+            Parameters:
+                field (:class:`~org.orekit.control.indirect.shooting.propagation.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): field for builder
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+    def getIntegratorBuilder(self) -> org.orekit.propagation.conversion.DormandPrince54IntegratorBuilder:
+        """
+            Returns an ODE integrator builder.
+        
+            Specified by:
+                :meth:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings.getIntegratorBuilder` in
+                interface :class:`~org.orekit.control.indirect.shooting.propagation.ShootingIntegrationSettings`
+        
+            Returns:
+                builder
+        
+        
+        """
+        ...
+
+
+class __module_protocol__(Protocol):
+    # A module protocol which reflects the result of ``jp.JPackage("org.orekit.control.indirect.shooting.propagation")``.
+
+    AdjointDynamicsProvider: typing.Type[AdjointDynamicsProvider]
+    CartesianAdjointDynamicsProvider: typing.Type[CartesianAdjointDynamicsProvider]
+    ClassicalRungeKuttaIntegrationSettings: typing.Type[ClassicalRungeKuttaIntegrationSettings]
+    DormandPrince54IntegrationSettings: typing.Type[DormandPrince54IntegrationSettings]
+    ShootingIntegrationSettings: typing.Type[ShootingIntegrationSettings]
+    ShootingPropagationSettings: typing.Type[ShootingPropagationSettings]
diff --git a/org-stubs/orekit/errors/__init__.pyi b/org-stubs/orekit/errors/__init__.pyi
index 2d2db437fe21865856d046ee5bb9e0e014af74f6..eae64d64d9f701f7af044defb23f87f48429db4c 100644
--- a/org-stubs/orekit/errors/__init__.pyi
+++ b/org-stubs/orekit/errors/__init__.pyi
@@ -154,6 +154,7 @@ class OrekitMessages(java.lang.Enum['OrekitMessages'], org.hipparchus.exception.
     FRAMES_MISMATCH: typing.ClassVar['OrekitMessages'] = ...
     INITIAL_STATE_NOT_SPECIFIED_FOR_ORBIT_PROPAGATION: typing.ClassVar['OrekitMessages'] = ...
     EVENT_DATE_TOO_CLOSE: typing.ClassVar['OrekitMessages'] = ...
+    WRONG_COORDINATES_FOR_ADJOINT_EQUATION: typing.ClassVar['OrekitMessages'] = ...
     UNABLE_TO_READ_JPL_HEADER: typing.ClassVar['OrekitMessages'] = ...
     INCONSISTENT_ASTRONOMICAL_UNIT_IN_FILES: typing.ClassVar['OrekitMessages'] = ...
     INCONSISTENT_EARTH_MOON_RATIO_IN_FILES: typing.ClassVar['OrekitMessages'] = ...
@@ -370,6 +371,7 @@ class OrekitMessages(java.lang.Enum['OrekitMessages'], org.hipparchus.exception.
     WALKER_INCONSISTENT_PLANES: typing.ClassVar['OrekitMessages'] = ...
     INFINITE_NRLMSISE00_DENSITY: typing.ClassVar['OrekitMessages'] = ...
     FIELD_TOO_LONG: typing.ClassVar['OrekitMessages'] = ...
+    PROPAGATOR_BUILDER_NOT_CLONEABLE: typing.ClassVar['OrekitMessages'] = ...
     def getLocalizedString(self, locale: java.util.Locale) -> str:
         """
         
diff --git a/org-stubs/orekit/estimation/measurements/modifiers/__init__.pyi b/org-stubs/orekit/estimation/measurements/modifiers/__init__.pyi
index 1354beb52d1feea031bb255626c4fd00b1da87d5..b48921ce6d48bb896f503ae6a01eb615d55d69fe 100644
--- a/org-stubs/orekit/estimation/measurements/modifiers/__init__.pyi
+++ b/org-stubs/orekit/estimation/measurements/modifiers/__init__.pyi
@@ -196,11 +196,11 @@ class AngularRadioRefractionModifier(org.orekit.estimation.measurements.Estimati
     """
     public class AngularRadioRefractionModifier extends :class:`~org.orekit.estimation.measurements.modifiers.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.estimation.measurements.EstimationModifier`<:class:`~org.orekit.estimation.measurements.AngularAzEl`>
     
-        Class modifying theoretical angular measurement with ionospheric radio refractive index. A radio ray passing through the
-        lower (non-ionized) layer of the atmosphere undergoes bending caused by the gradient of the relative index. Since the
-        refractive index varies mainly with altitude, only the vertical gradient of the refractive index is considered here. The
-        effect of ionospheric correction on the angular measurement is computed directly through the computation of the apparent
-        elevation angle. Recommendation ITU-R P.453-11 (07/2015) and Recommendation ITU-R P.834-7 (10/2015)
+        Class modifying theoretical angular measurement with tropospheric radio refractive index. A radio ray passing through
+        the lower (non-ionized) layer of the atmosphere undergoes bending caused by the gradient of the relative index. Since
+        the refractive index varies mainly with altitude, only the vertical gradient of the refractive index is considered here.
+        The effect of tropospheric correction on the angular measurement is computed directly through the computation of the
+        apparent elevation angle. Recommendation ITU-R P.453-11 (07/2015) and Recommendation ITU-R P.834-7 (10/2015)
     
         Since:
             8.0
diff --git a/org-stubs/orekit/files/sp3/__init__.pyi b/org-stubs/orekit/files/sp3/__init__.pyi
index f264724e4a4708598b552ff6c6807f0c26de8e93..1cd8ca9a2b1754cad7332f02b9884d2e51676412 100644
--- a/org-stubs/orekit/files/sp3/__init__.pyi
+++ b/org-stubs/orekit/files/sp3/__init__.pyi
@@ -390,6 +390,10 @@ class SP3CoordinateHermiteInterpolator(org.orekit.time.AbstractTimeInterpolator[
         (about 10-20 points) in order to avoid `Runge's phenomenon <http://en.wikipedia.org/wiki/Runge%27s_phenomenon>` and
         numerical problems (including NaN appearing).
     
+        If some clock or clock rate are present in the SP3 files as default values (999999.999999), then they are replaced by
+        :code:`Double.NaN` during parsing, so the interpolation will exhibit NaNs, but the positions will be properly
+        interpolated.
+    
         Since:
             12.0
     
@@ -1166,6 +1170,9 @@ class SP3Segment(org.orekit.files.general.EphemerisFile.EphemerisSegment[SP3Coor
         """
             Extract the clock model.
         
+            If some clock or clock rate are present in the SP3 files as default values (999999.999999), then they filtered out here
+            when building the clock model, so interpolation will work if at least there are some remaining regular values.
+        
             Returns:
                 extracted clock model
         
diff --git a/org-stubs/orekit/forces/gravity/__init__.pyi b/org-stubs/orekit/forces/gravity/__init__.pyi
index d8679f87b5c3a86d546192e4cd1f0a8736a66412..76fa102bc8ed43be66997b1220f7c7a2855ea6b9 100644
--- a/org-stubs/orekit/forces/gravity/__init__.pyi
+++ b/org-stubs/orekit/forces/gravity/__init__.pyi
@@ -27,7 +27,7 @@ class AbstractBodyAttraction(org.orekit.forces.ForceModel):
     """
     public abstract class AbstractBodyAttraction extends :class:`~org.orekit.forces.gravity.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.forces.ForceModel`
     
-        Abstract class for body attraction force model.
+        Abstract class for non-central body attraction force model.
     """
     ATTRACTION_COEFFICIENT_SUFFIX: typing.ClassVar[str] = ...
     """
@@ -396,6 +396,42 @@ class J2OnlyPerturbation(org.orekit.forces.ForceModel):
             Returns:
                 acceleration in same frame as state
         
+        """
+        ...
+    _computeAccelerationInJ2Frame_0__T = typing.TypeVar('_computeAccelerationInJ2Frame_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    @staticmethod
+    def computeAccelerationInJ2Frame(fieldVector3D: org.hipparchus.geometry.euclidean.threed.FieldVector3D[_computeAccelerationInJ2Frame_0__T], double: float, double2: float, t: _computeAccelerationInJ2Frame_0__T) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_computeAccelerationInJ2Frame_0__T]:
+        """
+            Compute acceleration in J2 frame. Field version.
+        
+            Parameters:
+                positionInJ2Frame (:class:`~org.orekit.forces.gravity.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.FieldVector3D?is`<T> positionInJ2Frame): position in J2 frame@
+                mu (double): gravitational parameter
+                rEq (double): equatorial radius
+                j2 (T): J2 coefficient
+        
+            Returns:
+                acceleration in J2 frame
+        
+        
+        """
+        ...
+    @typing.overload
+    @staticmethod
+    def computeAccelerationInJ2Frame(vector3D: org.hipparchus.geometry.euclidean.threed.Vector3D, double: float, double2: float, double3: float) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
+        """
+            Compute acceleration in J2 frame.
+        
+            Parameters:
+                positionInJ2Frame (:class:`~org.orekit.forces.gravity.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): position in J2 frame@
+                mu (double): gravitational parameter
+                rEq (double): equatorial radius
+                j2 (double): J2 coefficient
+        
+            Returns:
+                acceleration in J2 frame
+        
         """
         ...
     def dependsOnPositionOnly(self) -> bool:
diff --git a/org-stubs/orekit/forces/gravity/potential/__init__.pyi b/org-stubs/orekit/forces/gravity/potential/__init__.pyi
index d32d0ab56835785eb886d046b8ad00a760a8b710..03f1ac5ab0c7534fad189fc1e33bfec9f7e148df 100644
--- a/org-stubs/orekit/forces/gravity/potential/__init__.pyi
+++ b/org-stubs/orekit/forces/gravity/potential/__init__.pyi
@@ -105,6 +105,17 @@ class GravityFieldFactory:
             :meth:`~constant`
     
     
+    """
+    SHA_FILENAME: typing.ClassVar[str] = ...
+    """
+    public static final :class:`~org.orekit.forces.gravity.potential.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is` SHA_FILENAME
+    
+        Default regular expression for SHA files.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
     """
     FES_CNM_SNM_FILENAME: typing.ClassVar[str] = ...
     """
@@ -1065,11 +1076,12 @@ class LazyLoadedGravityFields(GravityFields):
         """
             Add the default readers for gravity fields.
         
-            The default readers support ICGEM, SHM, EGM and GRGS formats with the default names
+            The default readers support ICGEM, SHM, EGM, GRGS and SHA formats with the default names
             :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.ICGEM_FILENAME`,
             :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.SHM_FILENAME`,
             :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.EGM_FILENAME`,
-            :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.GRGS_FILENAME` and don't allow missing coefficients.
+            :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.GRGS_FILENAME`,
+            :meth:`~org.orekit.forces.gravity.potential.GravityFieldFactory.SHA_FILENAME` and don't allow missing coefficients.
         
             Also see:
                 :meth:`~org.orekit.forces.gravity.potential.LazyLoadedGravityFields.addPotentialCoefficientsReader`,
@@ -1298,6 +1310,50 @@ class LazyLoadedGravityFields(GravityFields):
         """
         ...
 
+class SHAFormatReader(PotentialCoefficientsReader):
+    """
+    public class SHAFormatReader extends :class:`~org.orekit.forces.gravity.potential.PotentialCoefficientsReader`
+    
+        Reader for the SHA gravity field format.
+    
+        This format is used by some lunar gravity models distributed by NASA's Planetary Geology, Geophysics and Geochemistry
+        Laboratory such as GRGM1200B and GRGM1200L. It is a simple ASCII format, described in
+        :class:`~org.orekit.forces.gravity.potential.https:.pgda.gsfc.nasa.gov.products.75`. The first line contains 4
+        constants: model GM, mean radius, maximum degree and maximum order. All other lines contain 6 entries: degree, order,
+        Clm, Slm, sigma Clm and sigma Slm (formal errors of Clm and Slm).
+    
+        The proper way to use this class is to call the :class:`~org.orekit.forces.gravity.potential.GravityFieldFactory` which
+        will determine which reader to use with the selected gravity field file.
+    
+        Also see:
+            :class:`~org.orekit.forces.gravity.potential.GravityFields`
+    """
+    def __init__(self, string: str, boolean: bool): ...
+    def getProvider(self, boolean: bool, int: int, int2: int) -> 'RawSphericalHarmonicsProvider':
+        """
+            Provider for read spherical harmonics coefficients. Like EGM fields, SHA fields don't include time-dependent parts, so
+            this method returns directly a constant provider.
+        
+            Specified by:
+                :meth:`~org.orekit.forces.gravity.potential.PotentialCoefficientsReader.getProvider` in
+                class :class:`~org.orekit.forces.gravity.potential.PotentialCoefficientsReader`
+        
+            Parameters:
+                wantNormalized (boolean): if true, the provider will provide normalized coefficients, otherwise it will provide un-normalized coefficients
+                degree (int): maximal degree
+                order (int): maximal order
+        
+            Returns:
+                a new provider
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    def loadData(self, inputStream: java.io.InputStream, string: str) -> None: ...
+
 class SHMFormatReader(PotentialCoefficientsReader):
     """
     public class SHMFormatReader extends :class:`~org.orekit.forces.gravity.potential.PotentialCoefficientsReader`
@@ -1700,6 +1756,7 @@ class __module_protocol__(Protocol):
     OceanTidesWave: typing.Type[OceanTidesWave]
     PotentialCoefficientsReader: typing.Type[PotentialCoefficientsReader]
     RawSphericalHarmonicsProvider: typing.Type[RawSphericalHarmonicsProvider]
+    SHAFormatReader: typing.Type[SHAFormatReader]
     SHMFormatReader: typing.Type[SHMFormatReader]
     SphericalHarmonicsProvider: typing.Type[SphericalHarmonicsProvider]
     TideSystem: typing.Type[TideSystem]
diff --git a/org-stubs/orekit/forces/maneuvers/__init__.pyi b/org-stubs/orekit/forces/maneuvers/__init__.pyi
index 31c9c85ff6f8417fbfd467cb66584ebbe540db5a..f1328f55852e2bfac346a5191f4b873793e628ed 100644
--- a/org-stubs/orekit/forces/maneuvers/__init__.pyi
+++ b/org-stubs/orekit/forces/maneuvers/__init__.pyi
@@ -259,14 +259,6 @@ class ImpulseManeuver(org.orekit.propagation.events.AbstractDetector['ImpulseMan
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
diff --git a/org-stubs/orekit/forces/radiation/__init__.pyi b/org-stubs/orekit/forces/radiation/__init__.pyi
index b20b129b9a710b4b33206e382debbe2b66702043..764998a550a29c37bc5a406e911ce9e02261fa51 100644
--- a/org-stubs/orekit/forces/radiation/__init__.pyi
+++ b/org-stubs/orekit/forces/radiation/__init__.pyi
@@ -267,6 +267,36 @@ class LightFluxModel:
         
         """
         ...
+    _init_0__T = typing.TypeVar('_init_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_init_0__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_init_0__T]) -> None:
+        """
+            Perform initialization steps before starting propagation.
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.FieldSpacecraftState`<T> initialState): initial state
+                targetDate (:class:`~org.orekit.time.FieldAbsoluteDate`<T> targetDate): target date for propagation
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @typing.overload
+    def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate) -> None:
+        """
+            Perform initialization steps before starting propagation.
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.SpacecraftState`): initial state
+                targetDate (:class:`~org.orekit.time.AbsoluteDate`): target date for propagation
+        
+            Since:
+                12.2
+        
+        """
+        ...
 
 class RadiationForceModel(org.orekit.forces.ForceModel):
     """
@@ -424,6 +454,54 @@ class AbstractLightFluxModel(LightFluxModel):
             Returns:
                 light flux
         
+        """
+        ...
+    _getLightingRatio_1__T = typing.TypeVar('_getLightingRatio_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getLightingRatio(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
+        """
+            Get the lighting ratio ([0-1]).
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): state
+        
+            Returns:
+                lighting ratio
+        
+            Get the lighting ratio ([0-1]).
+        
+            Parameters:
+                position (:class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): object's position
+                occultedBodyPosition (:class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): occulted body position in same frame
+        
+            Returns:
+                lighting ratio
+        
+        """
+        ...
+    @typing.overload
+    def getLightingRatio(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_getLightingRatio_1__T]) -> _getLightingRatio_1__T:
+        """
+            Get the lighting ratio ([0-1]).
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.FieldSpacecraftState`<T> state): state
+        
+            Returns:
+                lighting ratio
+        
+        protected abstract <T extends :class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> T getLightingRatio (:class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.FieldVector3D?is`<T> position, :class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.FieldVector3D?is`<T> occultedBodyPosition)
+        
+            Get the lighting ratio ([0-1]). Field version.
+        
+            Parameters:
+                position (:class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.FieldVector3D?is`<T> position): object's position
+                occultedBodyPosition (:class:`~org.orekit.forces.radiation.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.FieldVector3D?is`<T> occultedBodyPosition): occulted body position in same frame
+        
+            Returns:
+                lighting ratio
+        
+        
         """
         ...
     def getOccultedBody(self) -> org.orekit.utils.ExtendedPositionProvider:
@@ -790,30 +868,69 @@ class RadiationPressureModel(RadiationForceModel):
                 radiation sensitive object
         
         
+        """
+        ...
+    _init_0__T = typing.TypeVar('_init_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_init_0__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_init_0__T]) -> None:
+        """
+            Initialize the force model at the start of propagation. This method will be called before any calls to
+            :meth:`~org.orekit.forces.ForceModel.addContribution`, :meth:`~org.orekit.forces.ForceModel.addContribution`,
+            :meth:`~org.orekit.forces.ForceModel.acceleration` or :meth:`~org.orekit.forces.ForceModel.acceleration`
+        
+            The default implementation of this method does nothing.
+        
+            Specified by:
+                :meth:`~org.orekit.forces.ForceModel.init` in interface :class:`~org.orekit.forces.ForceModel`
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.FieldSpacecraftState`<T> initialState): spacecraft state at the start of propagation.
+                target (:class:`~org.orekit.time.FieldAbsoluteDate`<T> target): date of propagation. Not equal to :code:`initialState.getDate()`.
+        
+        
+        """
+        ...
+    @typing.overload
+    def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate) -> None:
+        """
+            Initialize the force model at the start of propagation. This method will be called before any calls to
+            :meth:`~org.orekit.forces.ForceModel.addContribution`, :meth:`~org.orekit.forces.ForceModel.addContribution`,
+            :meth:`~org.orekit.forces.ForceModel.acceleration` or :meth:`~org.orekit.forces.ForceModel.acceleration`
+        
+            The default implementation of this method does nothing.
+        
+            Specified by:
+                :meth:`~org.orekit.forces.ForceModel.init` in interface :class:`~org.orekit.forces.ForceModel`
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.SpacecraftState`): spacecraft state at the start of propagation.
+                target (:class:`~org.orekit.time.AbsoluteDate`): date of propagation. Not equal to :code:`initialState.getDate()`.
+        
         """
         ...
 
-class CylindricallyShadowedLightFluxModel(AbstractLightFluxModel):
+class AbstractSolarLightFluxModel(AbstractLightFluxModel):
     """
-    public class CylindricallyShadowedLightFluxModel extends :class:`~org.orekit.forces.radiation.AbstractLightFluxModel`
+    public abstract class AbstractSolarLightFluxModel extends :class:`~org.orekit.forces.radiation.AbstractLightFluxModel`
     
-        Class defining a flux model with a single occulting body, casting a shadow whose shape is a circular cylinder
-        (equivalent to the light source being infinitely distant). It is less accurate but faster to evaluate than a conical
-        model.
+        Abstract class for the definition of the solar flux model with a single occulting body of spherical shape.
     
         Since:
-            12.1
+            12.2
     
         Also see:
-            :class:`~org.orekit.forces.radiation.AbstractLightFluxModel`, :class:`~org.orekit.forces.radiation.LightFluxModel`
+            :class:`~org.orekit.forces.radiation.LightFluxModel`
     """
-    @typing.overload
-    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double2: float): ...
-    @typing.overload
-    def __init__(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double: float): ...
-    def getEclipseConditionsDetector(self) -> java.util.List[org.orekit.propagation.events.EventDetector]: ...
-    _getFieldEclipseConditionsDetector__T = typing.TypeVar('_getFieldEclipseConditionsDetector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    def getFieldEclipseConditionsDetector(self, field: org.hipparchus.Field[_getFieldEclipseConditionsDetector__T]) -> java.util.List[org.orekit.propagation.events.FieldEventDetector[_getFieldEclipseConditionsDetector__T]]: ...
+    def getEventDetectionSettings(self) -> org.orekit.propagation.events.EventDetectionSettings:
+        """
+            Getter for eclipse event detection settings used for eclipses.
+        
+            Returns:
+                event detection settings
+        
+        
+        """
+        ...
     def getOccultingBodyRadius(self) -> float:
         """
             Getter for occulting body radius.
@@ -1020,12 +1137,113 @@ class SolarRadiationPressure(AbstractRadiationForceModel):
         """
         ...
 
+class ConicallyShadowedLightFluxModel(AbstractSolarLightFluxModel):
+    """
+    public class ConicallyShadowedLightFluxModel extends :class:`~org.orekit.forces.radiation.AbstractSolarLightFluxModel`
+    
+        Class defining a flux model from a single occulted body, casting a shadow on a spherical occulting body. It cannot model
+        oblate bodies or multiple occulting objects (for this, see
+        :class:`~org.orekit.forces.radiation.SolarRadiationPressure`).
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.forces.radiation.AbstractSolarLightFluxModel`, :class:`~org.orekit.forces.radiation.LightFluxModel`,
+            "Montenbruck, Oliver, and Gill, Eberhard. Satellite orbits : models, methods, and * applications. Berlin New York:
+            Springer, 2000."
+    """
+    @typing.overload
+    def __init__(self, double: float, double2: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double3: float): ...
+    @typing.overload
+    def __init__(self, double: float, double2: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double3: float, eventDetectionSettings: org.orekit.propagation.events.EventDetectionSettings): ...
+    @typing.overload
+    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double2: float): ...
+    @staticmethod
+    def getDefaultEclipseDetectionSettings() -> org.orekit.propagation.events.EventDetectionSettings:
+        """
+            Define default detection settings for eclipses.
+        
+            Returns:
+                default settings
+        
+        
+        """
+        ...
+    def getEclipseConditionsDetector(self) -> java.util.List[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEclipseConditionsDetector__T = typing.TypeVar('_getFieldEclipseConditionsDetector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldEclipseConditionsDetector(self, field: org.hipparchus.Field[_getFieldEclipseConditionsDetector__T]) -> java.util.List[org.orekit.propagation.events.FieldEventDetector[_getFieldEclipseConditionsDetector__T]]: ...
+    _init_0__T = typing.TypeVar('_init_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_init_0__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_init_0__T]) -> None:
+        """
+            Perform initialization steps before starting propagation.
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.FieldSpacecraftState`<T> initialState): initial state
+                targetDate (:class:`~org.orekit.time.FieldAbsoluteDate`<T> targetDate): target date for propagation
+        
+        
+        """
+        ...
+    @typing.overload
+    def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate) -> None:
+        """
+            Perform initialization steps before starting propagation.
+        
+            Parameters:
+                initialState (:class:`~org.orekit.propagation.SpacecraftState`): initial state
+                targetDate (:class:`~org.orekit.time.AbsoluteDate`): target date for propagation
+        
+        """
+        ...
+
+class CylindricallyShadowedLightFluxModel(AbstractSolarLightFluxModel):
+    """
+    public class CylindricallyShadowedLightFluxModel extends :class:`~org.orekit.forces.radiation.AbstractSolarLightFluxModel`
+    
+        Class defining a flux model with a single occulting body, casting a shadow whose shape is a circular cylinder
+        (equivalent to the light source being infinitely distant). It is less accurate but faster to evaluate than a conical
+        model.
+    
+        Since:
+            12.1
+    
+        Also see:
+            :class:`~org.orekit.forces.radiation.AbstractSolarLightFluxModel`, :class:`~org.orekit.forces.radiation.LightFluxModel`
+    """
+    @typing.overload
+    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double2: float): ...
+    @typing.overload
+    def __init__(self, double: float, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double2: float, eventDetectionSettings: org.orekit.propagation.events.EventDetectionSettings): ...
+    @typing.overload
+    def __init__(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], double: float): ...
+    @staticmethod
+    def getDefaultEclipseDetectionSettings() -> org.orekit.propagation.events.EventDetectionSettings:
+        """
+            Define default detection settings for eclipses.
+        
+            Returns:
+                default settings
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    def getEclipseConditionsDetector(self) -> java.util.List[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEclipseConditionsDetector__T = typing.TypeVar('_getFieldEclipseConditionsDetector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    def getFieldEclipseConditionsDetector(self, field: org.hipparchus.Field[_getFieldEclipseConditionsDetector__T]) -> java.util.List[org.orekit.propagation.events.FieldEventDetector[_getFieldEclipseConditionsDetector__T]]: ...
+
 
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("org.orekit.forces.radiation")``.
 
     AbstractLightFluxModel: typing.Type[AbstractLightFluxModel]
     AbstractRadiationForceModel: typing.Type[AbstractRadiationForceModel]
+    AbstractSolarLightFluxModel: typing.Type[AbstractSolarLightFluxModel]
+    ConicallyShadowedLightFluxModel: typing.Type[ConicallyShadowedLightFluxModel]
     CylindricallyShadowedLightFluxModel: typing.Type[CylindricallyShadowedLightFluxModel]
     ECOM2: typing.Type[ECOM2]
     IsotropicRadiationCNES95Convention: typing.Type[IsotropicRadiationCNES95Convention]
diff --git a/org-stubs/orekit/frames/__init__.pyi b/org-stubs/orekit/frames/__init__.pyi
index b5c476ee797f949ab71e9a0a47004cf511d6001b..03c97613cd24b77cb4ff807905a24103545b890d 100644
--- a/org-stubs/orekit/frames/__init__.pyi
+++ b/org-stubs/orekit/frames/__init__.pyi
@@ -720,7 +720,7 @@ class FieldStaticTransform(org.orekit.time.TimeStamped, typing.Generic[_FieldSta
     @staticmethod
     def getIdentity(field: org.hipparchus.Field[_getIdentity__T]) -> 'FieldStaticTransform'[_getIdentity__T]:
         """
-            Get the identity static transform.
+            Get the identity static transform. Override methods for speed.
         
             Parameters:
                 field (:class:`~org.orekit.frames.https:.www.hipparchus.org.apidocs.org.hipparchus.Field?is`<T> field): field used by default
@@ -2197,7 +2197,7 @@ class StaticTransform(org.orekit.time.TimeStamped):
     @staticmethod
     def getIdentity() -> 'StaticTransform':
         """
-            Get the identity static transform.
+            Get the identity static transform. It overrides most methods for speed.
         
             Returns:
                 identity transform.
@@ -2814,6 +2814,36 @@ class FieldKinematicTransform(FieldStaticTransform[_FieldKinematicTransform__T],
         """
         ...
     def getInverse(self) -> 'FieldKinematicTransform'[_FieldKinematicTransform__T]: ...
+    def getPVJacobian(self) -> typing.MutableSequence[typing.MutableSequence[_FieldKinematicTransform__T]]:
+        """
+            Compute the Jacobian of the :meth:`~org.orekit.frames.FieldKinematicTransform.transformOnlyPV` (FieldPVCoordinates)}
+            method of the transform.
+        
+            Element :code:`jacobian[i][j]` is the derivative of Cartesian coordinate i of the transformed
+            :class:`~org.orekit.utils.FieldPVCoordinates` with respect to Cartesian coordinate j of the input
+            :class:`~org.orekit.utils.FieldPVCoordinates` in method
+            :meth:`~org.orekit.frames.FieldKinematicTransform.transformOnlyPV`.
+        
+            This definition implies that if we define position-velocity coordinates
+        
+            .. code-block: java
+            
+             PV₁ = transform.transformPVCoordinates(PV₀), then
+             
+        
+            their differentials dPV₁ and dPV₀ will obey the following relation where J is the matrix computed by this method:
+        
+            .. code-block: java
+            
+             dPV₁ = J × dPV₀
+             
+        
+            Returns:
+                Jacobian matrix
+        
+        
+        """
+        ...
     def getRotationRate(self) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_FieldKinematicTransform__T]: ...
     def getVelocity(self) -> org.hipparchus.geometry.euclidean.threed.FieldVector3D[_FieldKinematicTransform__T]: ...
     _of_0__T = typing.TypeVar('_of_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
@@ -3517,6 +3547,35 @@ class KinematicTransform(StaticTransform):
                 inverse transform of the instance
         
         
+        """
+        ...
+    def getPVJacobian(self) -> typing.MutableSequence[typing.MutableSequence[float]]:
+        """
+            Compute the Jacobian of the :meth:`~org.orekit.frames.KinematicTransform.transformOnlyPV` (PVCoordinates)} method of the
+            transform.
+        
+            Element :code:`jacobian[i][j]` is the derivative of Cartesian coordinate i of the transformed
+            :class:`~org.orekit.utils.PVCoordinates` with respect to Cartesian coordinate j of the input
+            :class:`~org.orekit.utils.PVCoordinates` in method :meth:`~org.orekit.frames.KinematicTransform.transformOnlyPV`.
+        
+            This definition implies that if we define position-velocity coordinates
+        
+            .. code-block: java
+            
+             PV₁ = transform.transformPVCoordinates(PV₀), then
+             
+        
+            their differentials dPV₁ and dPV₀ will obey the following relation where J is the matrix computed by this method:
+        
+            .. code-block: java
+            
+             dPV₁ = J × dPV₀
+             
+        
+            Returns:
+                Jacobian matrix
+        
+        
         """
         ...
     def getRotationRate(self) -> org.hipparchus.geometry.euclidean.threed.Vector3D:
diff --git a/org-stubs/orekit/models/earth/atmosphere/__init__.pyi b/org-stubs/orekit/models/earth/atmosphere/__init__.pyi
index a400986df42473b89bb9b27dcd9f9a67d601a940..4a7c9b6c7a630b5d15085f378b79547c6417c4b1 100644
--- a/org-stubs/orekit/models/earth/atmosphere/__init__.pyi
+++ b/org-stubs/orekit/models/earth/atmosphere/__init__.pyi
@@ -735,8 +735,8 @@ class JB2008(Atmosphere):
         It is described in the paper:
     
     
-        `A New Empirical Thermospheric Density Model JB2008 Using New Solar Indices
-        <http://sol.spacenvironment.net/~JB2008/pubs/AIAA_2008-6438_JB2008_Model.pdf>`
+        
+        class:`~org.orekit.models.earth.atmosphere.https:.www.researchgate.net.publication.228621668_A_New_Empirical_Thermospheric_Density_Model_JB2008_Using_New_Solar_and_Geomagnetic_Indices`
     
     
         *Bruce R. Bowman & al.*
diff --git a/org-stubs/orekit/models/earth/troposphere/__init__.pyi b/org-stubs/orekit/models/earth/troposphere/__init__.pyi
index 6461dba061152101ab3c10d74c856e411c5c4cd3..967f634289c7ee31e7a3e7d5ebc6c51853e43f40 100644
--- a/org-stubs/orekit/models/earth/troposphere/__init__.pyi
+++ b/org-stubs/orekit/models/earth/troposphere/__init__.pyi
@@ -1541,9 +1541,8 @@ class EstimatedModel(TroposphericModel):
         :class:`~org.orekit.models.earth.troposphere.NiellMappingFunctionModel`
     
         The tropospheric zenith delay δ :sub:`h` is computed empirically with a
-        :class:`~org.orekit.models.earth.troposphere.DiscreteTroposphericModel` while the tropospheric total zenith delay δ
-        :sub:`t` is estimated as a :class:`~org.orekit.utils.ParameterDriver`, hence the wet part is the difference between the
-        two.
+        :class:`~org.orekit.models.earth.troposphere.TroposphericModel` while the tropospheric total zenith delay δ :sub:`t` is
+        estimated as a :class:`~org.orekit.utils.ParameterDriver`, hence the wet part is the difference between the two.
     
         Since:
             12.1
diff --git a/org-stubs/orekit/orbits/__init__.pyi b/org-stubs/orekit/orbits/__init__.pyi
index d8a0172479f82245cb140967c2d62ab40f32b596..32d9879c68fdb4052f57be63223296e1a631c122 100644
--- a/org-stubs/orekit/orbits/__init__.pyi
+++ b/org-stubs/orekit/orbits/__init__.pyi
@@ -135,6 +135,27 @@ class CircularLatitudeArgumentUtility:
             :class:`~org.orekit.orbits.CircularOrbit`
     """
     @staticmethod
+    def convertAlpha(positionAngleType: 'PositionAngleType', double: float, double2: float, double3: float, positionAngleType2: 'PositionAngleType') -> float:
+        """
+            Convert argument of latitude.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                alpha (double): old value for argument of latitude
+                ex (double): ex
+                ey (double): ey
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                convert argument of latitude
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @staticmethod
     def eccentricToMean(double: float, double2: float, double3: float) -> float:
         """
             Computes the mean latitude argument from the eccentric latitude argument.
@@ -245,6 +266,27 @@ class EquinoctialLongitudeArgumentUtility:
             :class:`~org.orekit.orbits.EquinoctialOrbit`
     """
     @staticmethod
+    def convertL(positionAngleType: 'PositionAngleType', double: float, double2: float, double3: float, positionAngleType2: 'PositionAngleType') -> float:
+        """
+            Convert argument of longitude.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                l (double): old value for argument of longitude
+                ex (double): ex
+                ey (double): ey
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                converted argument of longitude
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @staticmethod
     def eccentricToMean(double: float, double2: float, double3: float) -> float:
         """
             Computes the mean longitude argument from the eccentric longitude argument.
@@ -354,6 +396,28 @@ class FieldCircularLatitudeArgumentUtility:
         Also see:
             :class:`~org.orekit.orbits.FieldCircularOrbit`
     """
+    _convertAlpha__T = typing.TypeVar('_convertAlpha__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @staticmethod
+    def convertAlpha(positionAngleType: 'PositionAngleType', t: _convertAlpha__T, t2: _convertAlpha__T, t3: _convertAlpha__T, positionAngleType2: 'PositionAngleType') -> _convertAlpha__T:
+        """
+            Convert argument of latitude.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                alpha (T): old value for argument of latitude
+                ex (T): ex
+                ey (T): ey
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                convert argument of latitude
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     _eccentricToMean__T = typing.TypeVar('_eccentricToMean__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def eccentricToMean(t: _eccentricToMean__T, t2: _eccentricToMean__T, t3: _eccentricToMean__T) -> _eccentricToMean__T:
@@ -470,6 +534,28 @@ class FieldEquinoctialLongitudeArgumentUtility:
         Also see:
             :class:`~org.orekit.orbits.FieldEquinoctialOrbit`
     """
+    _convertL__T = typing.TypeVar('_convertL__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @staticmethod
+    def convertL(positionAngleType: 'PositionAngleType', t: _convertL__T, t2: _convertL__T, t3: _convertL__T, positionAngleType2: 'PositionAngleType') -> _convertL__T:
+        """
+            Convert argument of longitude.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                l (T): old value for argument of longitude
+                ex (T): ex
+                ey (T): ey
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                converted argument of longitude
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     _eccentricToMean__T = typing.TypeVar('_eccentricToMean__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def eccentricToMean(t: _eccentricToMean__T, t2: _eccentricToMean__T, t3: _eccentricToMean__T) -> _eccentricToMean__T:
@@ -579,6 +665,27 @@ class FieldKeplerianAnomalyUtility:
     
         Utility methods for converting between different Keplerian anomalies.
     """
+    _convertAnomaly__T = typing.TypeVar('_convertAnomaly__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @staticmethod
+    def convertAnomaly(positionAngleType: 'PositionAngleType', t: _convertAnomaly__T, t2: _convertAnomaly__T, positionAngleType2: 'PositionAngleType') -> _convertAnomaly__T:
+        """
+            Convert anomaly.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                anomaly (T): old value for anomaly
+                e (T): eccentricity
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                converted anomaly
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     _ellipticEccentricToMean__T = typing.TypeVar('_ellipticEccentricToMean__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def ellipticEccentricToMean(t: _ellipticEccentricToMean__T, t2: _ellipticEccentricToMean__T) -> _ellipticEccentricToMean__T:
@@ -1202,6 +1309,26 @@ class KeplerianAnomalyUtility:
         Utility methods for converting between different Keplerian anomalies.
     """
     @staticmethod
+    def convertAnomaly(positionAngleType: 'PositionAngleType', double: float, double2: float, positionAngleType2: 'PositionAngleType') -> float:
+        """
+            Convert anomaly.
+        
+            Parameters:
+                oldType (:class:`~org.orekit.orbits.PositionAngleType`): old position angle type
+                anomaly (double): old value for anomaly
+                e (double): eccentricity
+                newType (:class:`~org.orekit.orbits.PositionAngleType`): new position angle type
+        
+            Returns:
+                converted anomaly
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @staticmethod
     def ellipticEccentricToMean(double: float, double2: float) -> float:
         """
             Computes the elliptic mean anomaly from the elliptic eccentric anomaly.
diff --git a/org-stubs/orekit/propagation/analytical/__init__.pyi b/org-stubs/orekit/propagation/analytical/__init__.pyi
index 5896dbf369313228df30a4ccc512b583de3ae605..faf50066f8c2eef85ab0b89b77b8a14568c09bb9 100644
--- a/org-stubs/orekit/propagation/analytical/__init__.pyi
+++ b/org-stubs/orekit/propagation/analytical/__init__.pyi
@@ -591,7 +591,8 @@ class BrouwerLyddanePropagator(AbstractAnalyticalPropagator, org.orekit.utils.Pa
             "Brouwer, Dirk. Solution of the problem of artificial satellite theory without drag. YALE UNIV NEW HAVEN CT NEW HAVEN
             United States, 1959.", "Lyddane, R. H. Small eccentricities or inclinations in the Brouwer theory of the artificial
             satellite. The Astronomical Journal 68 (1963): 555.", "Phipps Jr, Warren E. Parallelization of the Navy Space
-            Surveillance Center (NAVSPASUR) Satellite Model. NAVAL POSTGRADUATE SCHOOL MONTEREY CA, 1992."
+            Surveillance Center (NAVSPASUR) Satellite Model. NAVAL POSTGRADUATE SCHOOL MONTEREY CA, 1992.", "Solomon, Daniel, THE
+            NAVSPASUR Satellite Motion Model, Naval Research Laboratory, August 8, 1991."
     """
     M2_NAME: typing.ClassVar[str] = ...
     """
@@ -614,6 +615,39 @@ class BrouwerLyddanePropagator(AbstractAnalyticalPropagator, org.orekit.utils.Pa
             :meth:`~constant`
     
     
+    """
+    EPSILON_DEFAULT: typing.ClassVar[float] = ...
+    """
+    public static final double EPSILON_DEFAULT
+    
+        Default convergence threshold for mean parameters conversion.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    MAX_ITERATIONS_DEFAULT: typing.ClassVar[int] = ...
+    """
+    public static final int MAX_ITERATIONS_DEFAULT
+    
+        Default value for maxIterations.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    DAMPING_DEFAULT: typing.ClassVar[float] = ...
+    """
+    public static final double DAMPING_DEFAULT
+    
+        Default value for damping.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
     """
     @typing.overload
     def __init__(self, orbit: org.orekit.orbits.Orbit, double: float, double2: float, double3: float, double4: float, double5: float, double6: float, double7: float): ...
@@ -1300,7 +1334,8 @@ class FieldBrouwerLyddanePropagator(FieldAbstractAnalyticalPropagator[_FieldBrou
             "Brouwer, Dirk. Solution of the problem of artificial satellite theory without drag. YALE UNIV NEW HAVEN CT NEW HAVEN
             United States, 1959.", "Lyddane, R. H. Small eccentricities or inclinations in the Brouwer theory of the artificial
             satellite. The Astronomical Journal 68 (1963): 555.", "Phipps Jr, Warren E. Parallelization of the Navy Space
-            Surveillance Center (NAVSPASUR) Satellite Model. NAVAL POSTGRADUATE SCHOOL MONTEREY CA, 1992."
+            Surveillance Center (NAVSPASUR) Satellite Model. NAVAL POSTGRADUATE SCHOOL MONTEREY CA, 1992.", "Solomon, Daniel, THE
+            NAVSPASUR Satellite Motion Model, Naval Research Laboratory, August 8, 1991."
     """
     @typing.overload
     def __init__(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_FieldBrouwerLyddanePropagator__T], double: float, t: _FieldBrouwerLyddanePropagator__T, double2: float, double3: float, double4: float, double5: float, double6: float): ...
diff --git a/org-stubs/orekit/propagation/analytical/tle/__init__.pyi b/org-stubs/orekit/propagation/analytical/tle/__init__.pyi
index 0bbcf4bb7702dab32e233ee26870cbc78ae4a3b3..bd007c67eed72b04b3c93720d8fe5e7205b734c0 100644
--- a/org-stubs/orekit/propagation/analytical/tle/__init__.pyi
+++ b/org-stubs/orekit/propagation/analytical/tle/__init__.pyi
@@ -1638,6 +1638,22 @@ class TLEPropagator(org.orekit.propagation.analytical.AbstractAnalyticalPropagat
             Since:
                 10.1
         
+            Also see:
+                :meth:`~org.orekit.propagation.analytical.tle.TLEPropagator.selectExtrapolator`
+        
+            Selects the extrapolator to use with the selected TLE.
+        
+            Parameters:
+                tle (:class:`~org.orekit.propagation.analytical.tle.TLE`): the TLE to propagate.
+                teme (:class:`~org.orekit.frames.Frame`): TEME frame.
+                attitudeProvider (:class:`~org.orekit.attitudes.AttitudeProvider`): provider for attitude computation
+        
+            Returns:
+                the correct propagator.
+        
+            Since:
+                12.2
+        
         :class:`~org.orekit.annotation.DefaultDataContext` public static :class:`~org.orekit.propagation.analytical.tle.TLEPropagator` selectExtrapolator (:class:`~org.orekit.propagation.analytical.tle.TLE` tle, :class:`~org.orekit.attitudes.AttitudeProvider` attitudeProvider, double mass)
         
             Selects the extrapolator to use with the selected TLE.
@@ -1681,6 +1697,9 @@ class TLEPropagator(org.orekit.propagation.analytical.AbstractAnalyticalPropagat
     @typing.overload
     @staticmethod
     def selectExtrapolator(tLE: TLE, frame: org.orekit.frames.Frame) -> 'TLEPropagator': ...
+    @typing.overload
+    @staticmethod
+    def selectExtrapolator(tLE: TLE, frame: org.orekit.frames.Frame, attitudeProvider: org.orekit.attitudes.AttitudeProvider) -> 'TLEPropagator': ...
 
 _FieldSGP4__T = typing.TypeVar('_FieldSGP4__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class FieldSGP4(FieldTLEPropagator[_FieldSGP4__T], typing.Generic[_FieldSGP4__T]):
diff --git a/org-stubs/orekit/propagation/conversion/__init__.pyi b/org-stubs/orekit/propagation/conversion/__init__.pyi
index b75c32d0b379c0fb5f9904b0e1b1f5c2addf3e96..771672dca68f3d795e081f363316bd0d8954ab79 100644
--- a/org-stubs/orekit/propagation/conversion/__init__.pyi
+++ b/org-stubs/orekit/propagation/conversion/__init__.pyi
@@ -5,6 +5,7 @@ if sys.version_info >= (3, 8):
 else:
     from typing_extensions import Protocol
 
+import java.lang
 import java.util
 import jpype
 import org.hipparchus
@@ -15,6 +16,7 @@ import org.orekit.estimation.leastsquares
 import org.orekit.estimation.measurements
 import org.orekit.forces
 import org.orekit.forces.gravity.potential
+import org.orekit.forces.maneuvers
 import org.orekit.frames
 import org.orekit.orbits
 import org.orekit.propagation
@@ -46,6 +48,8 @@ class FieldODEIntegratorBuilder(typing.Generic[_FieldODEIntegratorBuilder__T]):
     def buildIntegrator(self, field: org.hipparchus.Field[_FieldODEIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_FieldODEIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_FieldODEIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_FieldODEIntegratorBuilder__T]: ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_FieldODEIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_FieldODEIntegratorBuilder__T]: ...
 
 class ODEIntegratorBuilder:
     """
@@ -56,6 +60,7 @@ class ODEIntegratorBuilder:
         Since:
             6.0
     """
+    @typing.overload
     def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
@@ -67,6 +72,19 @@ class ODEIntegratorBuilder:
             Returns:
                 a first order integrator ready to use
         
+        """
+        ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
+        """
+            Build a first order integrator. Non-orbit version.
+        
+            Parameters:
+                absolutePVCoordinates (:class:`~org.orekit.utils.AbsolutePVCoordinates`): absolute position-velocity vector
+        
+            Returns:
+                a first order integrator ready to use
+        
         
         """
         ...
@@ -97,9 +115,9 @@ class OsculatingToMeanElementsConverter:
         """
         ...
 
-class PropagatorBuilder:
+class PropagatorBuilder(java.lang.Cloneable):
     """
-    public interface PropagatorBuilder
+    public interface PropagatorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Cloneable?is`
     
         This interface is the top-level abstraction to build propagators for conversion.
     
@@ -133,6 +151,9 @@ class PropagatorBuilder:
         ...
     def copy(self) -> 'PropagatorBuilder':
         """
+            Deprecated.
+            as of 12.2, replaced by
+            :meth:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object.html?is`
             Create a new instance identical to this one.
         
             Returns:
@@ -335,6 +356,8 @@ class AbstractFieldIntegratorBuilder(FieldODEIntegratorBuilder[_AbstractFieldInt
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_AbstractFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AbstractFieldIntegratorBuilder__T]: ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_AbstractFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_AbstractFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_AbstractFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AbstractFieldIntegratorBuilder__T]: ...
 
 class AbstractPropagatorBuilder(PropagatorBuilder):
@@ -357,6 +380,16 @@ class AbstractPropagatorBuilder(PropagatorBuilder):
                 11.1
         
         
+        """
+        ...
+    def clone(self) -> 'AbstractPropagatorBuilder':
+        """
+        
+            Overrides:
+                :meth:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object.html?is` in
+                class :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+        
+        
         """
         ...
     def deselectDynamicParameters(self) -> None:
@@ -404,6 +437,19 @@ class AbstractPropagatorBuilder(PropagatorBuilder):
                 date of the initial orbit
         
         
+        """
+        ...
+    def getMass(self) -> float:
+        """
+            Get the mass.
+        
+            Returns:
+                the mass
+        
+            Since:
+                9.2
+        
+        
         """
         ...
     def getMu(self) -> float:
@@ -537,6 +583,16 @@ class AbstractPropagatorBuilder(PropagatorBuilder):
                 10.1
         
         
+        """
+        ...
+    def setMass(self, double: float) -> None:
+        """
+            Set the initial mass.
+        
+            Parameters:
+                mass (double): the mass (kg)
+        
+        
         """
         ...
 
@@ -595,17 +651,29 @@ class AbstractPropagatorConverter(PropagatorConverter):
         """
         ...
 
-class AdamsBashforthIntegratorBuilder(ODEIntegratorBuilder):
+class AbstractVariableStepIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class AdamsBashforthIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public abstract class AbstractVariableStepIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for AdamsBashforthIntegrator.
+        Abstract class for integrator builder using variable step size.
+    
+        Since:
+            12.2
+    """
+    ...
+
+class ClassicalRungeKuttaIntegratorBuilder(ODEIntegratorBuilder):
+    """
+    public class ClassicalRungeKuttaIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    
+        Builder for ClassicalRungeKuttaIntegrator.
     
         Since:
             6.0
     """
-    def __init__(self, int: int, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def __init__(self, double: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -623,18 +691,21 @@ class AdamsBashforthIntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class AdamsMoultonIntegratorBuilder(ODEIntegratorBuilder):
+class EulerIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class AdamsMoultonIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class EulerIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for AdamsMoultonIntegrator.
+        Builder for EulerIntegrator.
     
         Since:
             6.0
     """
-    def __init__(self, int: int, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def __init__(self, double: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -652,18 +723,21 @@ class AdamsMoultonIntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class ClassicalRungeKuttaIntegratorBuilder(ODEIntegratorBuilder):
+class GillIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class ClassicalRungeKuttaIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class GillIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for ClassicalRungeKuttaIntegrator.
+        Builder for GillIntegrator.
     
         Since:
             6.0
     """
     def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -681,18 +755,21 @@ class ClassicalRungeKuttaIntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class DormandPrince54IntegratorBuilder(ODEIntegratorBuilder):
+class LutherIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class DormandPrince54IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class LutherIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for DormandPrince54Integrator.
+        Builder for LutherIntegrator.
     
         Since:
-            6.0
+            7.1
     """
-    def __init__(self, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def __init__(self, double: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -710,18 +787,21 @@ class DormandPrince54IntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class DormandPrince853IntegratorBuilder(ODEIntegratorBuilder):
+class MidpointIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class DormandPrince853IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class MidpointIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for DormandPrince853Integrator.
+        Builder for MidpointIntegrator.
     
         Since:
             6.0
     """
-    def __init__(self, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def __init__(self, double: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -739,18 +819,21 @@ class DormandPrince853IntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class EulerIntegratorBuilder(ODEIntegratorBuilder):
+class ThreeEighthesIntegratorBuilder(ODEIntegratorBuilder):
     """
-    public class EulerIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class ThreeEighthesIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
     
-        Builder for EulerIntegrator.
+        Builder for ThreeEighthesIntegrator.
     
         Since:
             6.0
     """
     def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
@@ -768,54 +851,72 @@ class EulerIntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class GillIntegratorBuilder(ODEIntegratorBuilder):
+class AbstractAnalyticalPropagatorBuilder(AbstractPropagatorBuilder):
     """
-    public class GillIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public abstract class AbstractAnalyticalPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
     
-        Builder for GillIntegrator.
+        Abstract class for propagator builders of analytical models (except for ephemeris i.e. interpolated ones).
     
         Since:
-            6.0
+            12.2
     """
-    def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def addImpulseManeuver(self, impulseManeuver: org.orekit.forces.maneuvers.ImpulseManeuver) -> None:
         """
-            Build a first order integrator.
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+            Add impulse maneuver.
         
             Parameters:
-                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
-                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
+                impulseManeuver (:class:`~org.orekit.forces.maneuvers.ImpulseManeuver`): impulse maneuver
         
-            Returns:
-                a first order integrator ready to use
         
+        """
+        ...
+    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.AbstractBatchLSModel: ...
+    def clearImpulseManeuvers(self) -> None:
+        """
+            Remove all impulse maneuvers.
         
         """
         ...
 
-class GraggBulirschStoerIntegratorBuilder(ODEIntegratorBuilder):
+_AbstractFixedStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractFixedStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class AbstractFixedStepFieldIntegratorBuilder(AbstractFieldIntegratorBuilder[_AbstractFixedStepFieldIntegratorBuilder__T], typing.Generic[_AbstractFixedStepFieldIntegratorBuilder__T]):
+    """
+    public abstract class AbstractFixedStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractFieldIntegratorBuilder`<T>
+    
+        Abstract class for integrator builder using fixed step size.
+    """
+    ...
+
+_AbstractVariableStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractVariableStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class AbstractVariableStepFieldIntegratorBuilder(AbstractFieldIntegratorBuilder[_AbstractVariableStepFieldIntegratorBuilder__T], typing.Generic[_AbstractVariableStepFieldIntegratorBuilder__T]):
+    """
+    public abstract class AbstractVariableStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractFieldIntegratorBuilder`<T>
+    
+        Abstract class for integrator builder using variable step size.
+    """
+    ...
+
+class AdamsBashforthIntegratorBuilder(AbstractVariableStepIntegratorBuilder):
     """
-    public class GraggBulirschStoerIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class AdamsBashforthIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
     
-        Builder for GraggBulirschStoerIntegrator.
+        Builder for AdamsBashforthIntegrator.
     
         Since:
             6.0
     """
-    def __init__(self, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float): ...
+    @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
-        
             Parameters:
                 orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
                 orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
@@ -826,25 +927,27 @@ class GraggBulirschStoerIntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class HighamHall54IntegratorBuilder(ODEIntegratorBuilder):
+class AdamsMoultonIntegratorBuilder(AbstractVariableStepIntegratorBuilder):
     """
-    public class HighamHall54IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class AdamsMoultonIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
     
-        Builder for HighamHall54Integrator.
+        Builder for AdamsMoultonIntegrator.
     
         Since:
             6.0
     """
-    def __init__(self, double: float, double2: float, double3: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float): ...
+    @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
             Build a first order integrator.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
-        
             Parameters:
                 orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
                 orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
@@ -855,249 +958,69 @@ class HighamHall54IntegratorBuilder(ODEIntegratorBuilder):
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
-class LutherIntegratorBuilder(ODEIntegratorBuilder):
+class DSSTPropagatorBuilder(AbstractPropagatorBuilder):
     """
-    public class LutherIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+    public class DSSTPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
     
-        Builder for LutherIntegrator.
+        Builder for DSST propagator.
     
         Since:
-            7.1
+            10.0
     """
-    def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, oDEIntegratorBuilder: typing.Union[ODEIntegratorBuilder, typing.Callable], double: float, propagationType: org.orekit.propagation.PropagationType, propagationType2: org.orekit.propagation.PropagationType): ...
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, oDEIntegratorBuilder: typing.Union[ODEIntegratorBuilder, typing.Callable], double: float, propagationType: org.orekit.propagation.PropagationType, propagationType2: org.orekit.propagation.PropagationType, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
+    def addForceModel(self, dSSTForceModel: org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel) -> None:
         """
-            Build a first order integrator.
+            Add a force model to the global perturbation model.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+            If this method is not called at all, the integrated orbit will follow a Keplerian evolution only.
         
             Parameters:
-                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
-                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
-        
-            Returns:
-                a first order integrator ready to use
+                model (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`): perturbing :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel` to add
         
         
         """
         ...
-
-class MidpointIntegratorBuilder(ODEIntegratorBuilder):
-    """
-    public class MidpointIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
-    
-        Builder for MidpointIntegrator.
-    
-        Since:
-            6.0
-    """
-    def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.DSSTBatchLSModel: ...
+    @typing.overload
+    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    @typing.overload
+    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.semianalytical.dsst.DSSTPropagator:
         """
-            Build a first order integrator.
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+            Build a propagator.
         
             Parameters:
-                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
-                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
+                normalizedParameters (double[]): normalized values for the selected parameters
         
             Returns:
-                a first order integrator ready to use
+                an initialized propagator
         
         
         """
         ...
-
-class ThreeEighthesIntegratorBuilder(ODEIntegratorBuilder):
-    """
-    public class ThreeEighthesIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
-    
-        Builder for ThreeEighthesIntegrator.
-    
-        Since:
-            6.0
-    """
-    def __init__(self, double: float): ...
-    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator:
+    def copy(self) -> 'DSSTPropagatorBuilder':
         """
-            Build a first order integrator.
+            Deprecated.
+            Create a copy of a DSSTPropagatorBuilder object.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.conversion.ODEIntegratorBuilder.buildIntegrator` in
-                interface :class:`~org.orekit.propagation.conversion.ODEIntegratorBuilder`
+            Returns:
+                Copied version of the DSSTPropagatorBuilder
         
-            Parameters:
-                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
-                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
+        
+        """
+        ...
+    def getAllForceModels(self) -> java.util.List[org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel]: ...
+    def getIntegratorBuilder(self) -> ODEIntegratorBuilder:
+        """
+            Get the integrator builder.
         
             Returns:
-                a first order integrator ready to use
-        
-        
-        """
-        ...
-
-_AbstractFixedStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractFixedStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class AbstractFixedStepFieldIntegratorBuilder(AbstractFieldIntegratorBuilder[_AbstractFixedStepFieldIntegratorBuilder__T], typing.Generic[_AbstractFixedStepFieldIntegratorBuilder__T]):
-    """
-    public abstract class AbstractFixedStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractFieldIntegratorBuilder`<T>
-    
-        Abstract class for integrator builder using fixed step size.
-    """
-    ...
-
-_AbstractVariableStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractVariableStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class AbstractVariableStepFieldIntegratorBuilder(AbstractFieldIntegratorBuilder[_AbstractVariableStepFieldIntegratorBuilder__T], typing.Generic[_AbstractVariableStepFieldIntegratorBuilder__T]):
-    """
-    public abstract class AbstractVariableStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractFieldIntegratorBuilder`<T>
-    
-        Abstract class for integrator builder using variable step size.
-    """
-    @typing.overload
-    def buildIntegrator(self, field: org.hipparchus.Field[_AbstractVariableStepFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AbstractVariableStepFieldIntegratorBuilder__T]: ...
-    @typing.overload
-    def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_AbstractVariableStepFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AbstractVariableStepFieldIntegratorBuilder__T]: ...
-
-class BrouwerLyddanePropagatorBuilder(AbstractPropagatorBuilder):
-    """
-    public class BrouwerLyddanePropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
-    
-        Builder for Brouwer-Lyddane propagator.
-    
-        By default, Brouwer-Lyddane model considers only the perturbations due to zonal harmonics. However, for low Earth
-        orbits, the magnitude of the perturbative acceleration due to atmospheric drag can be significant. Warren Phipps' 1992
-        thesis considered the atmospheric drag by time derivatives of the *mean* mean anomaly using the catch-all coefficient
-        M2. Usually, M2 is adjusted during an orbit determination process and it represents the combination of all unmodeled
-        secular along-track effects (i.e. not just the atmospheric drag). The behavior of M2 is closed to the
-        :meth:`~org.orekit.propagation.analytical.tle.TLE.getBStar` parameter for the TLE. If the value of M2 is equal to
-        :meth:`~org.orekit.propagation.analytical.BrouwerLyddanePropagator.M2`, the along-track secular effects are not
-        considered in the dynamical model. Typical values for M2 are not known. It depends on the orbit type. However, the value
-        of M2 must be very small (e.g. between 1.0e-14 and 1.0e-15). The unit of M2 is rad/s².
-    
-        To estimate the M2 parameter, it is necessary to call the
-        :meth:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder.getPropagationParametersDrivers` method as follow:
-    
-        .. code-block: java
-        
-          for (ParameterDriver driver : builder.getPropagationParametersDrivers().getDrivers()) {
-             if (BrouwerLyddanePropagator.M2_NAME.equals(driver.getName())) {
-                driver.setSelected(true);
-             }
-          }
-         
-    
-        Since:
-            11.1
-    """
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, double: float, double2: float, tideSystem: org.orekit.forces.gravity.potential.TideSystem, double3: float, double4: float, double5: float, double6: float, orbitType: org.orekit.orbits.OrbitType, positionAngleType: org.orekit.orbits.PositionAngleType, double7: float, double8: float): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, double2: float): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider, double2: float): ...
-    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.AbstractBatchLSModel: ...
-    @typing.overload
-    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
-    @typing.overload
-    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.analytical.BrouwerLyddanePropagator:
-        """
-            Build a propagator.
-        
-            Parameters:
-                normalizedParameters (double[]): normalized values for the selected parameters
-        
-            Returns:
-                an initialized propagator
-        
-        
-        """
-        ...
-    def copy(self) -> 'BrouwerLyddanePropagatorBuilder':
-        """
-            Create a new instance identical to this one.
-        
-            Returns:
-                new instance identical to this one
-        
-        
-        """
-        ...
-
-class DSSTPropagatorBuilder(AbstractPropagatorBuilder):
-    """
-    public class DSSTPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
-    
-        Builder for DSST propagator.
-    
-        Since:
-            10.0
-    """
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, oDEIntegratorBuilder: typing.Union[ODEIntegratorBuilder, typing.Callable], double: float, propagationType: org.orekit.propagation.PropagationType, propagationType2: org.orekit.propagation.PropagationType): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, oDEIntegratorBuilder: typing.Union[ODEIntegratorBuilder, typing.Callable], double: float, propagationType: org.orekit.propagation.PropagationType, propagationType2: org.orekit.propagation.PropagationType, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
-    def addForceModel(self, dSSTForceModel: org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel) -> None:
-        """
-            Add a force model to the global perturbation model.
-        
-            If this method is not called at all, the integrated orbit will follow a Keplerian evolution only.
-        
-            Parameters:
-                model (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`): perturbing :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel` to add
-        
-        
-        """
-        ...
-    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.DSSTBatchLSModel: ...
-    @typing.overload
-    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
-    @typing.overload
-    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.semianalytical.dsst.DSSTPropagator:
-        """
-            Build a propagator.
-        
-            Parameters:
-                normalizedParameters (double[]): normalized values for the selected parameters
-        
-            Returns:
-                an initialized propagator
-        
-        
-        """
-        ...
-    def copy(self) -> 'DSSTPropagatorBuilder':
-        """
-            Create a copy of a DSSTPropagatorBuilder object.
-        
-            Returns:
-                Copied version of the DSSTPropagatorBuilder
-        
-        
-        """
-        ...
-    def getAllForceModels(self) -> java.util.List[org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel]: ...
-    def getIntegratorBuilder(self) -> ODEIntegratorBuilder:
-        """
-            Get the integrator builder.
-        
-            Returns:
-                the integrator builder
-        
-        
-        """
-        ...
-    def getMass(self) -> float:
-        """
-            Get the mass.
-        
-            Returns:
-                the mass
+                the integrator builder
         
         
         """
@@ -1136,59 +1059,68 @@ class DSSTPropagatorBuilder(AbstractPropagatorBuilder):
         ...
     @typing.overload
     def resetOrbit(self, orbit: org.orekit.orbits.Orbit, propagationType: org.orekit.propagation.PropagationType) -> None: ...
-    def setMass(self, double: float) -> None:
-        """
-            Set the initial mass.
-        
-            Parameters:
-                mass (double): the mass (kg)
-        
-        
-        """
-        ...
 
-class EcksteinHechlerPropagatorBuilder(AbstractPropagatorBuilder):
+class DormandPrince54IntegratorBuilder(AbstractVariableStepIntegratorBuilder):
     """
-    public class EcksteinHechlerPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
+    public class DormandPrince54IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
     
-        Builder for Eckstein-Hechler propagator.
+        Builder for DormandPrince54Integrator.
     
         Since:
             6.0
     """
     @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, double: float, double2: float, tideSystem: org.orekit.forces.gravity.potential.TideSystem, double3: float, double4: float, double5: float, double6: float, double7: float, orbitType: org.orekit.orbits.OrbitType, positionAngleType: org.orekit.orbits.PositionAngleType, double8: float): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
-    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.AbstractBatchLSModel: ...
+    def __init__(self, double: float, double2: float, double3: float): ...
     @typing.overload
-    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
     @typing.overload
-    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.Propagator:
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
-            Build a propagator.
+            Build a first order integrator.
         
             Parameters:
-                normalizedParameters (double[]): normalized values for the selected parameters
+                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
+                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
         
             Returns:
-                an initialized propagator
+                a first order integrator ready to use
         
         
         """
         ...
-    def copy(self) -> 'EcksteinHechlerPropagatorBuilder':
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
+
+class DormandPrince853IntegratorBuilder(AbstractVariableStepIntegratorBuilder):
+    """
+    public class DormandPrince853IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
+    
+        Builder for DormandPrince853Integrator.
+    
+        Since:
+            6.0
+    """
+    @typing.overload
+    def __init__(self, double: float, double2: float, double3: float): ...
+    @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
-            Create a new instance identical to this one.
+            Build a first order integrator.
+        
+            Parameters:
+                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
+                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
         
             Returns:
-                new instance identical to this one
+                a first order integrator ready to use
         
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
 
 class EphemerisPropagatorBuilder(AbstractPropagatorBuilder):
     """
@@ -1228,6 +1160,7 @@ class EphemerisPropagatorBuilder(AbstractPropagatorBuilder):
         ...
     def copy(self) -> 'EphemerisPropagatorBuilder':
         """
+            Deprecated.
             Create a new instance identical to this one.
         
             Returns:
@@ -1248,57 +1181,78 @@ class FiniteDifferencePropagatorConverter(AbstractPropagatorConverter):
     """
     def __init__(self, propagatorBuilder: PropagatorBuilder, double: float, int: int): ...
 
-class JacobianPropagatorConverter(AbstractPropagatorConverter):
+class GraggBulirschStoerIntegratorBuilder(AbstractVariableStepIntegratorBuilder):
     """
-    public class JacobianPropagatorConverter extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorConverter`
-    
-        Propagator converter using the real Jacobian.
+    public class GraggBulirschStoerIntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
     
-        Since:
-            6.0
-    """
-    def __init__(self, numericalPropagatorBuilder: 'NumericalPropagatorBuilder', double: float, int: int): ...
-
-class KeplerianPropagatorBuilder(AbstractPropagatorBuilder):
-    """
-    public class KeplerianPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
-    
-        Builder for Keplerian propagator.
+        Builder for GraggBulirschStoerIntegrator.
     
         Since:
             6.0
     """
     @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, positionAngleType: org.orekit.orbits.PositionAngleType, double: float): ...
-    @typing.overload
-    def __init__(self, orbit: org.orekit.orbits.Orbit, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
-    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.AbstractBatchLSModel: ...
+    def __init__(self, double: float, double2: float, double3: float): ...
     @typing.overload
-    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
     @typing.overload
-    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.Propagator:
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
-            Build a propagator.
+            Build a first order integrator.
         
             Parameters:
-                normalizedParameters (double[]): normalized values for the selected parameters
+                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
+                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
         
             Returns:
-                an initialized propagator
+                a first order integrator ready to use
         
         
         """
         ...
-    def copy(self) -> 'KeplerianPropagatorBuilder':
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
+
+class HighamHall54IntegratorBuilder(AbstractVariableStepIntegratorBuilder):
+    """
+    public class HighamHall54IntegratorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepIntegratorBuilder`
+    
+        Builder for HighamHall54Integrator.
+    
+        Since:
+            6.0
+    """
+    @typing.overload
+    def __init__(self, double: float, double2: float, double3: float): ...
+    @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, absolutePVCoordinates: org.orekit.utils.AbsolutePVCoordinates) -> org.hipparchus.ode.AbstractIntegrator:
         """
-            Create a new instance identical to this one.
+            Build a first order integrator.
+        
+            Parameters:
+                orbit (:class:`~org.orekit.orbits.Orbit`): reference orbit
+                orbitType (:class:`~org.orekit.orbits.OrbitType`): orbit type to use
         
             Returns:
-                new instance identical to this one
+                a first order integrator ready to use
         
         
         """
         ...
+    @typing.overload
+    def buildIntegrator(self, orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractIntegrator: ...
+
+class JacobianPropagatorConverter(AbstractPropagatorConverter):
+    """
+    public class JacobianPropagatorConverter extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorConverter`
+    
+        Propagator converter using the real Jacobian.
+    
+        Since:
+            6.0
+    """
+    def __init__(self, numericalPropagatorBuilder: 'NumericalPropagatorBuilder', double: float, int: int): ...
 
 class NumericalPropagatorBuilder(AbstractPropagatorBuilder):
     """
@@ -1323,6 +1277,19 @@ class NumericalPropagatorBuilder(AbstractPropagatorBuilder):
                 model (:class:`~org.orekit.forces.ForceModel`): perturbing :class:`~org.orekit.forces.ForceModel` to add
         
         
+        """
+        ...
+    def addImpulseManeuver(self, impulseManeuver: org.orekit.forces.maneuvers.ImpulseManeuver) -> None:
+        """
+            Add impulse maneuver.
+        
+            Parameters:
+                impulseManeuver (:class:`~org.orekit.forces.maneuvers.ImpulseManeuver`): impulse maneuver
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.BatchLSModel: ...
@@ -1340,10 +1307,21 @@ class NumericalPropagatorBuilder(AbstractPropagatorBuilder):
                 an initialized propagator
         
         
+        """
+        ...
+    def clearImpulseManeuvers(self) -> None:
+        """
+            Remove all impulse maneuvers.
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def copy(self) -> 'NumericalPropagatorBuilder':
         """
+            Deprecated.
             Create a copy of a NumericalPropagatorBuilder object.
         
             Returns:
@@ -1366,48 +1344,57 @@ class NumericalPropagatorBuilder(AbstractPropagatorBuilder):
         
         """
         ...
-    def getMass(self) -> float:
-        """
-            Get the mass.
-        
-            Returns:
-                the mass
-        
-            Since:
-                9.2
-        
-        
-        """
-        ...
-    def setMass(self, double: float) -> None:
-        """
-            Set the initial mass.
-        
-            Parameters:
-                mass (double): the mass (kg)
-        
-        
-        """
-        ...
 
-class TLEPropagatorBuilder(AbstractPropagatorBuilder):
+_AbstractLimitedVariableStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractLimitedVariableStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class AbstractLimitedVariableStepFieldIntegratorBuilder(AbstractVariableStepFieldIntegratorBuilder[_AbstractLimitedVariableStepFieldIntegratorBuilder__T], typing.Generic[_AbstractLimitedVariableStepFieldIntegratorBuilder__T]):
+    """
+    public abstract class AbstractLimitedVariableStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepFieldIntegratorBuilder`<T>
+    
+        Abstract class for integrator using a limited number of variable steps.
+    """
+    ...
+
+class BrouwerLyddanePropagatorBuilder(AbstractAnalyticalPropagatorBuilder):
     """
-    public class TLEPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder`
+    public class BrouwerLyddanePropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractAnalyticalPropagatorBuilder`
     
-        Builder for TLEPropagator.
+        Builder for Brouwer-Lyddane propagator.
+    
+        By default, Brouwer-Lyddane model considers only the perturbations due to zonal harmonics. However, for low Earth
+        orbits, the magnitude of the perturbative acceleration due to atmospheric drag can be significant. Warren Phipps' 1992
+        thesis considered the atmospheric drag by time derivatives of the *mean* mean anomaly using the catch-all coefficient
+        M2. Usually, M2 is adjusted during an orbit determination process and it represents the combination of all unmodeled
+        secular along-track effects (i.e. not just the atmospheric drag). The behavior of M2 is closed to the
+        :meth:`~org.orekit.propagation.analytical.tle.TLE.getBStar` parameter for the TLE. If the value of M2 is equal to
+        :meth:`~org.orekit.propagation.analytical.BrouwerLyddanePropagator.M2`, the along-track secular effects are not
+        considered in the dynamical model. Typical values for M2 are not known. It depends on the orbit type. However, the value
+        of M2 must be very small (e.g. between 1.0e-14 and 1.0e-15). The unit of M2 is rad/s².
+    
+        To estimate the M2 parameter, it is necessary to call the
+        :meth:`~org.orekit.propagation.conversion.AbstractPropagatorBuilder.getPropagationParametersDrivers` method as follow:
+    
+        .. code-block: java
+        
+          for (ParameterDriver driver : builder.getPropagationParametersDrivers().getDrivers()) {
+             if (BrouwerLyddanePropagator.M2_NAME.equals(driver.getName())) {
+                driver.setSelected(true);
+             }
+          }
+         
     
         Since:
-            6.0
+            11.1
     """
     @typing.overload
-    def __init__(self, tLE: org.orekit.propagation.analytical.tle.TLE, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, dataContext: org.orekit.data.DataContext, tleGenerationAlgorithm: org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm): ...
+    def __init__(self, orbit: org.orekit.orbits.Orbit, double: float, double2: float, tideSystem: org.orekit.forces.gravity.potential.TideSystem, double3: float, double4: float, double5: float, double6: float, orbitType: org.orekit.orbits.OrbitType, positionAngleType: org.orekit.orbits.PositionAngleType, double7: float, double8: float): ...
     @typing.overload
-    def __init__(self, tLE: org.orekit.propagation.analytical.tle.TLE, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, tleGenerationAlgorithm: org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm): ...
-    def buildLeastSquaresModel(self, propagatorBuilderArray: typing.Union[typing.List[PropagatorBuilder], jpype.JArray], list: java.util.List[org.orekit.estimation.measurements.ObservedMeasurement[typing.Any]], parameterDriversList: org.orekit.utils.ParameterDriversList, modelObserver: typing.Union[org.orekit.estimation.leastsquares.ModelObserver, typing.Callable]) -> org.orekit.estimation.leastsquares.AbstractBatchLSModel: ...
+    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, double2: float): ...
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider, double2: float): ...
     @typing.overload
     def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
     @typing.overload
-    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.analytical.tle.TLEPropagator:
+    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.analytical.BrouwerLyddanePropagator:
         """
             Build a propagator.
         
@@ -1420,8 +1407,9 @@ class TLEPropagatorBuilder(AbstractPropagatorBuilder):
         
         """
         ...
-    def copy(self) -> 'TLEPropagatorBuilder':
+    def copy(self) -> 'BrouwerLyddanePropagatorBuilder':
         """
+            Deprecated.
             Create a new instance identical to this one.
         
             Returns:
@@ -1430,26 +1418,23 @@ class TLEPropagatorBuilder(AbstractPropagatorBuilder):
         
         """
         ...
-    def getTemplateTLE(self) -> org.orekit.propagation.analytical.tle.TLE:
+    def getM2Value(self) -> float:
         """
-            Getter for the template TLE.
+            Get the value of the M2 parameter.
+        
+            M2 represents the combination of all unmodeled secular along-track effects (e.g. drag). It is usually fitted during an
+            orbit determination.
         
             Returns:
-                the template TLE
+                the value of the M2 parameter
+        
+            Since:
+                12.2
         
         
         """
         ...
 
-_AbstractLimitedVariableStepFieldIntegratorBuilder__T = typing.TypeVar('_AbstractLimitedVariableStepFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class AbstractLimitedVariableStepFieldIntegratorBuilder(AbstractVariableStepFieldIntegratorBuilder[_AbstractLimitedVariableStepFieldIntegratorBuilder__T], typing.Generic[_AbstractLimitedVariableStepFieldIntegratorBuilder__T]):
-    """
-    public abstract class AbstractLimitedVariableStepFieldIntegratorBuilder<T extends :class:`~org.orekit.propagation.conversion.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.conversion.AbstractVariableStepFieldIntegratorBuilder`<T>
-    
-        Abstract class for integrator using a limited number of variable steps.
-    """
-    ...
-
 _ClassicalRungeKuttaFieldIntegratorBuilder__T = typing.TypeVar('_ClassicalRungeKuttaFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class ClassicalRungeKuttaFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_ClassicalRungeKuttaFieldIntegratorBuilder__T], typing.Generic[_ClassicalRungeKuttaFieldIntegratorBuilder__T]):
     """
@@ -1465,6 +1450,8 @@ class ClassicalRungeKuttaFieldIntegratorBuilder(AbstractFixedStepFieldIntegrator
     @typing.overload
     def __init__(self, t: _ClassicalRungeKuttaFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_ClassicalRungeKuttaFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_ClassicalRungeKuttaFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_ClassicalRungeKuttaFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_ClassicalRungeKuttaFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_ClassicalRungeKuttaFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_ClassicalRungeKuttaFieldIntegratorBuilder__T]: ...
@@ -1479,8 +1466,13 @@ class DormandPrince54FieldIntegratorBuilder(AbstractVariableStepFieldIntegratorB
         Since:
             12.0
     """
+    @typing.overload
     def __init__(self, double: float, double2: float, double3: float): ...
     @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_DormandPrince54FieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince54FieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_DormandPrince54FieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince54FieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_DormandPrince54FieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince54FieldIntegratorBuilder__T]: ...
@@ -1495,12 +1487,60 @@ class DormandPrince853FieldIntegratorBuilder(AbstractVariableStepFieldIntegrator
         Since:
             12.0
     """
+    @typing.overload
     def __init__(self, double: float, double2: float, double3: float): ...
     @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_DormandPrince853FieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince853FieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_DormandPrince853FieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince853FieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_DormandPrince853FieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_DormandPrince853FieldIntegratorBuilder__T]: ...
 
+class EcksteinHechlerPropagatorBuilder(AbstractAnalyticalPropagatorBuilder):
+    """
+    public class EcksteinHechlerPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractAnalyticalPropagatorBuilder`
+    
+        Builder for Eckstein-Hechler propagator.
+    
+        Since:
+            6.0
+    """
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, double: float, double2: float, tideSystem: org.orekit.forces.gravity.potential.TideSystem, double3: float, double4: float, double5: float, double6: float, double7: float, orbitType: org.orekit.orbits.OrbitType, positionAngleType: org.orekit.orbits.PositionAngleType, double8: float): ...
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float): ...
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
+    @typing.overload
+    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    @typing.overload
+    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.Propagator:
+        """
+            Build a propagator.
+        
+            Parameters:
+                normalizedParameters (double[]): normalized values for the selected parameters
+        
+            Returns:
+                an initialized propagator
+        
+        
+        """
+        ...
+    def copy(self) -> 'EcksteinHechlerPropagatorBuilder':
+        """
+            Deprecated.
+            Create a new instance identical to this one.
+        
+            Returns:
+                new instance identical to this one
+        
+        
+        """
+        ...
+
 _EulerFieldIntegratorBuilder__T = typing.TypeVar('_EulerFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class EulerFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_EulerFieldIntegratorBuilder__T], typing.Generic[_EulerFieldIntegratorBuilder__T]):
     """
@@ -1516,6 +1556,8 @@ class EulerFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_Euler
     @typing.overload
     def __init__(self, t: _EulerFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_EulerFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_EulerFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_EulerFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_EulerFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_EulerFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_EulerFieldIntegratorBuilder__T]: ...
@@ -1535,6 +1577,8 @@ class GillFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_GillFi
     @typing.overload
     def __init__(self, t: _GillFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_GillFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_GillFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_GillFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_GillFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_GillFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_GillFieldIntegratorBuilder__T]: ...
@@ -1549,12 +1593,58 @@ class HighamHall54FieldIntegratorBuilder(AbstractVariableStepFieldIntegratorBuil
         Since:
             12.0
     """
+    @typing.overload
     def __init__(self, double: float, double2: float, double3: float): ...
     @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_HighamHall54FieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_HighamHall54FieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_HighamHall54FieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_HighamHall54FieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_HighamHall54FieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_HighamHall54FieldIntegratorBuilder__T]: ...
 
+class KeplerianPropagatorBuilder(AbstractAnalyticalPropagatorBuilder):
+    """
+    public class KeplerianPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractAnalyticalPropagatorBuilder`
+    
+        Builder for Keplerian propagator.
+    
+        Since:
+            6.0
+    """
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, positionAngleType: org.orekit.orbits.PositionAngleType, double: float): ...
+    @typing.overload
+    def __init__(self, orbit: org.orekit.orbits.Orbit, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
+    @typing.overload
+    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    @typing.overload
+    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.Propagator:
+        """
+            Build a propagator.
+        
+            Parameters:
+                normalizedParameters (double[]): normalized values for the selected parameters
+        
+            Returns:
+                an initialized propagator
+        
+        
+        """
+        ...
+    def copy(self) -> 'KeplerianPropagatorBuilder':
+        """
+            Deprecated.
+            Create a new instance identical to this one.
+        
+            Returns:
+                new instance identical to this one
+        
+        
+        """
+        ...
+
 _LutherFieldIntegratorBuilder__T = typing.TypeVar('_LutherFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class LutherFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_LutherFieldIntegratorBuilder__T], typing.Generic[_LutherFieldIntegratorBuilder__T]):
     """
@@ -1570,6 +1660,8 @@ class LutherFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_Luth
     @typing.overload
     def __init__(self, t: _LutherFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_LutherFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_LutherFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_LutherFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_LutherFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_LutherFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_LutherFieldIntegratorBuilder__T]: ...
@@ -1589,10 +1681,65 @@ class MidpointFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_Mi
     @typing.overload
     def __init__(self, t: _MidpointFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_MidpointFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_MidpointFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_MidpointFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_MidpointFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_MidpointFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_MidpointFieldIntegratorBuilder__T]: ...
 
+class TLEPropagatorBuilder(AbstractAnalyticalPropagatorBuilder):
+    """
+    public class TLEPropagatorBuilder extends :class:`~org.orekit.propagation.conversion.AbstractAnalyticalPropagatorBuilder`
+    
+        Builder for TLEPropagator.
+    
+        Since:
+            6.0
+    """
+    @typing.overload
+    def __init__(self, tLE: org.orekit.propagation.analytical.tle.TLE, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, dataContext: org.orekit.data.DataContext, tleGenerationAlgorithm: org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm): ...
+    @typing.overload
+    def __init__(self, tLE: org.orekit.propagation.analytical.tle.TLE, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, dataContext: org.orekit.data.DataContext, tleGenerationAlgorithm: org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm, attitudeProvider: org.orekit.attitudes.AttitudeProvider): ...
+    @typing.overload
+    def __init__(self, tLE: org.orekit.propagation.analytical.tle.TLE, positionAngleType: org.orekit.orbits.PositionAngleType, double: float, tleGenerationAlgorithm: org.orekit.propagation.analytical.tle.generation.TleGenerationAlgorithm): ...
+    @typing.overload
+    def buildPropagator(self) -> org.orekit.propagation.Propagator: ...
+    @typing.overload
+    def buildPropagator(self, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> org.orekit.propagation.analytical.tle.TLEPropagator:
+        """
+            Build a propagator.
+        
+            Parameters:
+                normalizedParameters (double[]): normalized values for the selected parameters
+        
+            Returns:
+                an initialized propagator
+        
+        
+        """
+        ...
+    def copy(self) -> 'TLEPropagatorBuilder':
+        """
+            Deprecated.
+            Create a new instance identical to this one.
+        
+            Returns:
+                new instance identical to this one
+        
+        
+        """
+        ...
+    def getTemplateTLE(self) -> org.orekit.propagation.analytical.tle.TLE:
+        """
+            Getter for the template TLE.
+        
+            Returns:
+                the template TLE
+        
+        
+        """
+        ...
+
 _ThreeEighthesFieldIntegratorBuilder__T = typing.TypeVar('_ThreeEighthesFieldIntegratorBuilder__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class ThreeEighthesFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilder[_ThreeEighthesFieldIntegratorBuilder__T], typing.Generic[_ThreeEighthesFieldIntegratorBuilder__T]):
     """
@@ -1608,6 +1755,8 @@ class ThreeEighthesFieldIntegratorBuilder(AbstractFixedStepFieldIntegratorBuilde
     @typing.overload
     def __init__(self, t: _ThreeEighthesFieldIntegratorBuilder__T): ...
     @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_ThreeEighthesFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_ThreeEighthesFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_ThreeEighthesFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_ThreeEighthesFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_ThreeEighthesFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_ThreeEighthesFieldIntegratorBuilder__T]: ...
@@ -1622,8 +1771,13 @@ class AdamsBashforthFieldIntegratorBuilder(AbstractLimitedVariableStepFieldInteg
         Since:
             12.0
     """
+    @typing.overload
     def __init__(self, int: int, double: float, double2: float, double3: float): ...
     @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_AdamsBashforthFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsBashforthFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_AdamsBashforthFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsBashforthFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_AdamsBashforthFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsBashforthFieldIntegratorBuilder__T]: ...
@@ -1638,8 +1792,13 @@ class AdamsMoultonFieldIntegratorBuilder(AbstractLimitedVariableStepFieldIntegra
         Since:
             12.0
     """
+    @typing.overload
     def __init__(self, int: int, double: float, double2: float, double3: float): ...
     @typing.overload
+    def __init__(self, int: int, double: float, double2: float, double3: float, double4: float): ...
+    @typing.overload
+    def buildIntegrator(self, fieldAbsolutePVCoordinates: org.orekit.utils.FieldAbsolutePVCoordinates[_AdamsMoultonFieldIntegratorBuilder__T]) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsMoultonFieldIntegratorBuilder__T]: ...
+    @typing.overload
     def buildIntegrator(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_AdamsMoultonFieldIntegratorBuilder__T], orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsMoultonFieldIntegratorBuilder__T]: ...
     @typing.overload
     def buildIntegrator(self, field: org.hipparchus.Field[_AdamsMoultonFieldIntegratorBuilder__T], orbit: org.orekit.orbits.Orbit, orbitType: org.orekit.orbits.OrbitType) -> org.hipparchus.ode.AbstractFieldIntegrator[_AdamsMoultonFieldIntegratorBuilder__T]: ...
@@ -1648,12 +1807,14 @@ class AdamsMoultonFieldIntegratorBuilder(AbstractLimitedVariableStepFieldIntegra
 class __module_protocol__(Protocol):
     # A module protocol which reflects the result of ``jp.JPackage("org.orekit.propagation.conversion")``.
 
+    AbstractAnalyticalPropagatorBuilder: typing.Type[AbstractAnalyticalPropagatorBuilder]
     AbstractFieldIntegratorBuilder: typing.Type[AbstractFieldIntegratorBuilder]
     AbstractFixedStepFieldIntegratorBuilder: typing.Type[AbstractFixedStepFieldIntegratorBuilder]
     AbstractLimitedVariableStepFieldIntegratorBuilder: typing.Type[AbstractLimitedVariableStepFieldIntegratorBuilder]
     AbstractPropagatorBuilder: typing.Type[AbstractPropagatorBuilder]
     AbstractPropagatorConverter: typing.Type[AbstractPropagatorConverter]
     AbstractVariableStepFieldIntegratorBuilder: typing.Type[AbstractVariableStepFieldIntegratorBuilder]
+    AbstractVariableStepIntegratorBuilder: typing.Type[AbstractVariableStepIntegratorBuilder]
     AdamsBashforthFieldIntegratorBuilder: typing.Type[AdamsBashforthFieldIntegratorBuilder]
     AdamsBashforthIntegratorBuilder: typing.Type[AdamsBashforthIntegratorBuilder]
     AdamsMoultonFieldIntegratorBuilder: typing.Type[AdamsMoultonFieldIntegratorBuilder]
diff --git a/org-stubs/orekit/propagation/events/__init__.pyi b/org-stubs/orekit/propagation/events/__init__.pyi
index 0a99b97b1f2d3cc78714c03eeb7a4f482df8d097..76c476c7a5dc360530a0ca34c2312ee8458c1774 100644
--- a/org-stubs/orekit/propagation/events/__init__.pyi
+++ b/org-stubs/orekit/propagation/events/__init__.pyi
@@ -97,6 +97,97 @@ class EnablingPredicate:
         """
         ...
 
+class EventDetectionSettings:
+    """
+    public class EventDetectionSettings extends :class:`~org.orekit.propagation.events.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Class containing parameters for event detection.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.events.EventDetector`
+    """
+    DEFAULT_MAXCHECK: typing.ClassVar[float] = ...
+    """
+    public static final double DEFAULT_MAXCHECK
+    
+        Default maximum checking interval (s).
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    DEFAULT_THRESHOLD: typing.ClassVar[float] = ...
+    """
+    public static final double DEFAULT_THRESHOLD
+    
+        Default convergence threshold (s).
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    DEFAULT_MAX_ITER: typing.ClassVar[int] = ...
+    """
+    public static final int DEFAULT_MAX_ITER
+    
+        Default maximum number of iterations in the event time search.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    @typing.overload
+    def __init__(self, double: float, double2: float, int: int): ...
+    @typing.overload
+    def __init__(self, adaptableInterval: typing.Union[AdaptableInterval, typing.Callable], double: float, int: int): ...
+    @staticmethod
+    def getDefaultEventDetectionSettings() -> 'EventDetectionSettings':
+        """
+            Returns default settings for event detections.
+        
+            Returns:
+                default settings
+        
+        
+        """
+        ...
+    def getMaxCheckInterval(self) -> AdaptableInterval:
+        """
+            Getter for adaptable interval.
+        
+            Returns:
+                adaptable interval
+        
+        
+        """
+        ...
+    def getMaxIterationCount(self) -> int:
+        """
+            Getter for max iter.
+        
+            Returns:
+                max iter
+        
+        
+        """
+        ...
+    def getThreshold(self) -> float:
+        """
+            Getter for threshold.
+        
+            Returns:
+                threshold
+        
+        
+        """
+        ...
+
 class EventDetector:
     """
     public interface EventDetector
@@ -130,6 +221,19 @@ class EventDetector:
         (logging it, performing some processing, ignore it ...). The return value of the method will be used by the propagator
         to stop or resume propagation, possibly changing the state vector.
     """
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
+        """
+            This method finalizes the event detector's job.
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
@@ -142,6 +246,19 @@ class EventDetector:
                 value of the switching function
         
         
+        """
+        ...
+    def getDetectionSettings(self) -> EventDetectionSettings:
+        """
+            Getter for the settings.
+        
+            Returns:
+                detection settings
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def getHandler(self) -> org.orekit.propagation.events.handlers.EventHandler:
@@ -275,6 +392,19 @@ class EventState(typing.Generic[_EventState__T]):
         """
         ...
     def evaluateStep(self, orekitStepInterpolator: org.orekit.propagation.sampling.OrekitStepInterpolator) -> bool: ...
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
+        """
+            This method finalizes the event detector's job.
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     def getEventDate(self) -> org.orekit.time.AbsoluteDate:
         """
             Get the occurrence time of the event triggered in the current step.
@@ -450,6 +580,91 @@ class FieldEnablingPredicate(typing.Generic[_FieldEnablingPredicate__T]):
     """
     def eventIsEnabled(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEnablingPredicate__T], fieldEventDetector: 'FieldEventDetector'[_FieldEnablingPredicate__T], t: _FieldEnablingPredicate__T) -> bool: ...
 
+_FieldEventDetectionSettings__T = typing.TypeVar('_FieldEventDetectionSettings__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldEventDetectionSettings(typing.Generic[_FieldEventDetectionSettings__T]):
+    """
+    public class FieldEventDetectionSettings<T extends :class:`~org.orekit.propagation.events.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.events.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Class containing parameters for event detection.
+    
+        Since:
+            12.2
+    
+        Also see:
+            :class:`~org.orekit.propagation.events.EventDetectionSettings`,
+            :class:`~org.orekit.propagation.events.FieldEventDetector`
+    """
+    DEFAULT_MAXCHECK: typing.ClassVar[float] = ...
+    """
+    public static final double DEFAULT_MAXCHECK
+    
+        Default maximum checking interval (s).
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    DEFAULT_THRESHOLD: typing.ClassVar[float] = ...
+    """
+    public static final double DEFAULT_THRESHOLD
+    
+        Default convergence threshold (s).
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    DEFAULT_MAX_ITER: typing.ClassVar[int] = ...
+    """
+    public static final int DEFAULT_MAX_ITER
+    
+        Default maximum number of iterations in the event time search.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    @typing.overload
+    def __init__(self, double: float, t: _FieldEventDetectionSettings__T, int: int): ...
+    @typing.overload
+    def __init__(self, field: org.hipparchus.Field[_FieldEventDetectionSettings__T], eventDetectionSettings: EventDetectionSettings): ...
+    @typing.overload
+    def __init__(self, fieldAdaptableInterval: typing.Union[FieldAdaptableInterval[_FieldEventDetectionSettings__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement]], float]], t: _FieldEventDetectionSettings__T, int: int): ...
+    def getMaxCheckInterval(self) -> FieldAdaptableInterval[_FieldEventDetectionSettings__T]: ...
+    def getMaxIterationCount(self) -> int:
+        """
+            Getter for max iter.
+        
+            Returns:
+                max iter
+        
+        
+        """
+        ...
+    def getThreshold(self) -> _FieldEventDetectionSettings__T:
+        """
+            Getter for threshold.
+        
+            Returns:
+                threshold
+        
+        
+        """
+        ...
+    def toEventDetectionSettings(self) -> EventDetectionSettings:
+        """
+            Create a non-Field equivalent object.
+        
+            Returns:
+                event detection settings
+        
+        
+        """
+        ...
+
 _FieldEventDetector__T = typing.TypeVar('_FieldEventDetector__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class FieldEventDetector(typing.Generic[_FieldEventDetector__T]):
     """
@@ -484,7 +699,9 @@ class FieldEventDetector(typing.Generic[_FieldEventDetector__T]):
         with the event (logging it, performing some processing, ignore it ...). The return value of the method will be used by
         the propagator to stop or resume propagation, possibly changing the state vector.
     """
+    def finish(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventDetector__T]) -> None: ...
     def g(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventDetector__T]) -> _FieldEventDetector__T: ...
+    def getDetectionSettings(self) -> FieldEventDetectionSettings[_FieldEventDetector__T]: ...
     def getHandler(self) -> org.orekit.propagation.events.handlers.FieldEventHandler[_FieldEventDetector__T]: ...
     def getMaxCheckInterval(self) -> FieldAdaptableInterval[_FieldEventDetector__T]: ...
     def getMaxIterationCount(self) -> int:
@@ -531,6 +748,7 @@ class FieldEventState(typing.Generic[_FieldEventState__D, _FieldEventState__T]):
     def __init__(self, d: _FieldEventState__D): ...
     def doEvent(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventState__T]) -> 'FieldEventState.EventOccurrence'[_FieldEventState__T]: ...
     def evaluateStep(self, fieldOrekitStepInterpolator: org.orekit.propagation.sampling.FieldOrekitStepInterpolator[_FieldEventState__T]) -> bool: ...
+    def finish(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventState__T]) -> None: ...
     def getEventDate(self) -> org.orekit.time.FieldAbsoluteDate[_FieldEventState__T]: ...
     def getEventDetector(self) -> _FieldEventState__D:
         """
@@ -768,20 +986,16 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
     
     
     """
-    def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
+    def getDetectionSettings(self) -> EventDetectionSettings:
         """
-            Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
-            the integrator will need to find its roots to locate the events.
+            Getter for the settings.
         
             Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
+                :meth:`~org.orekit.propagation.events.EventDetector.getDetectionSettings` in
                 interface :class:`~org.orekit.propagation.events.EventDetector`
         
-            Parameters:
-                s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
-        
             Returns:
-                value of the switching function
+                detection settings
         
         
         """
@@ -876,11 +1090,29 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
                 7.2
         
         
+        """
+        ...
+    def withDetectionSettings(self, eventDetectionSettings: EventDetectionSettings) -> _AbstractDetector__T:
+        """
+            Set up the event detection settings.
+        
+            This will override settings previously configured.
+        
+            Parameters:
+                newSettings (:class:`~org.orekit.propagation.events.EventDetectionSettings`): new event detection settings
+        
+            Returns:
+                a new detector with updated configuration (the instance is not changed)
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def withHandler(self, eventHandler: typing.Union[org.orekit.propagation.events.handlers.EventHandler, typing.Callable]) -> _AbstractDetector__T:
         """
-            Setup the event handler to call at event occurrences.
+            Set up the event handler to call at event occurrences.
         
             This will override a handler if it has been configured previously.
         
@@ -899,7 +1131,7 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
     @typing.overload
     def withMaxCheck(self, double: float) -> _AbstractDetector__T:
         """
-            Setup the maximum checking interval.
+            Set up the maximum checking interval.
         
             This will override a maximum checking interval if it has been configured previously.
         
@@ -912,7 +1144,7 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
             Since:
                 6.1
         
-            Setup the maximum checking interval.
+            Set up the maximum checking interval.
         
             This will override a maximum checking interval if it has been configured previously.
         
@@ -932,7 +1164,7 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
     def withMaxCheck(self, adaptableInterval: typing.Union[AdaptableInterval, typing.Callable]) -> _AbstractDetector__T: ...
     def withMaxIter(self, int: int) -> _AbstractDetector__T:
         """
-            Setup the maximum number of iterations in the event time search.
+            Set up the maximum number of iterations in the event time search.
         
             This will override a number of iterations if it has been configured previously.
         
@@ -950,7 +1182,7 @@ class AbstractDetector(EventDetector, typing.Generic[_AbstractDetector__T]):
         ...
     def withThreshold(self, double: float) -> _AbstractDetector__T:
         """
-            Setup the convergence threshold.
+            Set up the convergence threshold.
         
             This will override a convergence threshold if it has been configured previously.
         
@@ -981,6 +1213,20 @@ class AdapterDetector(EventDetector):
             9.3
     """
     def __init__(self, eventDetector: EventDetector): ...
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
+        """
+            This method finalizes the event detector's job.
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.events.EventDetector.finish` in
+                interface :class:`~org.orekit.propagation.events.EventDetector`
+        
+            Parameters:
+                state (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+        
+        
+        """
+        ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
@@ -997,6 +1243,20 @@ class AdapterDetector(EventDetector):
                 value of the switching function
         
         
+        """
+        ...
+    def getDetectionSettings(self) -> EventDetectionSettings:
+        """
+            Getter for the settings.
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.events.EventDetector.getDetectionSettings` in
+                interface :class:`~org.orekit.propagation.events.EventDetector`
+        
+            Returns:
+                detection settings
+        
+        
         """
         ...
     def getDetector(self) -> EventDetector:
@@ -1123,14 +1383,14 @@ class FieldAbstractDetector(FieldEventDetector[_FieldAbstractDetector__T], typin
     """
     public static final int DEFAULT_MAX_ITER
     
-        Default cmaximum number of iterations in the event time search.
+        Default maximum number of iterations in the event time search.
     
         Also see:
             :meth:`~constant`
     
     
     """
-    def g(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldAbstractDetector__T]) -> _FieldAbstractDetector__T: ...
+    def getDetectionSettings(self) -> FieldEventDetectionSettings[_FieldAbstractDetector__T]: ...
     def getHandler(self) -> org.orekit.propagation.events.handlers.FieldEventHandler[_FieldAbstractDetector__T]: ...
     def getMaxCheckInterval(self) -> FieldAdaptableInterval[_FieldAbstractDetector__T]: ...
     def getMaxIterationCount(self) -> int:
@@ -1175,11 +1435,12 @@ class FieldAbstractDetector(FieldEventDetector[_FieldAbstractDetector__T], typin
         
         """
         ...
+    def withDetectionSettings(self, fieldEventDetectionSettings: FieldEventDetectionSettings[_FieldAbstractDetector__T]) -> _FieldAbstractDetector__D: ...
     def withHandler(self, fieldEventHandler: typing.Union[org.orekit.propagation.events.handlers.FieldEventHandler[_FieldAbstractDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement], FieldEventDetector[org.hipparchus.CalculusFieldElement], bool], org.hipparchus.ode.events.Action]]) -> _FieldAbstractDetector__D: ...
     @typing.overload
     def withMaxCheck(self, double: float) -> _FieldAbstractDetector__D:
         """
-            Setup the maximum checking interval.
+            Set up the maximum checking interval.
         
             This will override a maximum checking interval if it has been configured previously.
         
@@ -1194,7 +1455,7 @@ class FieldAbstractDetector(FieldEventDetector[_FieldAbstractDetector__T], typin
         
         public :class:`~org.orekit.propagation.events.FieldAbstractDetector` withMaxCheck (:class:`~org.orekit.propagation.events.FieldAdaptableInterval`<:class:`~org.orekit.propagation.events.FieldAbstractDetector`> newMaxCheck)
         
-            Setup the maximum checking interval.
+            Set up the maximum checking interval.
         
             This will override a maximum checking interval if it has been configured previously.
         
@@ -1214,7 +1475,7 @@ class FieldAbstractDetector(FieldEventDetector[_FieldAbstractDetector__T], typin
     def withMaxCheck(self, fieldAdaptableInterval: typing.Union[FieldAdaptableInterval[_FieldAbstractDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement]], float]]) -> _FieldAbstractDetector__D: ...
     def withMaxIter(self, int: int) -> _FieldAbstractDetector__D:
         """
-            Setup the maximum number of iterations in the event time search.
+            Set up the maximum number of iterations in the event time search.
         
             This will override a number of iterations if it has been configured previously.
         
@@ -1232,7 +1493,7 @@ class FieldAbstractDetector(FieldEventDetector[_FieldAbstractDetector__T], typin
         ...
     def withThreshold(self, t: _FieldAbstractDetector__T) -> _FieldAbstractDetector__D:
         """
-            Setup the convergence threshold.
+            Set up the convergence threshold.
         
             This will override a convergence threshold if it has been configured previously.
         
@@ -1264,7 +1525,9 @@ class FieldAdapterDetector(FieldEventDetector[_FieldAdapterDetector__T], typing.
             12.0
     """
     def __init__(self, fieldEventDetector: FieldEventDetector[_FieldAdapterDetector__T]): ...
+    def finish(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldAdapterDetector__T]) -> None: ...
     def g(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldAdapterDetector__T]) -> _FieldAdapterDetector__T: ...
+    def getDetectionSettings(self) -> FieldEventDetectionSettings[_FieldAdapterDetector__T]: ...
     def getDetector(self) -> FieldEventDetector[_FieldAdapterDetector__T]: ...
     def getHandler(self) -> org.orekit.propagation.events.handlers.FieldEventHandler[_FieldAdapterDetector__T]: ...
     def getMaxCheckInterval(self) -> FieldAdaptableInterval[_FieldAdapterDetector__T]: ...
@@ -1328,14 +1591,6 @@ class AlignmentDetector(AbstractDetector['AlignmentDetector']):
             Compute the value of the switching function. This function measures the difference between the alignment angle and the
             angle between the satellite position and the body position projection in the orbital plane.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1395,14 +1650,6 @@ class AltitudeDetector(AbstractDetector['AltitudeDetector']):
             Compute the value of the switching function. This function measures the difference between the current altitude and the
             threshold altitude.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1469,14 +1716,6 @@ class AngularSeparationDetector(AbstractDetector['AngularSeparationDetector']):
             associated with a :class:`~org.orekit.propagation.events.EventEnablingPredicateFilter` where the
             :class:`~org.orekit.propagation.events.EnablingPredicate` is based on elevation.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1552,14 +1791,6 @@ class AngularSeparationFromSatelliteDetector(AbstractDetector['AngularSeparation
             :class:`~org.orekit.propagation.events.EventEnablingPredicateFilter` where the
             :class:`~org.orekit.propagation.events.EnablingPredicate` is based on eclipse conditions.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1635,14 +1866,6 @@ class ApsideDetector(AbstractDetector['ApsideDetector']):
             Compute the value of the switching function. This function computes the dot product of the 2 vectors :
             position.velocity.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1717,14 +1940,6 @@ class BetaAngleDetector(AbstractDetector['BetaAngleDetector']):
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -1901,18 +2116,10 @@ class BooleanDetector(AbstractDetector['BooleanDetector']):
     def andCombine(*eventDetector: EventDetector) -> 'BooleanDetector': ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
-            Description copied from class: :meth:`~org.orekit.propagation.events.AbstractDetector.g`
+            Description copied from interface: :meth:`~org.orekit.propagation.events.EventDetector.g`
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2056,20 +2263,14 @@ class CylindricalShadowEclipseDetector(AbstractDetector['CylindricalShadowEclips
     @typing.overload
     def __init__(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], double: float, adaptableInterval: typing.Union[AdaptableInterval, typing.Callable], double2: float, int: int, eventHandler: typing.Union[org.orekit.propagation.events.handlers.EventHandler, typing.Callable]): ...
     @typing.overload
+    def __init__(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], double: float, eventDetectionSettings: EventDetectionSettings, eventHandler: typing.Union[org.orekit.propagation.events.handlers.EventHandler, typing.Callable]): ...
+    @typing.overload
     def __init__(self, pVCoordinatesProvider: typing.Union[org.orekit.utils.PVCoordinatesProvider, typing.Callable], double: float, eventHandler: typing.Union[org.orekit.propagation.events.handlers.EventHandler, typing.Callable]): ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2167,10 +2368,6 @@ class DateDetector(AbstractDetector['DateDetector'], org.orekit.time.TimeStamped
                 :meth:`~org.orekit.propagation.events.EventDetector.g` in
                 interface :class:`~org.orekit.propagation.events.EventDetector`
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2261,14 +2458,6 @@ class EclipseDetector(AbstractDetector['EclipseDetector']):
             Compute the value of the switching function. This function becomes negative when entering the region of shadow and
             positive when exiting.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2398,14 +2587,6 @@ class ElevationDetector(AbstractDetector['ElevationDetector']):
             Compute the value of the switching function. This function measures the difference between the current elevation (and
             azimuth if necessary) and the reference mask or minimum value.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2556,14 +2737,6 @@ class ElevationExtremumDetector(AbstractDetector['ElevationExtremumDetector']):
         
             The value is the spacecraft elevation first time derivative.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2633,14 +2806,6 @@ class EventEnablingPredicateFilter(AbstractDetector['EventEnablingPredicateFilte
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2714,14 +2879,6 @@ class EventShifter(AbstractDetector['EventShifter']):
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2830,14 +2987,6 @@ class EventSlopeFilter(AbstractDetector['EventSlopeFilter'[_EventSlopeFilter__T]
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -2970,14 +3119,6 @@ class ExtremumApproachDetector(AbstractDetector['ExtremumApproachDetector']):
             The :code:`g` is positive when the primary object is getting further away from the secondary object and is negative when
             it is getting closer to it.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -3262,7 +3403,7 @@ class FieldCylindricalShadowEclipseDetector(FieldAbstractDetector['FieldCylindri
         The so-called g function is negative in eclipse, positive otherwise.
     
         Since:
-            12.1
+            12.
     
         Also see:
             :class:`~org.orekit.propagation.events.FieldEclipseDetector`,
@@ -3271,6 +3412,8 @@ class FieldCylindricalShadowEclipseDetector(FieldAbstractDetector['FieldCylindri
     @typing.overload
     def __init__(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], t: _FieldCylindricalShadowEclipseDetector__T, fieldAdaptableInterval: typing.Union[FieldAdaptableInterval[_FieldCylindricalShadowEclipseDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement]], float]], t2: _FieldCylindricalShadowEclipseDetector__T, int: int, fieldEventHandler: typing.Union[org.orekit.propagation.events.handlers.FieldEventHandler[_FieldCylindricalShadowEclipseDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement], FieldEventDetector[org.hipparchus.CalculusFieldElement], bool], org.hipparchus.ode.events.Action]]): ...
     @typing.overload
+    def __init__(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], t: _FieldCylindricalShadowEclipseDetector__T, fieldEventDetectionSettings: FieldEventDetectionSettings[_FieldCylindricalShadowEclipseDetector__T], fieldEventHandler: typing.Union[org.orekit.propagation.events.handlers.FieldEventHandler[_FieldCylindricalShadowEclipseDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement], FieldEventDetector[org.hipparchus.CalculusFieldElement], bool], org.hipparchus.ode.events.Action]]): ...
+    @typing.overload
     def __init__(self, extendedPositionProvider: typing.Union[org.orekit.utils.ExtendedPositionProvider, typing.Callable], t: _FieldCylindricalShadowEclipseDetector__T, fieldEventHandler: typing.Union[org.orekit.propagation.events.handlers.FieldEventHandler[_FieldCylindricalShadowEclipseDetector__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement], FieldEventDetector[org.hipparchus.CalculusFieldElement], bool], org.hipparchus.ode.events.Action]]): ...
     def g(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldCylindricalShadowEclipseDetector__T]) -> _FieldCylindricalShadowEclipseDetector__T: ...
     def getOccultingBodyRadius(self) -> _FieldCylindricalShadowEclipseDetector__T:
@@ -3978,14 +4121,6 @@ class FieldOfViewDetector(AbstractDetector['FieldOfViewDetector']):
             As per the previous definition, when the target enters the Field Of View, a decreasing event is generated, and when the
             target leaves the Field Of View, an increasing event is generated.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4235,14 +4370,6 @@ class FootprintOverlapDetector(AbstractDetector['FootprintOverlapDetector']):
             As per the previous definition, when the region enters the Field Of View, a decreasing event is generated, and when the
             region leaves the Field Of View, an increasing event is generated.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4310,18 +4437,10 @@ class FunctionalDetector(AbstractDetector['FunctionalDetector']):
     def __init__(self): ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
-            Description copied from class: :meth:`~org.orekit.propagation.events.AbstractDetector.g`
+            Description copied from interface: :meth:`~org.orekit.propagation.events.EventDetector.g`
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4363,14 +4482,6 @@ class GeographicZoneDetector(AbstractDetector['GeographicZoneDetector']):
             The value is the signed distance to boundary, minus the margin. It is positive if the spacecraft is outside of the zone
             and negative if it is inside.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4471,14 +4582,6 @@ class GroundAtNightDetector(AbstractDetector['GroundAtNightDetector']):
         
             This function only depends on date, not on the actual position of the spacecraft.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 state (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4526,14 +4629,6 @@ class GroundFieldOfViewDetector(AbstractDetector['GroundFieldOfViewDetector']):
             As per the previous definition, when the satellite enters the Field Of View, a decreasing event is generated, and when
             the satellite leaves the Field Of View, an increasing event is generated.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4581,14 +4676,6 @@ class HaloXZPlaneCrossingDetector(AbstractDetector['HaloXZPlaneCrossingDetector'
         """
             Compute the value of the detection function.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4644,14 +4731,6 @@ class InterSatDirectViewDetector(AbstractDetector['InterSatDirectViewDetector'])
             intermediate points are above the skimming altitude, meaning satellites can see each other and it is negative when some
             intermediate points (which may be either endpoints) dive below this altitude, meaning satellites cannot see each other.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 state (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4739,14 +4818,6 @@ class LatitudeCrossingDetector(AbstractDetector['LatitudeCrossingDetector']):
             The value is the spacecraft latitude minus the fixed latitude to be crossed. It is positive if the spacecraft is
             northward and negative if it is southward with respect to the fixed latitude.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4798,14 +4869,6 @@ class LatitudeExtremumDetector(AbstractDetector['LatitudeExtremumDetector']):
         
             The value is the spacecraft latitude time derivative.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4848,14 +4911,6 @@ class LatitudeRangeCrossingDetector(AbstractDetector['LatitudeRangeCrossingDetec
             The value is positive if the spacecraft latitude is inside the latitude range. It is positive if the spacecraft is
             northward to lower boundary range and southward to upper boundary range, with respect to the fixed latitude range.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -4922,14 +4977,6 @@ class LongitudeCrossingDetector(AbstractDetector['LongitudeCrossingDetector']):
             eastwards and westwards crossing have to be distinguished, the velocity direction has to be checked instead of looking
             at the :code:`increasing` flag.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5008,14 +5055,6 @@ class LongitudeExtremumDetector(AbstractDetector['LongitudeExtremumDetector']):
         
             The value is the spacecraft longitude time derivative.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5058,14 +5097,6 @@ class LongitudeRangeCrossingDetector(AbstractDetector['LongitudeRangeCrossingDet
             The value is positive if the spacecraft longitude is inside the longitude range. The longitude value is reflected from
             [-PI, +PI] to [0, 2 PI] to ensure continuity.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5133,14 +5164,6 @@ class MagneticFieldDetector(AbstractDetector['MagneticFieldDetector']):
             The returned value is the difference between the field intensity at spacecraft location, taking :code:`atSeaLevel`
             switch into account, and the fixed threshold value.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5188,18 +5211,10 @@ class NegateDetector(AbstractDetector['NegateDetector']):
     def __init__(self, eventDetector: EventDetector): ...
     def g(self, spacecraftState: org.orekit.propagation.SpacecraftState) -> float:
         """
-            Description copied from class: :meth:`~org.orekit.propagation.events.AbstractDetector.g`
+            Description copied from interface: :meth:`~org.orekit.propagation.events.EventDetector.g`
             Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as
             the integrator will need to find its roots to locate the events.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5284,14 +5299,6 @@ class NodeDetector(AbstractDetector['NodeDetector']):
         """
             Compute the value of the switching function. This function computes the Z position in the defined frame.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5391,14 +5398,6 @@ class ParameterDrivenDateIntervalDetector(AbstractDetector['ParameterDrivenDateI
             dates, and negative for dates outside of this interval. Note that if Δt_start - Δt_stop is less than
             ref_stop.durationFrom(ref_start), then the interval degenerates to empty and the function never reaches positive values.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5498,14 +5497,6 @@ class PositionAngleDetector(AbstractDetector['PositionAngleDetector']):
             example, the angle always increase in a Keplerian orbit, but this g function will increase and decrease so it will cross
             the zero value once per orbit, in increasing and decreasing directions on alternate orbits..
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5611,14 +5602,6 @@ class RelativeDistanceDetector(AbstractDetector['RelativeDistanceDetector']):
         """
             The :code:`g` is positive when the relative distance is larger or equal than the threshold, non-positive otherwise.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.events.EventDetector.g` in
-                interface :class:`~org.orekit.propagation.events.EventDetector`
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.events.AbstractDetector.g` in
-                class :class:`~org.orekit.propagation.events.AbstractDetector`
-        
             Parameters:
                 s (:class:`~org.orekit.propagation.SpacecraftState`): the current state information: date, kinematics, attitude
         
@@ -5669,6 +5652,7 @@ class __module_protocol__(Protocol):
     ElevationDetector: typing.Type[ElevationDetector]
     ElevationExtremumDetector: typing.Type[ElevationExtremumDetector]
     EnablingPredicate: typing.Type[EnablingPredicate]
+    EventDetectionSettings: typing.Type[EventDetectionSettings]
     EventDetector: typing.Type[EventDetector]
     EventDetectorsProvider: typing.Type[EventDetectorsProvider]
     EventEnablingPredicateFilter: typing.Type[EventEnablingPredicateFilter]
@@ -5690,6 +5674,7 @@ class __module_protocol__(Protocol):
     FieldElevationDetector: typing.Type[FieldElevationDetector]
     FieldElevationExtremumDetector: typing.Type[FieldElevationExtremumDetector]
     FieldEnablingPredicate: typing.Type[FieldEnablingPredicate]
+    FieldEventDetectionSettings: typing.Type[FieldEventDetectionSettings]
     FieldEventDetector: typing.Type[FieldEventDetector]
     FieldEventEnablingPredicateFilter: typing.Type[FieldEventEnablingPredicateFilter]
     FieldEventSlopeFilter: typing.Type[FieldEventSlopeFilter]
diff --git a/org-stubs/orekit/propagation/events/handlers/__init__.pyi b/org-stubs/orekit/propagation/events/handlers/__init__.pyi
index 4fcd120db100c3b8610aad9c067849898f9d7fa5..6d80ccc79652f6eb7ff9dcc5f3a17e2ec4bf4784 100644
--- a/org-stubs/orekit/propagation/events/handlers/__init__.pyi
+++ b/org-stubs/orekit/propagation/events/handlers/__init__.pyi
@@ -37,6 +37,22 @@ class EventHandler:
                 the Action that the calling detector should pass back to the evaluation system
         
         
+        """
+        ...
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState, eventDetector: org.orekit.propagation.events.EventDetector) -> None:
+        """
+            This method finalizes the event handler's job.
+        
+            The default implementation does nothing
+        
+            Parameters:
+                finalState (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+                detector (:class:`~org.orekit.propagation.events.EventDetector`): event detector related to the event handler
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def init(self, spacecraftState: org.orekit.propagation.SpacecraftState, absoluteDate: org.orekit.time.AbsoluteDate, eventDetector: org.orekit.propagation.events.EventDetector) -> None:
@@ -92,6 +108,7 @@ class FieldEventHandler(typing.Generic[_FieldEventHandler__T]):
             6.1
     """
     def eventOccurred(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventHandler__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldEventHandler__T], boolean: bool) -> org.hipparchus.ode.events.Action: ...
+    def finish(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventHandler__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldEventHandler__T]) -> None: ...
     def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventHandler__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldEventHandler__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldEventHandler__T]) -> None: ...
     def resetState(self, fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldEventHandler__T], fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldEventHandler__T]) -> org.orekit.propagation.FieldSpacecraftState[_FieldEventHandler__T]: ...
 
@@ -200,6 +217,24 @@ class EventMultipleHandler(EventHandler):
                 the Action that the calling detector should pass back to the evaluation system
         
         
+        """
+        ...
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState, eventDetector: org.orekit.propagation.events.EventDetector) -> None:
+        """
+            Description copied from interface: :meth:`~org.orekit.propagation.events.handlers.EventHandler.finish`
+            This method finalizes the event handler's job.
+        
+            The default implementation does nothing
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.events.handlers.EventHandler.finish` in
+                interface :class:`~org.orekit.propagation.events.handlers.EventHandler`
+        
+            Parameters:
+                finalState (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+                detector (:class:`~org.orekit.propagation.events.EventDetector`): event detector related to the event handler
+        
+        
         """
         ...
     def getHandlers(self) -> java.util.List[EventHandler]: ...
@@ -281,6 +316,7 @@ class FieldRecallLastOccurrence(FieldEventHandler[_FieldRecallLastOccurrence__T]
     """
     def __init__(self, fieldEventHandler: typing.Union[FieldEventHandler[_FieldRecallLastOccurrence__T], typing.Callable[[org.orekit.propagation.FieldSpacecraftState[org.hipparchus.CalculusFieldElement], org.orekit.propagation.events.FieldEventDetector[org.hipparchus.CalculusFieldElement], bool], org.hipparchus.ode.events.Action]]): ...
     def eventOccurred(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldRecallLastOccurrence__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldRecallLastOccurrence__T], boolean: bool) -> org.hipparchus.ode.events.Action: ...
+    def finish(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldRecallLastOccurrence__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldRecallLastOccurrence__T]) -> None: ...
     def getLastOccurrence(self) -> org.orekit.time.FieldAbsoluteDate[_FieldRecallLastOccurrence__T]: ...
     def init(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldRecallLastOccurrence__T], fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldRecallLastOccurrence__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldRecallLastOccurrence__T]) -> None: ...
     def resetState(self, fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldRecallLastOccurrence__T], fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldRecallLastOccurrence__T]) -> org.orekit.propagation.FieldSpacecraftState[_FieldRecallLastOccurrence__T]: ...
@@ -321,6 +357,21 @@ class FieldRecordAndContinue(FieldEventHandler[_FieldRecordAndContinue__T], typi
         def isIncreasing(self) -> bool: ...
         def toString(self) -> str: ...
 
+_FieldResetDerivativesOnEvent__T = typing.TypeVar('_FieldResetDerivativesOnEvent__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldResetDerivativesOnEvent(FieldEventHandler[_FieldResetDerivativesOnEvent__T], typing.Generic[_FieldResetDerivativesOnEvent__T]):
+    """
+    public class FieldResetDerivativesOnEvent<T extends :class:`~org.orekit.propagation.events.handlers.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.events.handlers.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.events.handlers.FieldEventHandler`<T>
+    
+        Event handler which will always return
+        :meth:`~org.orekit.propagation.events.handlers.https:.www.hipparchus.org.apidocs.org.hipparchus.ode.events.Action.html?is`
+        as a state.
+    
+        Since:
+            12.2
+    """
+    def __init__(self): ...
+    def eventOccurred(self, fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_FieldResetDerivativesOnEvent__T], fieldEventDetector: org.orekit.propagation.events.FieldEventDetector[_FieldResetDerivativesOnEvent__T], boolean: bool) -> org.hipparchus.ode.events.Action: ...
+
 _FieldStopOnDecreasing__T = typing.TypeVar('_FieldStopOnDecreasing__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
 class FieldStopOnDecreasing(FieldEventHandler[_FieldStopOnDecreasing__T], typing.Generic[_FieldStopOnDecreasing__T]):
     """
@@ -397,6 +448,23 @@ class RecallLastOccurrence(EventHandler):
                 the Action that the calling detector should pass back to the evaluation system
         
         
+        """
+        ...
+    def finish(self, spacecraftState: org.orekit.propagation.SpacecraftState, eventDetector: org.orekit.propagation.events.EventDetector) -> None:
+        """
+            This method finalizes the event handler's job.
+        
+            The default implementation does nothing
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.events.handlers.EventHandler.finish` in
+                interface :class:`~org.orekit.propagation.events.handlers.EventHandler`
+        
+            Parameters:
+                finalState (:class:`~org.orekit.propagation.SpacecraftState`): state at propagation end
+                detector (:class:`~org.orekit.propagation.events.EventDetector`): event detector related to the event handler
+        
+        
         """
         ...
     def getLastOccurrence(self) -> org.orekit.time.AbsoluteDate:
@@ -506,6 +574,40 @@ class RecordAndContinue(EventHandler):
         def isIncreasing(self) -> bool: ...
         def toString(self) -> str: ...
 
+class ResetDerivativesOnEvent(EventHandler):
+    """
+    public class ResetDerivativesOnEvent extends :class:`~org.orekit.propagation.events.handlers.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.events.handlers.EventHandler`
+    
+        Event handler which will always return
+        :meth:`~org.orekit.propagation.events.handlers.https:.www.hipparchus.org.apidocs.org.hipparchus.ode.events.Action.html?is`
+        as a state.
+    
+        Since:
+            12.2
+    """
+    def __init__(self): ...
+    def eventOccurred(self, spacecraftState: org.orekit.propagation.SpacecraftState, eventDetector: org.orekit.propagation.events.EventDetector, boolean: bool) -> org.hipparchus.ode.events.Action:
+        """
+            Specific implementation of the eventOccurred interface.
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.events.handlers.EventHandler.eventOccurred` in
+                interface :class:`~org.orekit.propagation.events.handlers.EventHandler`
+        
+            Parameters:
+                s (:class:`~org.orekit.propagation.SpacecraftState`): SpaceCraft state to be used in the evaluation
+                detector (:class:`~org.orekit.propagation.events.EventDetector`): object with appropriate type that can be used in determining correct return state
+                increasing (boolean): with the event occurred in an "increasing" or "decreasing" slope direction
+        
+            Returns:
+                
+                meth:`~org.orekit.propagation.events.handlers.https:.www.hipparchus.org.apidocs.org.hipparchus.ode.events.Action.html?is`
+                under all circumstances
+        
+        
+        """
+        ...
+
 class StopOnDecreasing(EventHandler):
     """
     public class StopOnDecreasing extends :class:`~org.orekit.propagation.events.handlers.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.events.handlers.EventHandler`
@@ -641,11 +743,13 @@ class __module_protocol__(Protocol):
     FieldEventHandler: typing.Type[FieldEventHandler]
     FieldRecallLastOccurrence: typing.Type[FieldRecallLastOccurrence]
     FieldRecordAndContinue: typing.Type[FieldRecordAndContinue]
+    FieldResetDerivativesOnEvent: typing.Type[FieldResetDerivativesOnEvent]
     FieldStopOnDecreasing: typing.Type[FieldStopOnDecreasing]
     FieldStopOnEvent: typing.Type[FieldStopOnEvent]
     FieldStopOnIncreasing: typing.Type[FieldStopOnIncreasing]
     RecallLastOccurrence: typing.Type[RecallLastOccurrence]
     RecordAndContinue: typing.Type[RecordAndContinue]
+    ResetDerivativesOnEvent: typing.Type[ResetDerivativesOnEvent]
     StopOnDecreasing: typing.Type[StopOnDecreasing]
     StopOnEvent: typing.Type[StopOnEvent]
     StopOnIncreasing: typing.Type[StopOnIncreasing]
diff --git a/org-stubs/orekit/propagation/semianalytical/dsst/forces/__init__.pyi b/org-stubs/orekit/propagation/semianalytical/dsst/forces/__init__.pyi
index fc3ff0c5911e99748d848a3d9bae611149b94f7c..56bbc6f38445407a507fc2614166c84a15a8d6ee 100644
--- a/org-stubs/orekit/propagation/semianalytical/dsst/forces/__init__.pyi
+++ b/org-stubs/orekit/propagation/semianalytical/dsst/forces/__init__.pyi
@@ -328,6 +328,48 @@ class J2SquaredModel:
         
         """
         ...
+    _initializeShortPeriodTerms_1__T = typing.TypeVar('_initializeShortPeriodTerms_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def initializeShortPeriodTerms(self, auxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.AuxiliaryElements, propagationType: org.orekit.propagation.PropagationType, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> java.util.List['ShortPeriodTerms']: ...
+    @typing.overload
+    def initializeShortPeriodTerms(self, fieldAuxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.FieldAuxiliaryElements[_initializeShortPeriodTerms_1__T], propagationType: org.orekit.propagation.PropagationType, tArray: typing.Union[typing.List[_initializeShortPeriodTerms_1__T], jpype.JArray]) -> java.util.List[FieldShortPeriodTerms[_initializeShortPeriodTerms_1__T]]: ...
+    _updateShortPeriodTerms_1__T = typing.TypeVar('_updateShortPeriodTerms_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def updateShortPeriodTerms(self, doubleArray: typing.Union[typing.List[float], jpype.JArray], *spacecraftState: org.orekit.propagation.SpacecraftState) -> None:
+        """
+            Update the J2-squared short period terms.
+        
+            The :class:`~org.orekit.propagation.semianalytical.dsst.forces.ShortPeriodTerms` that will be updated are the ones that
+            were returned during the call to
+            :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.initializeShortPeriodTerms`.
+        
+            Parameters:
+                parameters (double[]): force model parameters
+                meanStates (:class:`~org.orekit.propagation.SpacecraftState`...): mean states information: date, kinematics, attitude
+        
+            Since:
+                12.2
+        
+        default <T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> void updateShortPeriodTerms (T[] parameters, :class:`~org.orekit.propagation.FieldSpacecraftState`<T>... meanStates)
+        
+            Update the J2-squared short period terms.
+        
+            The :class:`~org.orekit.propagation.semianalytical.dsst.forces.ShortPeriodTerms` that will be updated are the ones that
+            were returned during the call to
+            :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.initializeShortPeriodTerms`.
+        
+            Parameters:
+                parameters (T[]): force model parameters
+                meanStates (:class:`~org.orekit.propagation.FieldSpacecraftState`<T>...): mean states information: date, kinematics, attitude
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @typing.overload
+    def updateShortPeriodTerms(self, tArray: typing.Union[typing.List[_updateShortPeriodTerms_1__T], jpype.JArray], *fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_updateShortPeriodTerms_1__T]) -> None: ...
 
 class ShortPeriodTerms:
     """
@@ -676,6 +718,173 @@ class AbstractGaussianContributionContext(ForceModelContext):
         """
         ...
 
+class DSSTGravityContext(ForceModelContext):
+    """
+    public class DSSTGravityContext extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.ForceModelContext`
+    
+        This class is a container for the common parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral` and
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal`.
+    
+        It performs parameters initialization at each integration step for the Tesseral and Zonal contribution to the central
+        body gravitational perturbation.
+    
+        Since:
+            12.2
+    """
+    def getA(self) -> float:
+        """
+            Getter for the a.
+        
+            Returns:
+                the a
+        
+        
+        """
+        ...
+    def getAlpha(self) -> float:
+        """
+            Get direction cosine α for central body.
+        
+            Returns:
+                α
+        
+        
+        """
+        ...
+    def getAx2oA(self) -> float:
+        """
+            Getter for the ax2oA.
+        
+            Returns:
+                the ax2oA
+        
+        
+        """
+        ...
+    def getBeta(self) -> float:
+        """
+            Get direction cosine β for central body.
+        
+            Returns:
+                β
+        
+        
+        """
+        ...
+    def getBoA(self) -> float:
+        """
+            Get B / A.
+        
+            Returns:
+                the boA
+        
+        
+        """
+        ...
+    def getBoABpo(self) -> float:
+        """
+            Get BoABpo = B / A(1 + B).
+        
+            Returns:
+                the boABpo
+        
+        
+        """
+        ...
+    def getBodyFixedToInertialTransform(self) -> org.orekit.frames.StaticTransform:
+        """
+            Getter for the bodyFixedToInertialTransform.
+        
+            Returns:
+                the bodyFixedToInertialTransform
+        
+        
+        """
+        ...
+    def getChi(self) -> float:
+        """
+            Getter for the chi.
+        
+            Returns:
+                the chi
+        
+        
+        """
+        ...
+    def getChi2(self) -> float:
+        """
+            Getter for the chi2.
+        
+            Returns:
+                the chi2
+        
+        
+        """
+        ...
+    def getCo2AB(self) -> float:
+        """
+            Get Co2AB = C / 2AB.
+        
+            Returns:
+                the co2AB
+        
+        
+        """
+        ...
+    def getGamma(self) -> float:
+        """
+            Get direction cosine γ for central body.
+        
+            Returns:
+                γ
+        
+        
+        """
+        ...
+    def getMeanMotion(self) -> float:
+        """
+            Get the Keplerian mean motion.
+        
+            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
+        
+            Returns:
+                Keplerian mean motion in radians per second
+        
+        
+        """
+        ...
+    def getMuoa(self) -> float:
+        """
+            Get μ / a.
+        
+            Returns:
+                the muoa
+        
+        
+        """
+        ...
+    def getOoAB(self) -> float:
+        """
+            ooAB = 1 / (A * B).
+        
+            Returns:
+                the ooAB
+        
+        
+        """
+        ...
+    def getRoa(self) -> float:
+        """
+            Get roa = R / a.
+        
+            Returns:
+                the roa
+        
+        
+        """
+        ...
+
 class DSSTJ2SquaredClosedForm(DSSTForceModel):
     """
     public class DSSTJ2SquaredClosedForm extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`
@@ -1198,245 +1407,87 @@ class DSSTTesseral(DSSTForceModel):
     @typing.overload
     def updateShortPeriodTerms(self, tArray: typing.Union[typing.List[_updateShortPeriodTerms_1__T], jpype.JArray], *fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_updateShortPeriodTerms_1__T]) -> None: ...
 
-class DSSTTesseralContext(ForceModelContext):
+class DSSTThirdBody(DSSTForceModel):
     """
-    public class DSSTTesseralContext extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.ForceModelContext`
+    public class DSSTThirdBody extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`
     
-        This class is a container for the common parameters used in
-        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral`.
+        Third body attraction perturbation to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
+    """
+    SHORT_PERIOD_PREFIX: typing.ClassVar[str] = ...
+    """
+    public static final :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is` SHORT_PERIOD_PREFIX
+    
+        Name of the prefix for short period coefficients keys.
+    
+        Also see:
+            :meth:`~constant`
     
-        It performs parameters initialization at each integration step for the Tesseral contribution to the central body
-        gravitational perturbation.
     
-        Since:
-            10.0
     """
-    def getAx2oA(self) -> float:
+    ATTRACTION_COEFFICIENT: typing.ClassVar[str] = ...
+    """
+    public static final :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is` ATTRACTION_COEFFICIENT
+    
+        Name of the single parameter of this model: the attraction coefficient.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    MAX_POWER: typing.ClassVar[int] = ...
+    """
+    public static final int MAX_POWER
+    
+        Max power for summation.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    BIG_TRUNCATION_TOLERANCE: typing.ClassVar[float] = ...
+    """
+    public static final double BIG_TRUNCATION_TOLERANCE
+    
+        Truncation tolerance for big, eccentric orbits.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    SMALL_TRUNCATION_TOLERANCE: typing.ClassVar[float] = ...
+    """
+    public static final double SMALL_TRUNCATION_TOLERANCE
+    
+        Truncation tolerance for small orbits.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
+    """
+    def __init__(self, celestialBody: org.orekit.bodies.CelestialBody, double: float): ...
+    def getBody(self) -> org.orekit.bodies.CelestialBody:
         """
-            Get ax2oA = 2 * a / A .
+            Get third body.
         
             Returns:
-                ax2oA
+                third body
         
         
         """
         ...
-    def getBoA(self) -> float:
+    _getMeanElementRate_1__T = typing.TypeVar('_getMeanElementRate_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getMeanElementRate(self, spacecraftState: org.orekit.propagation.SpacecraftState, auxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.AuxiliaryElements, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> typing.MutableSequence[float]:
         """
-            Get B / A.
-        
-            Returns:
-                BoA
+            Computes the mean equinoctial elements rates da :sub:`i` / dt.
         
-        
-        """
-        ...
-    def getBoABpo(self) -> float:
-        """
-            Get BoABpo = B / A(1 + B).
-        
-            Returns:
-                BoABpo
-        
-        
-        """
-        ...
-    def getChi(self) -> float:
-        """
-            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
-        
-            Returns:
-                chi
-        
-        
-        """
-        ...
-    def getChi2(self) -> float:
-        """
-            Get Χ².
-        
-            Returns:
-                chi2
-        
-        
-        """
-        ...
-    def getCo2AB(self) -> float:
-        """
-            Get Co2AB = C / 2AB.
-        
-            Returns:
-                Co2AB
-        
-        
-        """
-        ...
-    def getE2(self) -> float:
-        """
-            Get ecc².
-        
-            Returns:
-                e2
-        
-        
-        """
-        ...
-    def getMeanMotion(self) -> float:
-        """
-            Get the Keplerian mean motion.
-        
-            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
-        
-            Returns:
-                Keplerian mean motion in radians per second
-        
-        
-        """
-        ...
-    def getMoa(self) -> float:
-        """
-            Get μ / a .
-        
-            Returns:
-                moa
-        
-        
-        """
-        ...
-    def getOoAB(self) -> float:
-        """
-            Get ooAB = 1 / (A * B).
-        
-            Returns:
-                ooAB
-        
-        
-        """
-        ...
-    def getOrbitPeriod(self) -> float:
-        """
-            Get the Keplerian period.
-        
-            The Keplerian period is computed directly from semi major axis and central acceleration constant.
-        
-            Returns:
-                Keplerian period in seconds, or positive infinity for hyperbolic orbits
-        
-        
-        """
-        ...
-    def getRatio(self) -> float:
-        """
-            Get the ratio of satellite period to central body rotation period.
-        
-            Returns:
-                ratio
-        
-        
-        """
-        ...
-    def getRoa(self) -> float:
-        """
-            Get roa = R / a.
-        
-            Returns:
-                roa
-        
-        
-        """
-        ...
-    def getTheta(self) -> float:
-        """
-            Get Central body rotation angle θ.
-        
-            Returns:
-                theta
-        
-        
-        """
-        ...
-
-class DSSTThirdBody(DSSTForceModel):
-    """
-    public class DSSTThirdBody extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`
-    
-        Third body attraction perturbation to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
-    """
-    SHORT_PERIOD_PREFIX: typing.ClassVar[str] = ...
-    """
-    public static final :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is` SHORT_PERIOD_PREFIX
-    
-        Name of the prefix for short period coefficients keys.
-    
-        Also see:
-            :meth:`~constant`
-    
-    
-    """
-    ATTRACTION_COEFFICIENT: typing.ClassVar[str] = ...
-    """
-    public static final :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.String?is` ATTRACTION_COEFFICIENT
-    
-        Name of the single parameter of this model: the attraction coefficient.
-    
-        Also see:
-            :meth:`~constant`
-    
-    
-    """
-    MAX_POWER: typing.ClassVar[int] = ...
-    """
-    public static final int MAX_POWER
-    
-        Max power for summation.
-    
-        Also see:
-            :meth:`~constant`
-    
-    
-    """
-    BIG_TRUNCATION_TOLERANCE: typing.ClassVar[float] = ...
-    """
-    public static final double BIG_TRUNCATION_TOLERANCE
-    
-        Truncation tolerance for big, eccentric orbits.
-    
-        Also see:
-            :meth:`~constant`
-    
-    
-    """
-    SMALL_TRUNCATION_TOLERANCE: typing.ClassVar[float] = ...
-    """
-    public static final double SMALL_TRUNCATION_TOLERANCE
-    
-        Truncation tolerance for small orbits.
-    
-        Also see:
-            :meth:`~constant`
-    
-    
-    """
-    def __init__(self, celestialBody: org.orekit.bodies.CelestialBody, double: float): ...
-    def getBody(self) -> org.orekit.bodies.CelestialBody:
-        """
-            Get third body.
-        
-            Returns:
-                third body
-        
-        
-        """
-        ...
-    _getMeanElementRate_1__T = typing.TypeVar('_getMeanElementRate_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    @typing.overload
-    def getMeanElementRate(self, spacecraftState: org.orekit.propagation.SpacecraftState, auxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.AuxiliaryElements, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> typing.MutableSequence[float]:
-        """
-            Computes the mean equinoctial elements rates da :sub:`i` / dt.
-        
-            Specified by:
-                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel.getMeanElementRate` in
-                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`
+            Specified by:
+                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel.getMeanElementRate` in
+                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel`
         
             Parameters:
                 currentState (:class:`~org.orekit.propagation.SpacecraftState`): current state information: date, kinematics, attitude
@@ -1814,6 +1865,10 @@ class DSSTZonal(DSSTForceModel):
     def __init__(self, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider): ...
     @typing.overload
     def __init__(self, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, int: int, int2: int, int3: int): ...
+    @typing.overload
+    def __init__(self, frame: org.orekit.frames.Frame, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider): ...
+    @typing.overload
+    def __init__(self, frame: org.orekit.frames.Frame, unnormalizedSphericalHarmonicsProvider: org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider, int: int, int2: int, int3: int): ...
     _getMeanElementRate_1__T = typing.TypeVar('_getMeanElementRate_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @typing.overload
     def getMeanElementRate(self, spacecraftState: org.orekit.propagation.SpacecraftState, auxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.AuxiliaryElements, doubleArray: typing.Union[typing.List[float], jpype.JArray]) -> typing.MutableSequence[float]:
@@ -1936,256 +1991,229 @@ class DSSTZonal(DSSTForceModel):
     @typing.overload
     def updateShortPeriodTerms(self, tArray: typing.Union[typing.List[_updateShortPeriodTerms_1__T], jpype.JArray], *fieldSpacecraftState: org.orekit.propagation.FieldSpacecraftState[_updateShortPeriodTerms_1__T]) -> None: ...
 
-class DSSTZonalContext(ForceModelContext):
+_FieldAbstractGaussianContributionContext__T = typing.TypeVar('_FieldAbstractGaussianContributionContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldAbstractGaussianContributionContext(FieldForceModelContext[_FieldAbstractGaussianContributionContext__T], typing.Generic[_FieldAbstractGaussianContributionContext__T]):
     """
-    public class DSSTZonalContext extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.ForceModelContext`
+    public class FieldAbstractGaussianContributionContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
     
-        This class is a container for the common parameters used in
-        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal`.
+        This class is a container for the common "field" parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`.
     
-        It performs parameters initialization at each integration step for the Zonal contribution to the central body
-        gravitational perturbation.
+        It performs parameters initialization at each integration step for the Gaussian contributions
     
         Since:
             10.0
     """
-    def getBB(self) -> float:
+    def getA(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get B * B.
+            Get A = sqrt(μ * a).
         
             Returns:
-                BB
+                A
         
         
         """
         ...
-    def getBoA(self) -> float:
+    def getCo2AB(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get B / A.
+            Get co2AB = C / 2AB.
         
             Returns:
-                BoA
+                co2AB
         
         
         """
         ...
-    def getBoABpo(self) -> float:
+    def getMeanMotion(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get BoABpo = B / A(1 + B).
+            Get the Keplerian mean motion.
+        
+            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
         
             Returns:
-                BoABpo
+                Keplerian mean motion in radians per second
         
         
         """
         ...
-    def getCXO2N2A2(self) -> float:
+    def getMu(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get (C * χ) / ( 2 * n² * a² ).
+            Get central attraction coefficient.
         
             Returns:
-                cxo2n2a2
+                mu
         
         
         """
         ...
-    def getHK(self) -> float:
+    def getOOA(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get h * k.
+            Get ooA = 1 / A.
         
             Returns:
-                hk
+                ooA
         
         
         """
         ...
-    def getK2MH2(self) -> float:
+    def getOOAB(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get k² - h².
+            Get ooAB = 1 / (A * B).
         
             Returns:
-                k2mh2
-        
-        
-        """
-        ...
-    def getK2MH2O2(self) -> float:
-        """
-            Get (k² - h²) / 2.
-        
-            Returns:
-                k2mh2o2
-        
-        
-        """
-        ...
-    def getM2aoA(self) -> float:
-        """
-            Get m2aoA = -2 * a / A.
-        
-            Returns:
-                m2aoA
+                ooAB
         
         
         """
         ...
-    def getMCo2AB(self) -> float:
+    def getOoBpo(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get mCo2AB = -C / 2AB.
+            Get ooBpo = 1 / (B + 1).
         
             Returns:
-                mCo2AB
+                ooBpo
         
         
         """
         ...
-    def getMeanMotion(self) -> float:
+    def getOoMU(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get the Keplerian mean motion.
-        
-            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
+            Get ooMu = 1 / mu.
         
             Returns:
-                Keplerian mean motion in radians per second
+                ooMu
         
         
         """
         ...
-    def getMuoa(self) -> float:
+    def getTon2a(self) -> _FieldAbstractGaussianContributionContext__T:
         """
-            Get μ / a .
+            Get ton2a = 2 / (n² * a).
         
             Returns:
-                muoa
+                ton2a
         
         
         """
         ...
-    def getOON2A2(self) -> float:
+
+_FieldDSSTGravityContext__T = typing.TypeVar('_FieldDSSTGravityContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldDSSTGravityContext(FieldForceModelContext[_FieldDSSTGravityContext__T], typing.Generic[_FieldDSSTGravityContext__T]):
+    """
+    public class FieldDSSTGravityContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
+    
+        This class is a container for the common parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral` and
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal`.
+    
+        It performs parameters initialization at each integration step for the Tesseral and Zonal contribution to the central
+        body gravitational perturbation.
+    
+        Since:
+            12.2
+    """
+    def getA(self) -> _FieldDSSTGravityContext__T:
         """
-            Get 1 / (n² * a²).
+            A = sqrt(μ * a).
         
             Returns:
-                oon2a2
+                A
         
         
         """
         ...
-    def getOoAB(self) -> float:
+    def getAlpha(self) -> _FieldDSSTGravityContext__T:
         """
-            Get ooAB = 1 / (A * B).
+            Get direction cosine α for central body.
         
             Returns:
-                ooAB
+                α
         
         
         """
         ...
-    def getRoa(self) -> float:
+    def getAx2oA(self) -> _FieldDSSTGravityContext__T:
         """
-            Get roa = R / a.
+            Getter for the ax2oA.
         
             Returns:
-                roa
+                the ax2oA
         
         
         """
         ...
-    def getX(self) -> float:
+    def getBeta(self) -> _FieldDSSTGravityContext__T:
         """
-            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
+            Get direction cosine β for central body.
         
             Returns:
-                Χ
+                β
         
         
         """
         ...
-    def getX2ON2A2XP1(self) -> float:
+    def getBoA(self) -> _FieldDSSTGravityContext__T:
         """
-            Get (χ²) / (n² * a² * (χ + 1 ) ).
+            Get B / A.
         
             Returns:
-                x2on2a2xp1
+                BoA
         
         
         """
         ...
-    def getX3ON2A(self) -> float:
+    def getBoABpo(self) -> _FieldDSSTGravityContext__T:
         """
-            Get χ³ / (n² * a).
+            Get BoABpo = B / A(1 + B).
         
             Returns:
-                x3on2a
+                BoABpo
         
         
         """
         ...
-    def getXON2A2(self) -> float:
+    def getBodyFixedToInertialTransform(self) -> org.orekit.frames.FieldStaticTransform[_FieldDSSTGravityContext__T]: ...
+    def getChi(self) -> _FieldDSSTGravityContext__T:
         """
-            Get χ / (n² * a²).
+            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
         
             Returns:
-                xon2a2
+                chi
         
         
         """
         ...
-    def getXX(self) -> float:
+    def getChi2(self) -> _FieldDSSTGravityContext__T:
         """
             Get Χ².
         
             Returns:
-                Χ².
-        
-        
-        """
-        ...
-    def getXXX(self) -> float:
-        """
-            Get Χ³.
-        
-            Returns:
-                Χ³
+                chi2
         
         
         """
         ...
-
-_FieldAbstractGaussianContributionContext__T = typing.TypeVar('_FieldAbstractGaussianContributionContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class FieldAbstractGaussianContributionContext(FieldForceModelContext[_FieldAbstractGaussianContributionContext__T], typing.Generic[_FieldAbstractGaussianContributionContext__T]):
-    """
-    public class FieldAbstractGaussianContributionContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
-    
-        This class is a container for the common "field" parameters used in
-        :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`.
-    
-        It performs parameters initialization at each integration step for the Gaussian contributions
-    
-        Since:
-            10.0
-    """
-    def getA(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getCo2AB(self) -> _FieldDSSTGravityContext__T:
         """
-            Get A = sqrt(μ * a).
+            Get Co2AB = C / 2AB.
         
             Returns:
-                A
+                Co2AB
         
         
         """
         ...
-    def getCo2AB(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getGamma(self) -> _FieldDSSTGravityContext__T:
         """
-            Get co2AB = C / 2AB.
+            Get direction cosine γ for central body.
         
             Returns:
-                co2AB
+                the γ
         
         
         """
         ...
-    def getMeanMotion(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getMeanMotion(self) -> _FieldDSSTGravityContext__T:
         """
             Get the Keplerian mean motion.
         
@@ -2197,27 +2225,17 @@ class FieldAbstractGaussianContributionContext(FieldForceModelContext[_FieldAbst
         
         """
         ...
-    def getMu(self) -> _FieldAbstractGaussianContributionContext__T:
-        """
-            Get central attraction coefficient.
-        
-            Returns:
-                mu
-        
-        
-        """
-        ...
-    def getOOA(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getMuoa(self) -> _FieldDSSTGravityContext__T:
         """
-            Get ooA = 1 / A.
+            Get muoa = μ / a.
         
             Returns:
-                ooA
+                the muoa
         
         
         """
         ...
-    def getOOAB(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getOoAB(self) -> _FieldDSSTGravityContext__T:
         """
             Get ooAB = 1 / (A * B).
         
@@ -2227,32 +2245,12 @@ class FieldAbstractGaussianContributionContext(FieldForceModelContext[_FieldAbst
         
         """
         ...
-    def getOoBpo(self) -> _FieldAbstractGaussianContributionContext__T:
-        """
-            Get ooBpo = 1 / (B + 1).
-        
-            Returns:
-                ooBpo
-        
-        
-        """
-        ...
-    def getOoMU(self) -> _FieldAbstractGaussianContributionContext__T:
-        """
-            Get ooMu = 1 / mu.
-        
-            Returns:
-                ooMu
-        
-        
-        """
-        ...
-    def getTon2a(self) -> _FieldAbstractGaussianContributionContext__T:
+    def getRoa(self) -> _FieldDSSTGravityContext__T:
         """
-            Get ton2a = 2 / (n² * a).
+            Get roa = R / a.
         
             Returns:
-                ton2a
+                roa
         
         
         """
@@ -2348,379 +2346,484 @@ class FieldDSSTNewtonianAttractionContext(FieldForceModelContext[_FieldDSSTNewto
         """
         ...
 
-_FieldDSSTTesseralContext__T = typing.TypeVar('_FieldDSSTTesseralContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class FieldDSSTTesseralContext(FieldForceModelContext[_FieldDSSTTesseralContext__T], typing.Generic[_FieldDSSTTesseralContext__T]):
+_FieldDSSTThirdBodyDynamicContext__T = typing.TypeVar('_FieldDSSTThirdBodyDynamicContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldDSSTThirdBodyDynamicContext(FieldForceModelContext[_FieldDSSTThirdBodyDynamicContext__T], typing.Generic[_FieldDSSTThirdBodyDynamicContext__T]):
     """
-    public class FieldDSSTTesseralContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
+    public class FieldDSSTThirdBodyDynamicContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
     
         This class is a container for the common "field" parameters used in
-        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral`.
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTThirdBody`.
     
-        It performs parameters initialization at each integration step for the Tesseral contribution to the central body
-        gravitational perturbation.
+        It performs parameters initialization at each integration step for the third body attraction perturbation. These
+        parameters change for each integration step.
     
         Since:
-            10.0
+            12.0
     """
-    def getAx2oA(self) -> _FieldDSSTTesseralContext__T:
+    def __init__(self, fieldAuxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.FieldAuxiliaryElements[_FieldDSSTThirdBodyDynamicContext__T], celestialBody: org.orekit.bodies.CelestialBody, tArray: typing.Union[typing.List[_FieldDSSTThirdBodyDynamicContext__T], jpype.JArray]): ...
+    def getA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get ax2oA = 2 * a / A .
+            Get A = sqrt(μ * a).
         
             Returns:
-                ax2oA
+                A
         
         
         """
         ...
-    def getBoA(self) -> _FieldDSSTTesseralContext__T:
+    def getAlpha(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get B / A.
+            Get direction cosine α for central body.
         
             Returns:
-                BoA
+                α
         
         
         """
         ...
-    def getBoABpo(self) -> _FieldDSSTTesseralContext__T:
+    def getBB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get BoABpo = B / A(1 + B).
+            Get B².
         
             Returns:
-                BoABpo
+                B²
         
         
         """
         ...
-    def getChi(self) -> _FieldDSSTTesseralContext__T:
+    def getBBB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
+            Get B³.
         
             Returns:
-                chi
+                B³
         
         
         """
         ...
-    def getChi2(self) -> _FieldDSSTTesseralContext__T:
+    def getBeta(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get Χ².
+            Get direction cosine β for central body.
         
             Returns:
-                chi2
+                β
         
         
         """
         ...
-    def getCo2AB(self) -> _FieldDSSTTesseralContext__T:
+    def getBoA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get Co2AB = C / 2AB.
+            Get B / A.
         
             Returns:
-                Co2AB
+                BoA
         
         
         """
         ...
-    def getE2(self) -> _FieldDSSTTesseralContext__T:
+    def getBoABpo(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get ecc².
+            Get BoABpo = B / A(1 + B).
         
             Returns:
-                e2
+                BoABpo
         
         
         """
         ...
-    def getMeanMotion(self) -> _FieldDSSTTesseralContext__T:
+    def getGamma(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get the Keplerian mean motion.
-        
-            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
+            Get direction cosine γ for central body.
         
             Returns:
-                Keplerian mean motion in radians per second
+                γ
         
         
         """
         ...
-    def getMoa(self) -> _FieldDSSTTesseralContext__T:
+    def getHXXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get μ / a .
+            Get hXXX = h * Χ³.
         
             Returns:
-                moa
+                hXXX
         
         
         """
         ...
-    def getOoAB(self) -> _FieldDSSTTesseralContext__T:
+    def getKXXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get ooAB = 1 / (A * B).
+            Get kXXX = h * Χ³.
         
             Returns:
-                ooAB
+                kXXX
         
         
         """
         ...
-    def getOrbitPeriod(self) -> _FieldDSSTTesseralContext__T:
+    def getM2aoA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get the Keplerian period.
-        
-            The Keplerian period is computed directly from semi major axis and central acceleration constant.
+            Get m2aoA = -2 * a / A.
         
             Returns:
-                Keplerian period in seconds, or positive infinity for hyperbolic orbits
+                m2aoA
         
         
         """
         ...
-    def getRatio(self) -> _FieldDSSTTesseralContext__T:
+    def getMCo2AB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get the ratio of satellite period to central body rotation period.
+            Get mCo2AB = -C / 2AB.
         
             Returns:
-                ratio
+                mCo2AB
         
         
         """
         ...
-    def getRoa(self) -> _FieldDSSTTesseralContext__T:
+    def getMeanMotion(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get roa = R / a.
+            Get the Keplerian mean motion.
+        
+            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
         
             Returns:
-                roa
+                Keplerian mean motion in radians per second
         
         
         """
         ...
-    def getTheta(self) -> _FieldDSSTTesseralContext__T:
+    def getMuoR3(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get Central body rotation angle θ.
+            Get muoR3 = mu3 / R3.
         
             Returns:
-                theta
+                muoR3
         
         
         """
         ...
-
-_FieldDSSTThirdBodyDynamicContext__T = typing.TypeVar('_FieldDSSTThirdBodyDynamicContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class FieldDSSTThirdBodyDynamicContext(FieldForceModelContext[_FieldDSSTThirdBodyDynamicContext__T], typing.Generic[_FieldDSSTThirdBodyDynamicContext__T]):
-    """
-    public class FieldDSSTThirdBodyDynamicContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
-    
-        This class is a container for the common "field" parameters used in
-        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTThirdBody`.
-    
-        It performs parameters initialization at each integration step for the third body attraction perturbation. These
-        parameters change for each integration step.
-    
-        Since:
-            12.0
-    """
-    def __init__(self, fieldAuxiliaryElements: org.orekit.propagation.semianalytical.dsst.utilities.FieldAuxiliaryElements[_FieldDSSTThirdBodyDynamicContext__T], celestialBody: org.orekit.bodies.CelestialBody, tArray: typing.Union[typing.List[_FieldDSSTThirdBodyDynamicContext__T], jpype.JArray]): ...
-    def getA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getOoAB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get A = sqrt(μ * a).
+            Get ooAB = 1 / (A * B).
         
             Returns:
-                A
+                ooAB
         
         
         """
         ...
-    def getAlpha(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getR3(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get direction cosine α for central body.
+            Get the distance from center of mass of the central body to the 3rd body.
         
             Returns:
-                α
+                the distance from center of mass of the central body to the 3rd body
         
         
         """
         ...
-    def getBB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get B².
+            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
         
             Returns:
-                B²
+                Χ
         
         
         """
         ...
-    def getBBB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get B³.
+            Get Χ².
         
             Returns:
-                B³
+                Χ²
         
         
         """
         ...
-    def getBeta(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getb(self) -> _FieldDSSTThirdBodyDynamicContext__T:
         """
-            Get direction cosine β for central body.
+            Get b = 1 / (1 + sqrt(1 - e²)) = 1 / (1 + B).
         
             Returns:
-                β
+                b
         
         
         """
         ...
-    def getBoA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+
+class ZeisModel(J2SquaredModel):
+    """
+    public class ZeisModel extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+    
+        Zeis model for J2-squared second-order terms.
+    
+        Since:
+            12.0
+    
+        Also see:
+            "ZEIS, Eric and CEFOLA, P. Computerized algebraic utilities for the construction of nonsingular satellite theories.
+            Journal of Guidance and Control, 1980, vol. 3, no 1, p. 48-54.", "SAN-JUAN, Juan F., LÓPEZ, Rosario, et CEFOLA, Paul J.
+            A Second-Order Closed-Form $$ J_2 $$ Model for the Draper Semi-Analytical Satellite Theory. The Journal of the
+            Astronautical Sciences, 2022, p. 1-27."
+    """
+    def __init__(self): ...
+    _computeC2Z_1__T = typing.TypeVar('_computeC2Z_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def computeC2Z(self, dSSTJ2SquaredClosedFormContext: DSSTJ2SquaredClosedFormContext) -> float:
         """
-            Get B / A.
+            Get the value of the Zeis constant.
         
-            Returns:
-                BoA
+            Parameters:
+                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTJ2SquaredClosedFormContext`): model context
         
+            Returns:
+                the value of the Zeis constant
         
         """
         ...
-    def getBoABpo(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    @typing.overload
+    def computeC2Z(self, fieldDSSTJ2SquaredClosedFormContext: FieldDSSTJ2SquaredClosedFormContext[_computeC2Z_1__T]) -> _computeC2Z_1__T:
         """
-            Get BoABpo = B / A(1 + B).
+            Get the value of the Zeis constant.
+        
+            Parameters:
+                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTJ2SquaredClosedFormContext`<T> context): model context
         
             Returns:
-                BoABpo
+                the value of the Zeis constant
         
         
         """
         ...
-    def getGamma(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    _computeMeanEquinoctialSecondOrderTerms_1__T = typing.TypeVar('_computeMeanEquinoctialSecondOrderTerms_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def computeMeanEquinoctialSecondOrderTerms(self, dSSTJ2SquaredClosedFormContext: DSSTJ2SquaredClosedFormContext) -> typing.MutableSequence[float]:
         """
-            Get direction cosine γ for central body.
+            Compute the J2-squared second-order terms in equinoctial elements..
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.computeMeanEquinoctialSecondOrderTerms` in
+                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+        
+            Parameters:
+                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTJ2SquaredClosedFormContext`): model context
         
             Returns:
-                γ
+                the J2-squared second-order terms in equinoctial elements. Order must follow: [A, K, H, Q, P, M]
+        
+        """
+        ...
+    @typing.overload
+    def computeMeanEquinoctialSecondOrderTerms(self, fieldDSSTJ2SquaredClosedFormContext: FieldDSSTJ2SquaredClosedFormContext[_computeMeanEquinoctialSecondOrderTerms_1__T]) -> typing.MutableSequence[_computeMeanEquinoctialSecondOrderTerms_1__T]:
+        """
+            Compute the J2-squared second-order terms in equinoctial elements..
+        
+            Specified by:
+                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.computeMeanEquinoctialSecondOrderTerms` in
+                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+        
+            Parameters:
+                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTJ2SquaredClosedFormContext`<T> context): model context
+        
+            Returns:
+                the J2-squared second-order terms in equinoctial elements. Order must follow: [A, K, H, Q, P, M]
         
         
         """
         ...
-    def getHXXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+
+class DSSTAtmosphericDrag(AbstractGaussianContribution):
+    """
+    public class DSSTAtmosphericDrag extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`
+    
+        Atmospheric drag contribution to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
+    
+        The drag acceleration is computed through the acceleration model of :class:`~org.orekit.forces.drag.DragForce`.
+    """
+    @typing.overload
+    def __init__(self, dragForce: org.orekit.forces.drag.DragForce, double: float): ...
+    @typing.overload
+    def __init__(self, atmosphere: org.orekit.models.earth.atmosphere.Atmosphere, double: float, double2: float, double3: float): ...
+    @typing.overload
+    def __init__(self, atmosphere: org.orekit.models.earth.atmosphere.Atmosphere, dragSensitive: org.orekit.forces.drag.DragSensitive, double: float): ...
+    def getAtmosphere(self) -> org.orekit.models.earth.atmosphere.Atmosphere:
         """
-            Get hXXX = h * Χ³.
+            Get the atmospheric model.
         
             Returns:
-                hXXX
+                atmosphere model
         
         
         """
         ...
-    def getKXXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getDrag(self) -> org.orekit.forces.drag.DragForce:
         """
-            Get kXXX = h * Χ³.
+            Get drag force.
         
             Returns:
-                kXXX
+                drag force
         
         
         """
         ...
-    def getM2aoA(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    @typing.overload
+    def getEventDetectors(self, list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    @typing.overload
+    def getEventDetectors(self) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
+    _getFieldEventDetectors_0__T = typing.TypeVar('_getFieldEventDetectors_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    _getFieldEventDetectors_1__T = typing.TypeVar('_getFieldEventDetectors_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_0__T], list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_0__T]]: ...
+    @typing.overload
+    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_1__T]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_1__T]]: ...
+    def getRbar(self) -> float:
         """
-            Get m2aoA = -2 * a / A.
+            Get the critical distance.
+        
+            The critical distance from the center of the central body aims at defining the atmosphere entry/exit.
         
             Returns:
-                m2aoA
+                the critical distance from the center of the central body (m)
         
         
         """
         ...
-    def getMCo2AB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getSpacecraft(self) -> org.orekit.forces.drag.DragSensitive:
         """
-            Get mCo2AB = -C / 2AB.
+            Get spacecraft shape.
         
             Returns:
-                mCo2AB
+                spacecraft shape
         
         
         """
         ...
-    def getMeanMotion(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def setRbar(self, double: float) -> None:
         """
-            Get the Keplerian mean motion.
+            Set the critical distance from the center of the central body at which the atmosphere is considered to end, i.e. beyond
+            this distance atmospheric drag is not considered.
         
-            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
+            Parameters:
+                rbar (double): the critical distance from the center of the central body (m)
+        
+        
+        """
+        ...
+
+class DSSTSolarRadiationPressure(AbstractGaussianContribution):
+    """
+    public class DSSTSolarRadiationPressure extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`
+    
+        Solar radiation pressure contribution to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
+    
+        The solar radiation pressure acceleration is computed through the acceleration model of
+        :class:`~org.orekit.forces.radiation.SolarRadiationPressure`.
+    """
+    @typing.overload
+    def __init__(self, double: float, double2: float, double3: float, double4: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, double5: float): ...
+    @typing.overload
+    def __init__(self, double: float, double2: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, double3: float): ...
+    @typing.overload
+    def __init__(self, double: float, double2: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, radiationSensitive: org.orekit.forces.radiation.RadiationSensitive, double3: float): ...
+    @typing.overload
+    def __init__(self, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, radiationSensitive: org.orekit.forces.radiation.RadiationSensitive, double: float): ...
+    def getEquatorialRadius(self) -> float:
+        """
+            Get the central body equatorial radius.
         
             Returns:
-                Keplerian mean motion in radians per second
+                central body equatorial radius (m)
         
         
         """
         ...
-    def getMuoR3(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getSpacecraft(self) -> org.orekit.forces.radiation.RadiationSensitive:
         """
-            Get muoR3 = mu3 / R3.
+            Get spacecraft shape.
         
             Returns:
-                muoR3
+                the spacecraft shape.
         
         
         """
         ...
-    def getOoAB(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+
+class DSSTTesseralContext(DSSTGravityContext):
+    """
+    public class DSSTTesseralContext extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTGravityContext`
+    
+        This class is a container for the common parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral`.
+    
+        It performs parameters initialization at each integration step for the Tesseral contribution to the central body
+        gravitational perturbation.
+    
+        Since:
+            10.0
+    """
+    def getE2(self) -> float:
         """
-            Get ooAB = 1 / (A * B).
+            Get ecc².
         
             Returns:
-                ooAB
+                e2
         
         
         """
         ...
-    def getR3(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getMoa(self) -> float:
         """
-            Get the distance from center of mass of the central body to the 3rd body.
+            Deprecated.
+            since 12.2 Use getMuoa() instead
+            Get μ / a .
         
             Returns:
-                the distance from center of mass of the central body to the 3rd body
+                moa
         
         
         """
         ...
-    def getX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getOrbitPeriod(self) -> float:
         """
-            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
+            Get the Keplerian period.
+        
+            The Keplerian period is computed directly from semi major axis and central acceleration constant.
         
             Returns:
-                Χ
+                Keplerian period in seconds, or positive infinity for hyperbolic orbits
         
         
         """
         ...
-    def getXX(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getRatio(self) -> float:
         """
-            Get Χ².
+            Get the ratio of satellite period to central body rotation period.
         
             Returns:
-                Χ²
+                ratio
         
         
         """
         ...
-    def getb(self) -> _FieldDSSTThirdBodyDynamicContext__T:
+    def getTheta(self) -> float:
         """
-            Get b = 1 / (1 + sqrt(1 - e²)) = 1 / (1 + B).
+            Get Central body rotation angle θ.
         
             Returns:
-                b
+                theta
         
         
         """
         ...
 
-_FieldDSSTZonalContext__T = typing.TypeVar('_FieldDSSTZonalContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], typing.Generic[_FieldDSSTZonalContext__T]):
+class DSSTZonalContext(DSSTGravityContext):
     """
-    public class FieldDSSTZonalContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldForceModelContext`<T>
+    public class DSSTZonalContext extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTGravityContext`
     
-        This class is a container for the common "field" parameters used in
+        This class is a container for the common parameters used in
         :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal`.
     
         It performs parameters initialization at each integration step for the Zonal contribution to the central body
@@ -2729,7 +2832,7 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         Since:
             10.0
     """
-    def getBB(self) -> _FieldDSSTZonalContext__T:
+    def getBB(self) -> float:
         """
             Get B * B.
         
@@ -2739,37 +2842,27 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getBoA(self) -> _FieldDSSTZonalContext__T:
+    def getCXO2N2A2(self) -> float:
         """
-            Get B / A.
+            Get (C * χ) / ( 2 * n² * a² ).
         
             Returns:
-                BoA
+                cxo2n2a2
         
         
         """
         ...
-    def getBoABpo(self) -> _FieldDSSTZonalContext__T:
+    def getChi3(self) -> float:
         """
-            Get BoABpo = B / A(1 + B).
+            Getter for the Χ³.
         
             Returns:
-                BoABpo
+                the Χ³
         
         
         """
         ...
-    def getCXO2N2A2(self) -> _FieldDSSTZonalContext__T:
-        """
-            Get (C * χ) / ( 2 * n² * a² ).
-        
-            Returns:
-                cxo2n2a2
-        
-        
-        """
-        ...
-    def getHK(self) -> _FieldDSSTZonalContext__T:
+    def getHK(self) -> float:
         """
             Get h * k.
         
@@ -2779,7 +2872,7 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getK2MH2(self) -> _FieldDSSTZonalContext__T:
+    def getK2MH2(self) -> float:
         """
             Get k² - h².
         
@@ -2789,7 +2882,7 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getK2MH2O2(self) -> _FieldDSSTZonalContext__T:
+    def getK2MH2O2(self) -> float:
         """
             Get (k² - h²) / 2.
         
@@ -2799,8 +2892,10 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getM2aoA(self) -> _FieldDSSTZonalContext__T:
+    def getM2aoA(self) -> float:
         """
+            Deprecated.
+            since 12.2 Use -getAx2oA()() instead
             Get m2aoA = -2 * a / A.
         
             Returns:
@@ -2809,8 +2904,10 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getMCo2AB(self) -> _FieldDSSTZonalContext__T:
+    def getMCo2AB(self) -> float:
         """
+            Deprecated.
+            since 12.2 Use -getCo2AB()() instead
             Get mCo2AB = -C / 2AB.
         
             Returns:
@@ -2819,311 +2916,323 @@ class FieldDSSTZonalContext(FieldForceModelContext[_FieldDSSTZonalContext__T], t
         
         """
         ...
-    def getMeanMotion(self) -> _FieldDSSTZonalContext__T:
+    def getOON2A2(self) -> float:
         """
-            Get the Keplerian mean motion.
+            Get 1 / (n² * a²).
         
-            The Keplerian mean motion is computed directly from semi major axis and central acceleration constant.
+            Returns:
+                oon2a2
+        
+        
+        """
+        ...
+    def getX(self) -> float:
+        """
+            Deprecated.
+            since 12.2 Use getChi() instead
+            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
         
             Returns:
-                Keplerian mean motion in radians per second
+                Χ
         
         
         """
         ...
-    def getMuoa(self) -> _FieldDSSTZonalContext__T:
+    def getX2ON2A2XP1(self) -> float:
         """
-            Get μ / a .
+            Get (χ²) / (n² * a² * (χ + 1 ) ).
         
             Returns:
-                muoa
+                x2on2a2xp1
         
         
         """
         ...
-    def getOON2A2(self) -> _FieldDSSTZonalContext__T:
+    def getX3ON2A(self) -> float:
         """
-            Get 1 / (n² * a²).
+            Get χ³ / (n² * a).
         
             Returns:
-                oon2a2
+                x3on2a
         
         
         """
         ...
-    def getOoAB(self) -> _FieldDSSTZonalContext__T:
+    def getXON2A2(self) -> float:
         """
-            Get ooAB = 1 / (A * B).
+            Get χ / (n² * a²).
         
             Returns:
-                ooAB
+                xon2a2
         
         
         """
         ...
-    def getRoa(self) -> _FieldDSSTZonalContext__T:
+    def getXX(self) -> float:
         """
-            Get roa = R / a.
+            Deprecated.
+            since 12.2 Use getChi2() instead
+            Get Χ².
         
             Returns:
-                roa
+                Χ².
         
         
         """
         ...
-    def getX(self) -> _FieldDSSTZonalContext__T:
+    def getXXX(self) -> float:
         """
-            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
+            Deprecated.
+            since 12.2 Use getChi3() instead
+            Get Χ³.
         
             Returns:
-                Χ
+                Χ³
         
         
         """
         ...
-    def getX2ON2A2XP1(self) -> _FieldDSSTZonalContext__T:
+
+_FieldDSSTTesseralContext__T = typing.TypeVar('_FieldDSSTTesseralContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldDSSTTesseralContext(FieldDSSTGravityContext[_FieldDSSTTesseralContext__T], typing.Generic[_FieldDSSTTesseralContext__T]):
+    """
+    public class FieldDSSTTesseralContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTGravityContext`<T>
+    
+        This class is a container for the common "field" parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral`.
+    
+        It performs parameters initialization at each integration step for the Tesseral contribution to the central body
+        gravitational perturbation.
+    
+        Since:
+            10.0
+    """
+    def getE2(self) -> _FieldDSSTTesseralContext__T:
         """
-            Get (χ²) / (n² * a² * (χ + 1 ) ).
+            Get ecc².
         
             Returns:
-                x2on2a2xp1
+                e2
         
         
         """
         ...
-    def getX3ON2A(self) -> _FieldDSSTZonalContext__T:
+    def getMoa(self) -> _FieldDSSTTesseralContext__T:
         """
-            Get χ³ / (n² * a).
+            Deprecated.
+            since 12.2 Use getMuoa() instead
+            Get μ / a .
         
             Returns:
-                x3on2a
+                moa
         
         
         """
         ...
-    def getXON2A2(self) -> _FieldDSSTZonalContext__T:
+    def getOrbitPeriod(self) -> _FieldDSSTTesseralContext__T:
         """
-            Get χ / (n² * a²).
+            Get the Keplerian period.
+        
+            The Keplerian period is computed directly from semi major axis and central acceleration constant.
         
             Returns:
-                xon2a2
+                Keplerian period in seconds, or positive infinity for hyperbolic orbits
         
         
         """
         ...
-    def getXX(self) -> _FieldDSSTZonalContext__T:
+    def getRatio(self) -> _FieldDSSTTesseralContext__T:
         """
-            Get Χ².
+            Get the ratio of satellite period to central body rotation period.
         
             Returns:
-                Χ².
+                ratio
         
         
         """
         ...
-    def getXXX(self) -> _FieldDSSTZonalContext__T:
+    def getTheta(self) -> _FieldDSSTTesseralContext__T:
         """
-            Get Χ³.
+            Get Central body rotation angle θ.
         
             Returns:
-                Χ³
+                theta
         
         
         """
         ...
 
-class ZeisModel(J2SquaredModel):
+_FieldDSSTZonalContext__T = typing.TypeVar('_FieldDSSTZonalContext__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
+class FieldDSSTZonalContext(FieldDSSTGravityContext[_FieldDSSTZonalContext__T], typing.Generic[_FieldDSSTZonalContext__T]):
     """
-    public class ZeisModel extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is` implements :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+    public class FieldDSSTZonalContext<T extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.https:.www.hipparchus.org.apidocs.org.hipparchus.CalculusFieldElement?is`<T>> extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTGravityContext`<T>
     
-        Zeis model for J2-squared second-order terms.
+        This class is a container for the common "field" parameters used in
+        :class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal`.
     
-        Since:
-            12.0
+        It performs parameters initialization at each integration step for the Zonal contribution to the central body
+        gravitational perturbation.
     
-        Also see:
-            "ZEIS, Eric and CEFOLA, P. Computerized algebraic utilities for the construction of nonsingular satellite theories.
-            Journal of Guidance and Control, 1980, vol. 3, no 1, p. 48-54.", "SAN-JUAN, Juan F., LÓPEZ, Rosario, et CEFOLA, Paul J.
-            A Second-Order Closed-Form $$ J_2 $$ Model for the Draper Semi-Analytical Satellite Theory. The Journal of the
-            Astronautical Sciences, 2022, p. 1-27."
+        Since:
+            10.0
     """
-    def __init__(self): ...
-    _computeC2Z_1__T = typing.TypeVar('_computeC2Z_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    @typing.overload
-    def computeC2Z(self, dSSTJ2SquaredClosedFormContext: DSSTJ2SquaredClosedFormContext) -> float:
+    def getBB(self) -> _FieldDSSTZonalContext__T:
         """
-            Get the value of the Zeis constant.
-        
-            Parameters:
-                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTJ2SquaredClosedFormContext`): model context
+            Get B * B.
         
             Returns:
-                the value of the Zeis constant
+                BB
+        
         
         """
         ...
-    @typing.overload
-    def computeC2Z(self, fieldDSSTJ2SquaredClosedFormContext: FieldDSSTJ2SquaredClosedFormContext[_computeC2Z_1__T]) -> _computeC2Z_1__T:
+    def getCXO2N2A2(self) -> _FieldDSSTZonalContext__T:
         """
-            Get the value of the Zeis constant.
+            Get (C * χ) / ( 2 * n² * a² ).
         
-            Parameters:
-                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTJ2SquaredClosedFormContext`<T> context): model context
+            Returns:
+                cxo2n2a2
+        
+        
+        """
+        ...
+    def getChi3(self) -> _FieldDSSTZonalContext__T:
+        """
+            Deprecated.
+            Getter for the Χ³.
         
             Returns:
-                the value of the Zeis constant
+                the Χ³
         
         
         """
         ...
-    _computeMeanEquinoctialSecondOrderTerms_1__T = typing.TypeVar('_computeMeanEquinoctialSecondOrderTerms_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    @typing.overload
-    def computeMeanEquinoctialSecondOrderTerms(self, dSSTJ2SquaredClosedFormContext: DSSTJ2SquaredClosedFormContext) -> typing.MutableSequence[float]:
+    def getHK(self) -> _FieldDSSTZonalContext__T:
         """
-            Compute the J2-squared second-order terms in equinoctial elements..
+            Get h * k.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.computeMeanEquinoctialSecondOrderTerms` in
-                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+            Returns:
+                hk
         
-            Parameters:
-                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTJ2SquaredClosedFormContext`): model context
+        
+        """
+        ...
+    def getK2MH2(self) -> _FieldDSSTZonalContext__T:
+        """
+            Get k² - h².
         
             Returns:
-                the J2-squared second-order terms in equinoctial elements. Order must follow: [A, K, H, Q, P, M]
+                k2mh2
+        
         
         """
         ...
-    @typing.overload
-    def computeMeanEquinoctialSecondOrderTerms(self, fieldDSSTJ2SquaredClosedFormContext: FieldDSSTJ2SquaredClosedFormContext[_computeMeanEquinoctialSecondOrderTerms_1__T]) -> typing.MutableSequence[_computeMeanEquinoctialSecondOrderTerms_1__T]:
+    def getK2MH2O2(self) -> _FieldDSSTZonalContext__T:
         """
-            Compute the J2-squared second-order terms in equinoctial elements..
+            Get (k² - h²) / 2.
         
-            Specified by:
-                :meth:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel.computeMeanEquinoctialSecondOrderTerms` in
-                interface :class:`~org.orekit.propagation.semianalytical.dsst.forces.J2SquaredModel`
+            Returns:
+                k2mh2o2
         
-            Parameters:
-                context (:class:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTJ2SquaredClosedFormContext`<T> context): model context
+        
+        """
+        ...
+    def getM2aoA(self) -> _FieldDSSTZonalContext__T:
+        """
+            Deprecated.
+            since 12.2 Use -getAx2oA()() instead
+            Get m2aoA = -2 * a / A.
         
             Returns:
-                the J2-squared second-order terms in equinoctial elements. Order must follow: [A, K, H, Q, P, M]
+                m2aoA
         
         
         """
         ...
-
-class DSSTAtmosphericDrag(AbstractGaussianContribution):
-    """
-    public class DSSTAtmosphericDrag extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`
-    
-        Atmospheric drag contribution to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
-    
-        The drag acceleration is computed through the acceleration model of :class:`~org.orekit.forces.drag.DragForce`.
-    """
-    @typing.overload
-    def __init__(self, dragForce: org.orekit.forces.drag.DragForce, double: float): ...
-    @typing.overload
-    def __init__(self, atmosphere: org.orekit.models.earth.atmosphere.Atmosphere, double: float, double2: float, double3: float): ...
-    @typing.overload
-    def __init__(self, atmosphere: org.orekit.models.earth.atmosphere.Atmosphere, dragSensitive: org.orekit.forces.drag.DragSensitive, double: float): ...
-    def getAtmosphere(self) -> org.orekit.models.earth.atmosphere.Atmosphere:
+    def getMCo2AB(self) -> _FieldDSSTZonalContext__T:
         """
-            Get the atmospheric model.
+            Deprecated.
+            since 12.2 Use -getCo2AB()() instead
+            Get mCo2AB = -C / 2AB.
         
             Returns:
-                atmosphere model
+                mCo2AB
         
         
         """
         ...
-    def getDrag(self) -> org.orekit.forces.drag.DragForce:
+    def getOON2A2(self) -> _FieldDSSTZonalContext__T:
         """
-            Get drag force.
+            Get 1 / (n² * a²).
         
             Returns:
-                drag force
+                oon2a2
         
         
         """
         ...
-    @typing.overload
-    def getEventDetectors(self, list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
-    @typing.overload
-    def getEventDetectors(self) -> java.util.stream.Stream[org.orekit.propagation.events.EventDetector]: ...
-    _getFieldEventDetectors_0__T = typing.TypeVar('_getFieldEventDetectors_0__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    _getFieldEventDetectors_1__T = typing.TypeVar('_getFieldEventDetectors_1__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
-    @typing.overload
-    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_0__T], list: java.util.List[org.orekit.utils.ParameterDriver]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_0__T]]: ...
-    @typing.overload
-    def getFieldEventDetectors(self, field: org.hipparchus.Field[_getFieldEventDetectors_1__T]) -> java.util.stream.Stream[org.orekit.propagation.events.FieldEventDetector[_getFieldEventDetectors_1__T]]: ...
-    def getRbar(self) -> float:
+    def getX(self) -> _FieldDSSTZonalContext__T:
         """
-            Get the critical distance.
+            Deprecated.
+            since 12.2 Use getChi() instead
+            Get Χ = 1 / sqrt(1 - e²) = 1 / B.
         
-            The critical distance from the center of the central body aims at defining the atmosphere entry/exit.
+            Returns:
+                Χ
+        
+        
+        """
+        ...
+    def getX2ON2A2XP1(self) -> _FieldDSSTZonalContext__T:
+        """
+            Get (χ²) / (n² * a² * (χ + 1 ) ).
         
             Returns:
-                the critical distance from the center of the central body (m)
+                x2on2a2xp1
         
         
         """
         ...
-    def getSpacecraft(self) -> org.orekit.forces.drag.DragSensitive:
+    def getX3ON2A(self) -> _FieldDSSTZonalContext__T:
         """
-            Get spacecraft shape.
+            Get χ³ / (n² * a).
         
             Returns:
-                spacecraft shape
+                x3on2a
         
         
         """
         ...
-    def setRbar(self, double: float) -> None:
+    def getXON2A2(self) -> _FieldDSSTZonalContext__T:
         """
-            Set the critical distance from the center of the central body at which the atmosphere is considered to end, i.e. beyond
-            this distance atmospheric drag is not considered.
+            Get χ / (n² * a²).
         
-            Parameters:
-                rbar (double): the critical distance from the center of the central body (m)
+            Returns:
+                xon2a2
         
         
         """
         ...
-
-class DSSTSolarRadiationPressure(AbstractGaussianContribution):
-    """
-    public class DSSTSolarRadiationPressure extends :class:`~org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution`
-    
-        Solar radiation pressure contribution to the :class:`~org.orekit.propagation.semianalytical.dsst.DSSTPropagator`.
-    
-        The solar radiation pressure acceleration is computed through the acceleration model of
-        :class:`~org.orekit.forces.radiation.SolarRadiationPressure`.
-    """
-    @typing.overload
-    def __init__(self, double: float, double2: float, double3: float, double4: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, double5: float): ...
-    @typing.overload
-    def __init__(self, double: float, double2: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, double3: float): ...
-    @typing.overload
-    def __init__(self, double: float, double2: float, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, radiationSensitive: org.orekit.forces.radiation.RadiationSensitive, double3: float): ...
-    @typing.overload
-    def __init__(self, extendedPVCoordinatesProvider: typing.Union[org.orekit.utils.ExtendedPVCoordinatesProvider, typing.Callable], oneAxisEllipsoid: org.orekit.bodies.OneAxisEllipsoid, radiationSensitive: org.orekit.forces.radiation.RadiationSensitive, double: float): ...
-    def getEquatorialRadius(self) -> float:
+    def getXX(self) -> _FieldDSSTZonalContext__T:
         """
-            Get the central body equatorial radius.
+            Deprecated.
+            since 12.2 Use getChi2() instead
+            Get Χ².
         
             Returns:
-                central body equatorial radius (m)
+                Χ².
         
         
         """
         ...
-    def getSpacecraft(self) -> org.orekit.forces.radiation.RadiationSensitive:
+    def getXXX(self) -> _FieldDSSTZonalContext__T:
         """
-            Get spacecraft shape.
+            Deprecated.
+            since 12.2 Use getChi3() instead
+            Get Χ³.
         
             Returns:
-                the spacecraft shape.
+                Χ³
         
         
         """
@@ -3137,6 +3246,7 @@ class __module_protocol__(Protocol):
     AbstractGaussianContributionContext: typing.Type[AbstractGaussianContributionContext]
     DSSTAtmosphericDrag: typing.Type[DSSTAtmosphericDrag]
     DSSTForceModel: typing.Type[DSSTForceModel]
+    DSSTGravityContext: typing.Type[DSSTGravityContext]
     DSSTJ2SquaredClosedForm: typing.Type[DSSTJ2SquaredClosedForm]
     DSSTJ2SquaredClosedFormContext: typing.Type[DSSTJ2SquaredClosedFormContext]
     DSSTNewtonianAttraction: typing.Type[DSSTNewtonianAttraction]
@@ -3150,6 +3260,7 @@ class __module_protocol__(Protocol):
     DSSTZonal: typing.Type[DSSTZonal]
     DSSTZonalContext: typing.Type[DSSTZonalContext]
     FieldAbstractGaussianContributionContext: typing.Type[FieldAbstractGaussianContributionContext]
+    FieldDSSTGravityContext: typing.Type[FieldDSSTGravityContext]
     FieldDSSTJ2SquaredClosedFormContext: typing.Type[FieldDSSTJ2SquaredClosedFormContext]
     FieldDSSTNewtonianAttractionContext: typing.Type[FieldDSSTNewtonianAttractionContext]
     FieldDSSTTesseralContext: typing.Type[FieldDSSTTesseralContext]
diff --git a/org-stubs/orekit/propagation/semianalytical/dsst/utilities/__init__.pyi b/org-stubs/orekit/propagation/semianalytical/dsst/utilities/__init__.pyi
index 9cad8a3cc93eb7f089dadce97e3ea853face847d..c8a9345a9142481c16556bdfa7b101ead04e2d7d 100644
--- a/org-stubs/orekit/propagation/semianalytical/dsst/utilities/__init__.pyi
+++ b/org-stubs/orekit/propagation/semianalytical/dsst/utilities/__init__.pyi
@@ -30,6 +30,8 @@ class AuxiliaryElements:
     def __init__(self, orbit: org.orekit.orbits.Orbit, int: int): ...
     def getAlpha(self) -> float:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTGravityContext.getAlpha` instead
             Get direction cosine α for central body.
         
             Returns:
@@ -50,6 +52,8 @@ class AuxiliaryElements:
         ...
     def getBeta(self) -> float:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTGravityContext.getBeta` instead
             Get direction cosine β for central body.
         
             Returns:
@@ -100,6 +104,8 @@ class AuxiliaryElements:
         ...
     def getGamma(self) -> float:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.DSSTGravityContext.getGamma` instead
             Get direction cosine γ for central body.
         
             Returns:
@@ -495,6 +501,8 @@ class FieldAuxiliaryElements(typing.Generic[_FieldAuxiliaryElements__T]):
     def __init__(self, fieldOrbit: org.orekit.orbits.FieldOrbit[_FieldAuxiliaryElements__T], int: int): ...
     def getAlpha(self) -> _FieldAuxiliaryElements__T:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTGravityContext.getAlpha` instead
             Get direction cosine α for central body.
         
             Returns:
@@ -515,6 +523,8 @@ class FieldAuxiliaryElements(typing.Generic[_FieldAuxiliaryElements__T]):
         ...
     def getBeta(self) -> _FieldAuxiliaryElements__T:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTGravityContext.getBeta` instead
             Get direction cosine β for central body.
         
             Returns:
@@ -556,6 +566,8 @@ class FieldAuxiliaryElements(typing.Generic[_FieldAuxiliaryElements__T]):
         ...
     def getGamma(self) -> _FieldAuxiliaryElements__T:
         """
+            Deprecated.
+            since 12.2, use :meth:`~org.orekit.propagation.semianalytical.dsst.forces.FieldDSSTGravityContext.getGamma` instead
             Get direction cosine γ for central body.
         
             Returns:
diff --git a/org-stubs/orekit/time/__init__.pyi b/org-stubs/orekit/time/__init__.pyi
index 9f1e5ec7ae7fcdbdbbf540ed32f9536ef8534612..798a8426d9a9f5cd33feed515a70a68bd0f3e804 100644
--- a/org-stubs/orekit/time/__init__.pyi
+++ b/org-stubs/orekit/time/__init__.pyi
@@ -15,6 +15,7 @@ import java.util.function
 import java.util.stream
 import jpype
 import org.hipparchus
+import org.hipparchus.analysis.differentiation
 import org.orekit.data
 import org.orekit.frames
 import org.orekit.gnss
@@ -245,6 +246,17 @@ class DateComponents(java.io.Serializable, java.lang.Comparable['DateComponents'
             9.0
     
     
+    """
+    JD_TO_MJD: typing.ClassVar[float] = ...
+    """
+    public static final double JD_TO_MJD
+    
+        Offset between julian day epoch and modified julian day epoch.
+    
+        Also see:
+            :meth:`~constant`
+    
+    
     """
     @typing.overload
     def __init__(self, int: int): ...
@@ -2711,6 +2723,66 @@ class AbsoluteDate(TimeStamped, TimeShiftable['AbsoluteDate'], java.lang.Compara
                 date attached to the object
         
         
+        """
+        ...
+    @typing.overload
+    def getJD(self) -> float:
+        """
+            Return the given date as a Julian Date **expressed in UTC**.
+        
+            Returns:
+                double representation of the given date as Julian Date.
+        
+            Since:
+                12.2
+        
+        """
+        ...
+    @typing.overload
+    def getJD(self, timeScale: TimeScale) -> float:
+        """
+            Return the given date as a Julian Date expressed in given timescale.
+        
+            Parameters:
+                ts (:class:`~org.orekit.time.TimeScale`): time scale
+        
+            Returns:
+                double representation of the given date as Julian Date.
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
+    @typing.overload
+    def getMJD(self) -> float:
+        """
+            Return the given date as a Modified Julian Date **expressed in UTC**.
+        
+            Returns:
+                double representation of the given date as Modified Julian Date.
+        
+            Since:
+                12.2
+        
+        """
+        ...
+    @typing.overload
+    def getMJD(self, timeScale: TimeScale) -> float:
+        """
+            Return the given date as a Modified Julian Date expressed in given timescale.
+        
+            Parameters:
+                ts (:class:`~org.orekit.time.TimeScale`): time scale
+        
+            Returns:
+                double representation of the given date as Modified Julian Date.
+        
+            Since:
+                12.2
+        
+        
         """
         ...
     def hashCode(self) -> int:
@@ -6499,12 +6571,72 @@ class FieldAbsoluteDate(FieldTimeStamped[_FieldAbsoluteDate__T], FieldTimeShifta
     _getJ2000Epoch__T = typing.TypeVar('_getJ2000Epoch__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def getJ2000Epoch(field: org.hipparchus.Field[_getJ2000Epoch__T]) -> 'FieldAbsoluteDate'[_getJ2000Epoch__T]: ...
+    @typing.overload
+    def getJD(self) -> _FieldAbsoluteDate__T:
+        """
+            Return the given date as a Julian Date **expressed in UTC**.
+        
+            Returns:
+                double representation of the given date as Julian Date.
+        
+            Since:
+                12.2
+        
+        """
+        ...
+    @typing.overload
+    def getJD(self, timeScale: TimeScale) -> _FieldAbsoluteDate__T:
+        """
+            Return the given date as a Julian Date expressed in given timescale.
+        
+            Parameters:
+                ts (:class:`~org.orekit.time.TimeScale`): time scale
+        
+            Returns:
+                double representation of the given date as Julian Date.
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     _getJavaEpoch__T = typing.TypeVar('_getJavaEpoch__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def getJavaEpoch(field: org.hipparchus.Field[_getJavaEpoch__T]) -> 'FieldAbsoluteDate'[_getJavaEpoch__T]: ...
     _getJulianEpoch__T = typing.TypeVar('_getJulianEpoch__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def getJulianEpoch(field: org.hipparchus.Field[_getJulianEpoch__T]) -> 'FieldAbsoluteDate'[_getJulianEpoch__T]: ...
+    @typing.overload
+    def getMJD(self) -> _FieldAbsoluteDate__T:
+        """
+            Return the given date as a Modified Julian Date **expressed in UTC**.
+        
+            Returns:
+                double representation of the given date as Modified Julian Date.
+        
+            Since:
+                12.2
+        
+        """
+        ...
+    @typing.overload
+    def getMJD(self, timeScale: TimeScale) -> _FieldAbsoluteDate__T:
+        """
+            Return the given date as a Modified Julian Date expressed in given timescale.
+        
+            Parameters:
+                ts (:class:`~org.orekit.time.TimeScale`): time scale
+        
+            Returns:
+                double representation of the given date as Modified Julian Date.
+        
+            Since:
+                12.2
+        
+        
+        """
+        ...
     _getModifiedJulianEpoch__T = typing.TypeVar('_getModifiedJulianEpoch__T', bound=org.hipparchus.CalculusFieldElement)  # <T>
     @staticmethod
     def getModifiedJulianEpoch(field: org.hipparchus.Field[_getModifiedJulianEpoch__T]) -> 'FieldAbsoluteDate'[_getModifiedJulianEpoch__T]: ...
@@ -6688,6 +6820,7 @@ class FieldAbsoluteDate(FieldTimeStamped[_FieldAbsoluteDate__T], FieldTimeShifta
         
         """
         ...
+    def toFUD2Field(self) -> 'FieldAbsoluteDate'[org.hipparchus.analysis.differentiation.FieldUnivariateDerivative2[_FieldAbsoluteDate__T]]: ...
     @typing.overload
     def toInstant(self) -> java.time.Instant:
         """
diff --git a/org-stubs/orekit/utils/__init__.pyi b/org-stubs/orekit/utils/__init__.pyi
index a001115ce5693a08a220d9103e451f359727e0f2..ecb4e8583360218e7ffcbfedc69ca63abc31a849 100644
--- a/org-stubs/orekit/utils/__init__.pyi
+++ b/org-stubs/orekit/utils/__init__.pyi
@@ -484,6 +484,67 @@ class AngularDerivativesFilter(java.lang.Enum['AngularDerivativesFilter']):
         """
         ...
 
+class CartesianCovarianceUtils:
+    """
+    public class CartesianCovarianceUtils extends :class:`~org.orekit.utils.https:.docs.oracle.com.javase.8.docs.api.java.lang.Object?is`
+    
+        Utility class for conversions related to Cartesian covariance matrices.
+    
+        Since:
+            12.2
+    """
+    @staticmethod
+    def changeReferenceFrame(frame: org.orekit.frames.Frame, realMatrix: org.hipparchus.linear.RealMatrix, absoluteDate: org.orekit.time.AbsoluteDate, frame2: org.orekit.frames.Frame) -> org.hipparchus.linear.RealMatrix:
+        """
+            Convert input position-velocity covariance matrix between reference frames.
+        
+            Parameters:
+                inputFrame (:class:`~org.orekit.frames.Frame`): input frame
+                outputFrame (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.linear.RealMatrix?is`): output frame
+                covarianceMatrix (:class:`~org.orekit.time.AbsoluteDate`): position-velocity covariance matrix in reference frame
+                date (:class:`~org.orekit.frames.Frame`): epoch
+        
+            Returns:
+                converted covariance matrix
+        
+        
+        """
+        ...
+    @staticmethod
+    def convertFromLofType(lOFType: org.orekit.frames.LOFType, realMatrix: org.hipparchus.linear.RealMatrix, vector3D: org.hipparchus.geometry.euclidean.threed.Vector3D, vector3D2: org.hipparchus.geometry.euclidean.threed.Vector3D) -> org.hipparchus.linear.RealMatrix:
+        """
+            Convert input position-velocity covariance matrix from local frame to reference one.
+        
+            Parameters:
+                position (:class:`~org.orekit.frames.LOFType`): position vector in reference frame
+                velocity (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.linear.RealMatrix?is`): velocity vector in reference frame
+                covarianceMatrix (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): position-velocity covariance matrix in local frame
+                lofType (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): input local orbital frame
+        
+            Returns:
+                converted covariance matrix
+        
+        
+        """
+        ...
+    @staticmethod
+    def convertToLofType(vector3D: org.hipparchus.geometry.euclidean.threed.Vector3D, vector3D2: org.hipparchus.geometry.euclidean.threed.Vector3D, realMatrix: org.hipparchus.linear.RealMatrix, lOFType: org.orekit.frames.LOFType) -> org.hipparchus.linear.RealMatrix:
+        """
+            Convert input position-velocity covariance matrix from reference frame to local one.
+        
+            Parameters:
+                position (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): position vector in reference frame
+                velocity (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.geometry.euclidean.threed.Vector3D?is`): velocity vector in reference frame
+                covarianceMatrix (:class:`~org.orekit.utils.https:.www.hipparchus.org.apidocs.org.hipparchus.linear.RealMatrix?is`): position-velocity covariance matrix in reference frame
+                lofType (:class:`~org.orekit.frames.LOFType`): output local orbital frame
+        
+            Returns:
+                converted covariance matrix
+        
+        
+        """
+        ...
+
 class CartesianDerivativesFilter(java.lang.Enum['CartesianDerivativesFilter']):
     """
     public enum CartesianDerivativesFilter extends :class:`~org.orekit.utils.https:.docs.oracle.com.javase.8.docs.api.java.lang.Enum?is`<:class:`~org.orekit.utils.CartesianDerivativesFilter`>
@@ -7135,9 +7196,11 @@ class FieldAbsolutePVCoordinates(TimeStampedFieldPVCoordinates[_FieldAbsolutePVC
         Also see:
             :class:`~org.orekit.utils.AbsolutePVCoordinates`
     """
-    ___init___0__U = typing.TypeVar('___init___0__U', bound=org.hipparchus.analysis.differentiation.FieldDerivative)  # <U>
+    ___init___1__U = typing.TypeVar('___init___1__U', bound=org.hipparchus.analysis.differentiation.FieldDerivative)  # <U>
+    @typing.overload
+    def __init__(self, field: org.hipparchus.Field[_FieldAbsolutePVCoordinates__T], absolutePVCoordinates: AbsolutePVCoordinates): ...
     @typing.overload
-    def __init__(self, frame: org.orekit.frames.Frame, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldAbsolutePVCoordinates__T], fieldVector3D: org.hipparchus.geometry.euclidean.threed.FieldVector3D[___init___0__U]): ...
+    def __init__(self, frame: org.orekit.frames.Frame, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldAbsolutePVCoordinates__T], fieldVector3D: org.hipparchus.geometry.euclidean.threed.FieldVector3D[___init___1__U]): ...
     @typing.overload
     def __init__(self, frame: org.orekit.frames.Frame, fieldAbsoluteDate: org.orekit.time.FieldAbsoluteDate[_FieldAbsolutePVCoordinates__T], fieldVector3D: org.hipparchus.geometry.euclidean.threed.FieldVector3D[_FieldAbsolutePVCoordinates__T], fieldVector3D2: org.hipparchus.geometry.euclidean.threed.FieldVector3D[_FieldAbsolutePVCoordinates__T]): ...
     @typing.overload
@@ -7284,6 +7347,7 @@ class __module_protocol__(Protocol):
     AggregatedPVCoordinatesProvider: typing.Type[AggregatedPVCoordinatesProvider]
     AngularCoordinates: typing.Type[AngularCoordinates]
     AngularDerivativesFilter: typing.Type[AngularDerivativesFilter]
+    CartesianCovarianceUtils: typing.Type[CartesianCovarianceUtils]
     CartesianDerivativesFilter: typing.Type[CartesianDerivativesFilter]
     ConstantPVCoordinatesProvider: typing.Type[ConstantPVCoordinatesProvider]
     Constants: typing.Type[Constants]
diff --git a/pom.xml b/pom.xml
index 8d9d6f9f3575e2bedf399d9cdfa3e68c1faa5dba..2ecbec0ebd3e09303998ea087095203a3d69c447 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.3</orekit.version>
+      <orekit.version>12.2</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 bc56e51cc04df0d4cf500974f58bb502312d6a97..3f50aa236e93a53fc4087e51428b27ffb8c83060 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@ allow-direct-references = true
 
 [project]
 name = "orekit_jpype"
-version = "12.1.3.0"
+version = "12.2.0.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"}]
diff --git a/test/BackAndForthDetectorTest.py b/test/BackAndForthDetectorTest.py
index 50ec15020e4e6a5dc012356d317f6c0298aa4a51..d697e90d2300187e183e70c029d52266d87041dc 100644
--- a/test/BackAndForthDetectorTest.py
+++ b/test/BackAndForthDetectorTest.py
@@ -51,7 +51,7 @@ from jpype import JImplements, JOverride, shutdownJVM
 
 @JImplements(EventHandler)
 class Visibility(object): # implements EventHandler<ElevationDetector> {
-       
+
         def __init__(self):
             self._visiNb = 0
 
@@ -59,7 +59,7 @@ class Visibility(object): # implements EventHandler<ElevationDetector> {
         def init(self, initialstate, target, detector):
             pass
 
-        def getVisiNb(self): 
+        def getVisiNb(self):
             return self._visiNb
 
         @JOverride
@@ -70,7 +70,11 @@ class Visibility(object): # implements EventHandler<ElevationDetector> {
         @JOverride
         def resetState(self, detector,  oldState):
             return oldState
-        
+
+        @JOverride
+        def finish(self, finalState, detector):
+            pass
+
 class BackAndForthDetectorTest(unittest.TestCase):
 
     def testBackAndForth(self):
@@ -104,7 +108,7 @@ class BackAndForthDetectorTest(unittest.TestCase):
 
         # Detector
         visi = Visibility() #.of_(ElevationDetector);
-        det = ElevationDetector(stationFrame).withConstantElevation(math.radians(10.0)).withHandler(visi)   
+        det = ElevationDetector(stationFrame).withConstantElevation(math.radians(10.0)).withHandler(visi)
         propagator.addEventDetector(det)
 
         # Forward propagation (AOS + LOS)
diff --git a/test/BrouwerLyddanePropagatorTest.py b/test/BrouwerLyddanePropagatorTest.py
index ca186db1fbe5d5a48124b97c018305814c95656f..9290efc56a74c77526f27016227be5edcf0d5469 100644
--- a/test/BrouwerLyddanePropagatorTest.py
+++ b/test/BrouwerLyddanePropagatorTest.py
@@ -67,17 +67,17 @@ class BrouwerLyddanePropagatorTest(unittest.TestCase):
 
         # positions  velocity and semi major axis match perfectly
         self.assertAlmostEqual(0.0, Vector3D.distance(initialOrbit.getPVCoordinates().getPosition(),
-                                                       finalOrbit.getPVCoordinates().getPosition()), delta=1.0e-8)
+                                                       finalOrbit.getPVCoordinates().getPosition()), delta=2.4e-8)
 
         self.assertAlmostEqual(0.0, Vector3D.distance(initialOrbit.getPVCoordinates().getVelocity(),
-                                                       finalOrbit.getPVCoordinates().getVelocity()), delta= 1.0e-11)
-        self.assertAlmostEqual(0.0, finalOrbit.getA() - initialOrbit.getA(), delta=0.0)
+                                                       finalOrbit.getPVCoordinates().getVelocity()), delta= 1.9e-11)
+        self.assertAlmostEqual(0.0, finalOrbit.getA() - initialOrbit.getA(), delta=9.4e-10)
 
     def test_compareToNumericalPropagation(self):
 
         inertialFrame = FramesFactory.getEME2000()
         initDate = AbsoluteDate.J2000_EPOCH.shiftedBy(584.)
-        timeshift = 60000.0 
+        timeshift = 60000.0
 
         # Initial orbit
         a = 24396159.0 # semi major axis in meters
@@ -127,15 +127,15 @@ class BrouwerLyddanePropagatorTest(unittest.TestCase):
         BLFinalState = BLextrapolator.propagate(initDate.shiftedBy(timeshift))
         BLOrbit = OrbitType.KEPLERIAN.convertType(BLFinalState.getOrbit())
 
-        self.assertAlmostEqual(NumOrbit.getA(), BLOrbit.getA(), delta=0.5)
-        self.assertAlmostEqual(NumOrbit.getE(), BLOrbit.getE(), delta=0.00000028)
-        self.assertAlmostEqual(NumOrbit.getI(), BLOrbit.getI(), delta=0.000004)
+        self.assertAlmostEqual(NumOrbit.getA(), BLOrbit.getA(), delta=0.18)
+        self.assertAlmostEqual(NumOrbit.getE(), BLOrbit.getE(), delta=3.2e-6)
+        self.assertAlmostEqual(NumOrbit.getI(), BLOrbit.getI(), delta=6.9e-8)
         self.assertAlmostEqual(MathUtils.normalizeAngle(NumOrbit.getPerigeeArgument(), FastMath.PI),
-                                MathUtils.normalizeAngle(BLOrbit.getPerigeeArgument(), FastMath.PI), delta=0.119)
+                                MathUtils.normalizeAngle(BLOrbit.getPerigeeArgument(), FastMath.PI), delta=0.0053)
         self.assertAlmostEqual(MathUtils.normalizeAngle(NumOrbit.getRightAscensionOfAscendingNode(), FastMath.PI),
-                                MathUtils.normalizeAngle(BLOrbit.getRightAscensionOfAscendingNode(), FastMath.PI), delta=0.000072)
+                                MathUtils.normalizeAngle(BLOrbit.getRightAscensionOfAscendingNode(), FastMath.PI), delta=1.2e-6)
         self.assertAlmostEqual(MathUtils.normalizeAngle(NumOrbit.getTrueAnomaly(), FastMath.PI),
-                                MathUtils.normalizeAngle(BLOrbit.getTrueAnomaly(), FastMath.PI), delta=0.12)
+                                MathUtils.normalizeAngle(BLOrbit.getTrueAnomaly(), FastMath.PI), delta=0.0052)
 
 
 if __name__ == '__main__':
diff --git a/test/EphemerisEventsTest.py b/test/EphemerisEventsTest.py
index 055c0114d04c639f361cfebcbb5ddbc0b6f9a865..8faffc28315845a0171af17523c9c66e1ad6e2d0 100644
--- a/test/EphemerisEventsTest.py
+++ b/test/EphemerisEventsTest.py
@@ -1,4 +1,4 @@
-""" 
+"""
 original copyright:
 
 /* Copyright 2002-2024 CS GROUP
@@ -23,7 +23,7 @@ original copyright:
 """
 import unittest
 import jpype
-from jpype import JImplements, JOverride    
+from jpype import JImplements, JOverride
 
 from orekit_jpype import initVM
 initVM()
@@ -70,6 +70,10 @@ class myContinueOnEvent(object):
         def resetState(self, detector, oldState):
             return oldState
 
+        @JOverride
+        def finish(self, finalState, detector):
+            pass
+
 class EphemerisEventsTest(unittest.TestCase):
 
     inEclipsecounter = 0
@@ -115,14 +119,14 @@ class EphemerisEventsTest(unittest.TestCase):
         tab = []
         for j in range(nbIntervals + 1):
             state = propagator.propagate(self.initDate.shiftedBy((j * deltaT) / nbIntervals))
-            tab.append(SpacecraftState(orb_type.convertType(state.getOrbit()), 
-                                       state.getAttitude(), 
+            tab.append(SpacecraftState(orb_type.convertType(state.getOrbit()),
+                                       state.getAttitude(),
                                        state.getMass()))
 
         interpolator = SpacecraftStateInterpolator(2, frame, frame)
 
         return Ephemeris(ArrayList(tab), interpolator)
-    
+
 
     def buildEclipseDetector(self, org_type: OrbitType) -> EclipseDetector:
         sunRadius = 696000000.
diff --git a/test/EventDetectorTest.py b/test/EventDetectorTest.py
index f81e76ea501464980cd2a71c61188c97d96cd855..9e170fe548ae3d800c73de25034fde2d04e74249 100644
--- a/test/EventDetectorTest.py
+++ b/test/EventDetectorTest.py
@@ -72,6 +72,10 @@ class MyEventCounter():
     def resetState(self, detector, oldState):
         return oldState
 
+    @JOverride
+    def finish(self, finalState, detector):
+        pass
+
 mycounter = MyEventCounter()
 
 @JImplements(AdaptableInterval)
@@ -124,6 +128,10 @@ class MyElevationDetector():
     def getHandler(self):
         return mycounter
 
+    @JOverride
+    def finish(self, state):
+        pass
+
 
 class EventDetectorTest(unittest.TestCase):
 
diff --git a/test/EventHandlerTest.py b/test/EventHandlerTest.py
index a6e77b0e138d7fc1eeb6fe945dc23686cd94dbf5..5961f84b2d9466b3c06b41fa792d37e2e95f6d24 100644
--- a/test/EventHandlerTest.py
+++ b/test/EventHandlerTest.py
@@ -96,6 +96,10 @@ class EventHandlerTest(unittest.TestCase):
             def resetState(self, detector, oldState):
                 return oldState
 
+            @JOverride
+            def finish(self, finalState, detector):
+                pass
+
         #%% detectors
         detector = ElevationDetector(sta1Frame).withConstantElevation(elevation)
         detector = detector.withHandler(myContinueOnEvent())  #.of_(ElevationDetector))
diff --git a/test/InterSatDirectViewDetectorTest.py b/test/InterSatDirectViewDetectorTest.py
index db6b132728e6fd34f4cb0650f7aee83b6a05e8d6..7a9ddb6f303edd6a2bbca855ab9da60fa6c98f1b 100644
--- a/test/InterSatDirectViewDetectorTest.py
+++ b/test/InterSatDirectViewDetectorTest.py
@@ -85,7 +85,7 @@ class GrazingHandler:
 
         testvalue = FastMath.abs(FastMath.toDegrees(topo.getAzimuth(pSlave, frame, grazingDate) -
                                                     topo.getAzimuth(pMaster, frame, grazingDate)))
-        assert -6.0e-14 < testvalue - 180.0 < 6.0e-14
+        assert -6.0e-13 < testvalue - 180.0 < 6.0e-13
 
         return Action.CONTINUE
 
@@ -94,6 +94,10 @@ class GrazingHandler:
     def resetState(self, detector, oldState):
         pass
 
+    @JOverride
+    def finish(self, finalState, detector):
+        pass
+
 
 class InterSatDirectViewDetectorTest(unittest.TestCase):