From 97f9f6729837e834eea4447265bc228d20b55503 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Jonglez?= <clement@jonglez.space>
Date: Fri, 18 Oct 2024 16:51:06 +0200
Subject: [PATCH] update stubs

---
 java-stubs/awt/geom/__init__.pyi              |    6 +-
 java-stubs/awt/image/__init__.pyi             |    2 +
 java-stubs/io/__init__.pyi                    |   16 +-
 java-stubs/lang/__init__.pyi                  |  601 ++-----
 java-stubs/lang/constant/__init__.pyi         |   34 -
 java-stubs/lang/foreign/__init__.pyi          |  531 ------
 java-stubs/lang/invoke/__init__.pyi           |   28 +-
 java-stubs/lang/module/__init__.pyi           |    5 -
 java-stubs/lang/reflect/__init__.pyi          |  110 --
 java-stubs/lang/runtime/__init__.pyi          |    9 -
 java-stubs/math/__init__.pyi                  |    2 -
 java-stubs/net/__init__.pyi                   |    6 -
 java-stubs/net/http/__init__.pyi              |    9 +-
 java-stubs/net/spi/__init__.pyi               |   23 -
 java-stubs/nio/channels/__init__.pyi          |    4 -
 java-stubs/nio/charset/__init__.pyi           |    4 -
 java-stubs/nio/file/spi/__init__.pyi          |    3 -
 java-stubs/security/__init__.pyi              |    6 -
 java-stubs/text/__init__.pyi                  |    1 -
 java-stubs/time/__init__.pyi                  |    2 -
 java-stubs/time/chrono/__init__.pyi           |    5 -
 java-stubs/time/format/__init__.pyi           |    9 -
 java-stubs/util/__init__.pyi                  |  747 ++++-----
 java-stubs/util/concurrent/__init__.pyi       |  127 +-
 java-stubs/util/regex/__init__.pyi            |   13 -
 java-stubs/util/spi/__init__.pyi              |    1 -
 java-stubs/util/zip/__init__.pyi              |    7 -
 org-stubs/orekit/__init__.pyi                 |    2 +
 org-stubs/orekit/attitudes/__init__.pyi       |  316 ++++
 org-stubs/orekit/bodies/__init__.pyi          |   70 +
 org-stubs/orekit/control/__init__.pyi         |   15 +
 .../orekit/control/indirect/__init__.pyi      |   17 +
 .../control/indirect/adjoint/__init__.pyi     |  883 ++++++++++
 .../indirect/adjoint/cost/__init__.pyi        |  402 +++++
 .../control/indirect/shooting/__init__.pyi    |  234 +++
 .../indirect/shooting/boundary/__init__.pyi   |  185 +++
 .../shooting/propagation/__init__.pyi         |  327 ++++
 org-stubs/orekit/errors/__init__.pyi          |    2 +
 .../measurements/modifiers/__init__.pyi       |   10 +-
 org-stubs/orekit/files/sp3/__init__.pyi       |    7 +
 org-stubs/orekit/forces/gravity/__init__.pyi  |   38 +-
 .../forces/gravity/potential/__init__.pyi     |   61 +-
 .../orekit/forces/maneuvers/__init__.pyi      |    8 -
 .../orekit/forces/radiation/__init__.pyi      |  246 ++-
 org-stubs/orekit/frames/__init__.pyi          |   63 +-
 .../models/earth/atmosphere/__init__.pyi      |    4 +-
 .../models/earth/troposphere/__init__.pyi     |    5 +-
 org-stubs/orekit/orbits/__init__.pyi          |  127 ++
 .../propagation/analytical/__init__.pyi       |   39 +-
 .../propagation/analytical/tle/__init__.pyi   |   19 +
 .../propagation/conversion/__init__.pyi       |  913 ++++++-----
 .../orekit/propagation/events/__init__.pyi    |  599 ++++---
 .../propagation/events/handlers/__init__.pyi  |  104 ++
 .../semianalytical/dsst/forces/__init__.pyi   | 1451 +++++++++--------
 .../dsst/utilities/__init__.pyi               |   12 +
 org-stubs/orekit/time/__init__.pyi            |  133 ++
 org-stubs/orekit/utils/__init__.pyi           |   68 +-
 57 files changed, 5431 insertions(+), 3240 deletions(-)
 delete mode 100644 java-stubs/lang/foreign/__init__.pyi
 create mode 100644 org-stubs/orekit/control/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/adjoint/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/adjoint/cost/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/shooting/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/shooting/boundary/__init__.pyi
 create mode 100644 org-stubs/orekit/control/indirect/shooting/propagation/__init__.pyi

diff --git a/java-stubs/awt/geom/__init__.pyi b/java-stubs/awt/geom/__init__.pyi
index d71c9da..fb72331 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 f97cc72..4d8e0df 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 71543ab..8ddeeca 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 115d236..48332f9 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 51dbec6..02b2db7 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 9083382..0000000
--- 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 19bef8a..b51db8d 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 2c4790f..f0566b4 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 2708db2..e1dc934 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 c112535..f860a22 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 1bcd635..ad61967 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 af98fd0..38a0b63 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 6e12d6d..eb93bca 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 64c7bec..e10c759 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 dde9f09..fcf80a2 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 6e74455..1a546f0 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 e91284b..29042d1 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 6692a35..170a418 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 2d5c0a5..efe5f8c 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 f45c575..84910a6 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 2601dc9..1d87932 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 e06b6ba..6c3ba24 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 800dc35..9a3f097 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 750e4b9..88687a5 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 be069c0..0477bc0 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 86e1ba3..4f3a3f9 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 eabe91f..982013f 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/org-stubs/orekit/__init__.pyi b/org-stubs/orekit/__init__.pyi
index 7e254eb..377074d 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 63cca04..9c865be 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 1c3c8b7..608016c 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 0000000..5fbe48e
--- /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 0000000..427a6c3
--- /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 0000000..e8c7185
--- /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 0000000..5bc553e
--- /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 0000000..bb0f02c
--- /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 0000000..84c84a9
--- /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 0000000..66303c2
--- /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 2d2db43..eae64d6 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 1354beb..b48921c 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 f264724..1cd8ca9 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 d8679f8..76fa102 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 d32d0ab..03f1ac5 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 31c9c85..f1328f5 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 b20b129..764998a 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 b5c476e..03c9761 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 a400986..4a7c9b6 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 6461dba..967f634 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 d8a0172..32d9879 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 5896dbf..faf5006 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 0bbcf4b..bd007c6 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 b75c32d..771672d 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 0a99b97..76c476c 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 4fcd120..6d80ccc 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 fc3ff0c..56bbc6f 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 9cad8a3..c8a9345 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 9f1e5ec..798a842 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 a001115..ecb4e85 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]
-- 
GitLab