# Auto-generated stub file for IDE autocomplete support.
# Do not edit manually - regenerate with: python scripts/generate_stubs.py

from dataclasses import dataclass
from typing import Any, ClassVar, List, Optional
from typing_extensions import Self
from uuid import UUID
import weakref

from enum import Enum
from pathlib import Path
from . import extensions as extensions
from rewrite import Checksum, FileAttributes, SourceFile, Tree, TreeVisitor, Markers, Cursor, PrintOutputCapture, PrinterFactory

from .support_types import (
    P as P,
    T as T,
    J2 as J2,
    J3 as J3,
    J as J,
    Comment as Comment,
    TextComment as TextComment,
    Space as Space,
    JavaSourceFile as JavaSourceFile,
    Expression as Expression,
    Statement as Statement,
    TypedTree as TypedTree,
    NameTree as NameTree,
    TypeTree as TypeTree,
    Loop as Loop,
    MethodCall as MethodCall,
    JavaType as JavaType,
    JRightPadded as JRightPadded,
    JLeftPadded as JLeftPadded,
    JContainer as JContainer,
)

@dataclass(frozen=True)
class AnnotatedType(Expression, TypeTree):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _type_expression: TypeTree

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def type_expression(self) -> TypeTree: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Annotation(Expression):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Annotation

        def replace(self, **kwargs: Any) -> Annotation: ...

        @property
        def arguments(self) -> Optional[JContainer[Expression]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotation_type: NameTree
    _arguments: Optional[JContainer[Expression]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotation_type(self) -> NameTree: ...
    @property
    def arguments(self) -> Optional[List[Expression]]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ArrayAccess(Expression, TypedTree):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _indexed: Expression
    _dimension: ArrayDimension
    _type: Optional[JavaType]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def indexed(self) -> Expression: ...
    @property
    def dimension(self) -> ArrayDimension: ...
    @property
    def type(self) -> Optional[JavaType]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ArrayType(TypeTree, Expression):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _element_type: TypeTree
    _annotations: Optional[List[Annotation]]
    _dimension: Optional[JLeftPadded[Space]]
    _type: JavaType

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def element_type(self) -> TypeTree: ...
    @property
    def annotations(self) -> Optional[List[Annotation]]: ...
    @property
    def dimension(self) -> Optional[JLeftPadded[Space]]: ...
    @property
    def type(self) -> JavaType: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Assert(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _condition: Expression
    _detail: Optional[JLeftPadded[Expression]]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def condition(self) -> Expression: ...
    @property
    def detail(self) -> Optional[JLeftPadded[Expression]]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Assignment(Statement, Expression, TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Assignment

        def replace(self, **kwargs: Any) -> Assignment: ...

        @property
        def assignment(self) -> JLeftPadded[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _variable: Expression
    _assignment: JLeftPadded[Expression]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def variable(self) -> Expression: ...
    @property
    def assignment(self) -> Expression: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class AssignmentOperation(Statement, Expression, TypedTree):
    class Type(Enum):
        Addition: Type
        BitAnd: Type
        BitOr: Type
        BitXor: Type
        Division: Type
        Exponentiation: Type
        FloorDivision: Type
        LeftShift: Type
        MatrixMultiplication: Type
        Modulo: Type
        Multiplication: Type
        RightShift: Type
        Subtraction: Type
        UnsignedRightShift: Type

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: AssignmentOperation

        def replace(self, **kwargs: Any) -> AssignmentOperation: ...

        @property
        def operator(self) -> JLeftPadded[AssignmentOperation.Type]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _variable: Expression
    _operator: JLeftPadded[Type]
    _assignment: Expression
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def variable(self) -> Expression: ...
    @property
    def operator(self) -> Type: ...
    @property
    def assignment(self) -> Expression: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Binary(Expression, TypedTree):
    class Type(Enum):
        Addition: Type
        Subtraction: Type
        Multiplication: Type
        Division: Type
        Modulo: Type
        LessThan: Type
        GreaterThan: Type
        LessThanOrEqual: Type
        GreaterThanOrEqual: Type
        Equal: Type
        NotEqual: Type
        BitAnd: Type
        BitOr: Type
        BitXor: Type
        LeftShift: Type
        RightShift: Type
        UnsignedRightShift: Type
        Or: Type
        And: Type

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Binary

        def replace(self, **kwargs: Any) -> Binary: ...

        @property
        def operator(self) -> JLeftPadded[Binary.Type]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _left: Expression
    _operator: JLeftPadded[Type]
    _right: Expression
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def left(self) -> Expression: ...
    @property
    def operator(self) -> Type: ...
    @property
    def right(self) -> Expression: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Block(Statement):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Block

        def replace(self, **kwargs: Any) -> Block: ...

        @property
        def static(self) -> JRightPadded[bool]: ...
        @property
        def statements(self) -> List[JRightPadded[Statement]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _static: JRightPadded[bool]
    _statements: List[JRightPadded[Statement]]
    _end: Space
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def static(self) -> bool: ...
    @property
    def statements(self) -> List[Statement]: ...
    @property
    def end(self) -> Space: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Break(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _label: Optional[Identifier]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def label(self) -> Optional[Identifier]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Case(Statement):
    class Type(Enum):
        Statement: Type
        Rule: Type

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Case

        def replace(self, **kwargs: Any) -> Case: ...

        @property
        def case_labels(self) -> JContainer[J]: ...
        @property
        def statements(self) -> JContainer[Statement]: ...
        @property
        def body(self) -> Optional[JRightPadded[J]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _type: Type
    _case_labels: JContainer[J]
    _statements: JContainer[Statement]
    _body: Optional[JRightPadded[J]]
    _guard: Optional[Expression]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def type(self) -> Type: ...
    @property
    def case_labels(self) -> List[J]: ...
    @property
    def statements(self) -> List[Statement]: ...
    @property
    def body(self) -> Optional[J]: ...
    @property
    def guard(self) -> Optional[Expression]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ClassDeclaration(Statement, TypedTree):
    @dataclass(frozen=True)
    class Kind(J):
        class Type(Enum):
            Class: Type
            Enum: Type
            Interface: Type
            Annotation: Type
            Record: Type
            Value: Type

        _id: UUID
        _prefix: Space
        _markers: Markers
        _annotations: List[Annotation]
        _type: Type

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def annotations(self) -> List[Annotation]: ...
        @property
        def type(self) -> Type: ...

        def with_id(self, id: UUID) -> ClassDeclaration.Kind: ...
        def with_prefix(self, prefix: Space) -> ClassDeclaration.Kind: ...
        def with_markers(self, markers: Markers) -> ClassDeclaration.Kind: ...
        def with_annotations(self, annotations: List[Annotation]) -> ClassDeclaration.Kind: ...
        def with_type(self, type: Type) -> ClassDeclaration.Kind: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ClassDeclaration

        def replace(self, **kwargs: Any) -> ClassDeclaration: ...

        @property
        def kind(self) -> ClassDeclaration.Kind: ...
        @property
        def type_parameters(self) -> Optional[JContainer[TypeParameter]]: ...
        @property
        def primary_constructor(self) -> Optional[JContainer[Statement]]: ...
        @property
        def extends(self) -> Optional[JLeftPadded[TypeTree]]: ...
        @property
        def implements(self) -> Optional[JContainer[TypeTree]]: ...
        @property
        def permits(self) -> Optional[JContainer[TypeTree]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _leading_annotations: List[Annotation]
    _modifiers: List[Modifier]
    _kind: Kind
    _name: Identifier
    _type_parameters: Optional[JContainer[TypeParameter]]
    _primary_constructor: Optional[JContainer[Statement]]
    _extends: Optional[JLeftPadded[TypeTree]]
    _implements: Optional[JContainer[TypeTree]]
    _permits: Optional[JContainer[TypeTree]]
    _body: Block
    _type: Optional[JavaType.FullyQualified]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def leading_annotations(self) -> List[Annotation]: ...
    @property
    def modifiers(self) -> List[Modifier]: ...
    @property
    def name(self) -> Identifier: ...
    @property
    def type_parameters(self) -> Optional[List[TypeParameter]]: ...
    @property
    def primary_constructor(self) -> Optional[List[Statement]]: ...
    @property
    def extends(self) -> Optional[TypeTree]: ...
    @property
    def implements(self) -> Optional[List[TypeTree]]: ...
    @property
    def permits(self) -> Optional[List[TypeTree]]: ...
    @property
    def body(self) -> Block: ...
    @property
    def type(self) -> Optional[JavaType.FullyQualified]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class CompilationUnit(JavaSourceFile, SourceFile):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: CompilationUnit

        def replace(self, **kwargs: Any) -> CompilationUnit: ...

        @property
        def package_declaration(self) -> Optional[JRightPadded[Package]]: ...
        @property
        def imports(self) -> List[JRightPadded[Import]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _source_path: Path
    _file_attributes: Optional[FileAttributes]
    _charset_name: Optional[str]
    _charset_bom_marked: bool
    _checksum: Optional[Checksum]
    _package_declaration: Optional[JRightPadded[Package]]
    _imports: List[JRightPadded[Import]]
    _classes: List[ClassDeclaration]
    _eof: Space
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def source_path(self) -> Path: ...
    @property
    def file_attributes(self) -> Optional[FileAttributes]: ...
    @property
    def charset_name(self) -> Optional[str]: ...
    @property
    def charset_bom_marked(self) -> bool: ...
    @property
    def checksum(self) -> Optional[Checksum]: ...
    @property
    def package_declaration(self) -> Optional[Package]: ...
    @property
    def imports(self) -> List[Import]: ...
    @property
    def classes(self) -> List[ClassDeclaration]: ...
    @property
    def eof(self) -> Space: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def printer(self, cursor: Cursor) -> TreeVisitor[Tree, PrintOutputCapture[P]]: ...
    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Continue(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _label: Optional[Identifier]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def label(self) -> Optional[Identifier]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class DoWhileLoop(Loop):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: DoWhileLoop

        def replace(self, **kwargs: Any) -> DoWhileLoop: ...

        @property
        def body(self) -> JRightPadded[Statement]: ...
        @property
        def while_condition(self) -> JLeftPadded[ControlParentheses[Expression]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _body: JRightPadded[Statement]
    _while_condition: JLeftPadded[ControlParentheses[Expression]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def body(self) -> Statement: ...
    @property
    def while_condition(self) -> ControlParentheses[Expression]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Empty(Statement, Expression, TypeTree):
    _id: UUID
    _prefix: Space
    _markers: Markers

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class EnumValue(J):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _name: Identifier
    _initializer: Optional[NewClass]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def name(self) -> Identifier: ...
    @property
    def initializer(self) -> Optional[NewClass]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class EnumValueSet(Statement):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: EnumValueSet

        def replace(self, **kwargs: Any) -> EnumValueSet: ...

        @property
        def enums(self) -> List[JRightPadded[EnumValue]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _enums: List[JRightPadded[EnumValue]]
    _terminated_with_semicolon: bool
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def enums(self) -> List[EnumValue]: ...
    @property
    def terminated_with_semicolon(self) -> bool: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class FieldAccess(TypeTree, Expression, Statement):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: FieldAccess

        def replace(self, **kwargs: Any) -> FieldAccess: ...

        @property
        def name(self) -> JLeftPadded[Identifier]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _target: Expression
    _name: JLeftPadded[Identifier]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def target(self) -> Expression: ...
    @property
    def name(self) -> Identifier: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ForEachLoop(Loop):
    @dataclass(frozen=True)
    class Control(J):
        @dataclass(frozen=True)
        class PaddingHelper:
            _t: ForEachLoop.Control

            def replace(self, **kwargs: Any) -> ForEachLoop.Control: ...

            @property
            def variable(self) -> JRightPadded[Statement]: ...
            @property
            def iterable(self) -> JRightPadded[Expression]: ...

        _id: UUID
        _prefix: Space
        _markers: Markers
        _variable: JRightPadded[Statement]
        _iterable: JRightPadded[Expression]
        _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def variable(self) -> Statement: ...
        @property
        def iterable(self) -> Expression: ...
        @property
        def padding(self) -> PaddingHelper: ...

        def with_id(self, id: UUID) -> ForEachLoop.Control: ...
        def with_prefix(self, prefix: Space) -> ForEachLoop.Control: ...
        def with_markers(self, markers: Markers) -> ForEachLoop.Control: ...
        def with_variable(self, variable: Statement) -> ForEachLoop.Control: ...
        def with_iterable(self, iterable: Expression) -> ForEachLoop.Control: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ForEachLoop

        def replace(self, **kwargs: Any) -> ForEachLoop: ...

        @property
        def body(self) -> JRightPadded[Statement]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _control: Control
    _body: JRightPadded[Statement]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def control(self) -> Control: ...
    @property
    def body(self) -> Statement: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ForLoop(Loop):
    @dataclass(frozen=True)
    class Control(J):
        @dataclass(frozen=True)
        class PaddingHelper:
            _t: ForLoop.Control

            def replace(self, **kwargs: Any) -> ForLoop.Control: ...

            @property
            def init(self) -> List[JRightPadded[Statement]]: ...
            @property
            def condition(self) -> JRightPadded[Expression]: ...
            @property
            def update(self) -> List[JRightPadded[Statement]]: ...

        _id: UUID
        _prefix: Space
        _markers: Markers
        _init: List[JRightPadded[Statement]]
        _condition: JRightPadded[Expression]
        _update: List[JRightPadded[Statement]]
        _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def init(self) -> List[Statement]: ...
        @property
        def condition(self) -> Expression: ...
        @property
        def update(self) -> List[Statement]: ...
        @property
        def padding(self) -> PaddingHelper: ...

        def with_id(self, id: UUID) -> ForLoop.Control: ...
        def with_prefix(self, prefix: Space) -> ForLoop.Control: ...
        def with_markers(self, markers: Markers) -> ForLoop.Control: ...
        def with_init(self, init: List[Statement]) -> ForLoop.Control: ...
        def with_condition(self, condition: Expression) -> ForLoop.Control: ...
        def with_update(self, update: List[Statement]) -> ForLoop.Control: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ForLoop

        def replace(self, **kwargs: Any) -> ForLoop: ...

        @property
        def body(self) -> JRightPadded[Statement]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _control: Control
    _body: JRightPadded[Statement]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def control(self) -> Control: ...
    @property
    def body(self) -> Statement: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ParenthesizedTypeTree(TypeTree, Expression):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _parenthesized_type: Parentheses[TypeTree]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def parenthesized_type(self) -> Parentheses[TypeTree]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Identifier(TypeTree, Expression):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _simple_name: str
    _type: Optional[JavaType]
    _field_type: Optional[JavaType.Variable]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def simple_name(self) -> str: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def field_type(self) -> Optional[JavaType.Variable]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class If(Statement):
    @dataclass(frozen=True)
    class Else(J):
        @dataclass(frozen=True)
        class PaddingHelper:
            _t: If.Else

            def replace(self, **kwargs: Any) -> If.Else: ...

            @property
            def body(self) -> JRightPadded[Statement]: ...

        _id: UUID
        _prefix: Space
        _markers: Markers
        _body: JRightPadded[Statement]
        _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def body(self) -> Statement: ...
        @property
        def padding(self) -> PaddingHelper: ...

        def with_id(self, id: UUID) -> If.Else: ...
        def with_prefix(self, prefix: Space) -> If.Else: ...
        def with_markers(self, markers: Markers) -> If.Else: ...
        def with_body(self, body: Statement) -> If.Else: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: If

        def replace(self, **kwargs: Any) -> If: ...

        @property
        def then_part(self) -> JRightPadded[Statement]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _if_condition: ControlParentheses[Expression]
    _then_part: JRightPadded[Statement]
    _else_part: Optional[Else]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def if_condition(self) -> ControlParentheses[Expression]: ...
    @property
    def then_part(self) -> Statement: ...
    @property
    def else_part(self) -> Optional[Else]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Import(Statement):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Import

        def replace(self, **kwargs: Any) -> Import: ...

        @property
        def static(self) -> JLeftPadded[bool]: ...
        @property
        def alias(self) -> Optional[JLeftPadded[Identifier]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _static: JLeftPadded[bool]
    _qualid: FieldAccess
    _alias: Optional[JLeftPadded[Identifier]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def static(self) -> bool: ...
    @property
    def qualid(self) -> FieldAccess: ...
    @property
    def alias(self) -> Optional[Identifier]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class InstanceOf(Expression, TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: InstanceOf

        def replace(self, **kwargs: Any) -> InstanceOf: ...

        @property
        def expression(self) -> JRightPadded[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _expression: JRightPadded[Expression]
    _clazz: J
    _pattern: Optional[J]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def expression(self) -> Expression: ...
    @property
    def clazz(self) -> J: ...
    @property
    def pattern(self) -> Optional[J]: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class DeconstructionPattern(TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: DeconstructionPattern

        def replace(self, **kwargs: Any) -> DeconstructionPattern: ...

        @property
        def nested(self) -> JContainer[J]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _deconstructor: Expression
    _nested: JContainer[J]
    _type: JavaType
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def deconstructor(self) -> Expression: ...
    @property
    def nested(self) -> List[J]: ...
    @property
    def type(self) -> JavaType: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class IntersectionType(TypeTree, Expression):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: IntersectionType

        def replace(self, **kwargs: Any) -> IntersectionType: ...

        @property
        def bounds(self) -> JContainer[TypeTree]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _bounds: JContainer[TypeTree]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def bounds(self) -> List[TypeTree]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Label(Statement):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Label

        def replace(self, **kwargs: Any) -> Label: ...

        @property
        def label(self) -> JRightPadded[Identifier]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _label: JRightPadded[Identifier]
    _statement: Statement
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def label(self) -> Identifier: ...
    @property
    def statement(self) -> Statement: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Lambda(Statement, Expression, TypedTree):
    @dataclass(frozen=True)
    class Parameters(J):
        @dataclass(frozen=True)
        class PaddingHelper:
            _t: Lambda.Parameters

            def replace(self, **kwargs: Any) -> Lambda.Parameters: ...

            @property
            def parameters(self) -> List[JRightPadded[J]]: ...

        _id: UUID
        _prefix: Space
        _markers: Markers
        _parenthesized: bool
        _parameters: List[JRightPadded[J]]
        _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def parenthesized(self) -> bool: ...
        @property
        def parameters(self) -> List[J]: ...
        @property
        def padding(self) -> PaddingHelper: ...

        def with_id(self, id: UUID) -> Lambda.Parameters: ...
        def with_prefix(self, prefix: Space) -> Lambda.Parameters: ...
        def with_markers(self, markers: Markers) -> Lambda.Parameters: ...
        def with_parenthesized(self, parenthesized: bool) -> Lambda.Parameters: ...
        def with_parameters(self, parameters: List[J]) -> Lambda.Parameters: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _parameters: Parameters
    _arrow: Space
    _body: J
    _type: Optional[JavaType]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def parameters(self) -> Parameters: ...
    @property
    def arrow(self) -> Space: ...
    @property
    def body(self) -> J: ...
    @property
    def type(self) -> Optional[JavaType]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Literal(Expression, TypedTree):
    @dataclass(frozen=True)
    class UnicodeEscape:
        _value_source_index: int
        _code_point: str

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def value_source_index(self) -> int: ...
        @property
        def code_point(self) -> str: ...

        def with_value_source_index(self, value_source_index: int) -> Literal.UnicodeEscape: ...
        def with_code_point(self, code_point: str) -> Literal.UnicodeEscape: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _value: Optional[object]
    _value_source: Optional[str]
    _unicode_escapes: Optional[List[UnicodeEscape]]
    _type: JavaType.Primitive

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def value(self) -> Optional[object]: ...
    @property
    def value_source(self) -> Optional[str]: ...
    @property
    def unicode_escapes(self) -> Optional[List[UnicodeEscape]]: ...
    @property
    def type(self) -> JavaType.Primitive: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class MemberReference(TypedTree, MethodCall):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: MemberReference

        def replace(self, **kwargs: Any) -> MemberReference: ...

        @property
        def containing(self) -> JRightPadded[Expression]: ...
        @property
        def type_parameters(self) -> Optional[JContainer[Expression]]: ...
        @property
        def reference(self) -> JLeftPadded[Identifier]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _containing: JRightPadded[Expression]
    _type_parameters: Optional[JContainer[Expression]]
    _reference: JLeftPadded[Identifier]
    _type: Optional[JavaType]
    _method_type: Optional[JavaType.Method]
    _variable_type: Optional[JavaType.Variable]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def containing(self) -> Expression: ...
    @property
    def type_parameters(self) -> Optional[List[Expression]]: ...
    @property
    def reference(self) -> Identifier: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def method_type(self) -> Optional[JavaType.Method]: ...
    @property
    def variable_type(self) -> Optional[JavaType.Variable]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class MethodDeclaration(Statement, TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: MethodDeclaration

        def replace(self, **kwargs: Any) -> MethodDeclaration: ...

        @property
        def type_parameters(self) -> Optional[TypeParameters]: ...
        @property
        def name(self) -> Identifier: ...
        @property
        def name_annotations(self) -> List[Annotation]: ...
        @property
        def parameters(self) -> JContainer[Statement]: ...
        @property
        def throws(self) -> Optional[JContainer[NameTree]]: ...
        @property
        def default_value(self) -> Optional[JLeftPadded[Expression]]: ...

    @dataclass(frozen=True)
    class AnnotationsHelper:
        _t: MethodDeclaration

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def type_parameters(self) -> Optional[TypeParameters]: ...
        @property
        def name(self) -> Identifier: ...
        @property
        def name_annotations(self) -> List[Annotation]: ...
        @property
        def parameters(self) -> JContainer[Statement]: ...
        @property
        def throws(self) -> Optional[JContainer[NameTree]]: ...
        @property
        def default_value(self) -> Optional[JLeftPadded[Expression]]: ...

        def with_type_parameters(self, type_parameters: Optional[TypeParameters]) -> MethodDeclaration: ...
        def with_name(self, name: Identifier) -> MethodDeclaration: ...
        def with_name_annotations(self, name_annotations: List[Annotation]) -> MethodDeclaration: ...
        def with_parameters(self, parameters: JContainer[Statement]) -> MethodDeclaration: ...
        def with_throws(self, throws: Optional[JContainer[NameTree]]) -> MethodDeclaration: ...
        def with_default_value(self, default_value: Optional[JLeftPadded[Expression]]) -> MethodDeclaration: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _leading_annotations: List[Annotation]
    _modifiers: List[Modifier]
    _type_parameters: Optional[TypeParameters]
    _return_type_expression: Optional[TypeTree]
    _name_annotations: List[Annotation]
    _name: Identifier
    _parameters: JContainer[Statement]
    _throws: Optional[JContainer[NameTree]]
    _body: Optional[Block]
    _default_value: Optional[JLeftPadded[Expression]]
    _method_type: Optional[JavaType.Method]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...
    _annotations: Optional[weakref.ReferenceType[AnnotationsHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def leading_annotations(self) -> List[Annotation]: ...
    @property
    def modifiers(self) -> List[Modifier]: ...
    @property
    def return_type_expression(self) -> Optional[TypeTree]: ...
    @property
    def name_annotations(self) -> List[Annotation]: ...
    @property
    def name(self) -> Identifier: ...
    @property
    def parameters(self) -> List[Statement]: ...
    @property
    def throws(self) -> Optional[List[NameTree]]: ...
    @property
    def body(self) -> Optional[Block]: ...
    @property
    def default_value(self) -> Optional[Expression]: ...
    @property
    def method_type(self) -> Optional[JavaType.Method]: ...
    @property
    def padding(self) -> PaddingHelper: ...
    @property
    def annotations(self) -> AnnotationsHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class MethodInvocation(Statement, TypedTree, MethodCall):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: MethodInvocation

        def replace(self, **kwargs: Any) -> MethodInvocation: ...

        @property
        def select(self) -> Optional[JRightPadded[Expression]]: ...
        @property
        def type_parameters(self) -> Optional[JContainer[Expression]]: ...
        @property
        def arguments(self) -> JContainer[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _select: Optional[JRightPadded[Expression]]
    _type_parameters: Optional[JContainer[Expression]]
    _name: Identifier
    _arguments: JContainer[Expression]
    _method_type: Optional[JavaType.Method]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def select(self) -> Optional[Expression]: ...
    @property
    def type_parameters(self) -> Optional[List[Expression]]: ...
    @property
    def name(self) -> Identifier: ...
    @property
    def arguments(self) -> List[Expression]: ...
    @property
    def method_type(self) -> Optional[JavaType.Method]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Modifier(J):
    class Type(Enum):
        Default: Type
        Public: Type
        Protected: Type
        Private: Type
        Abstract: Type
        Static: Type
        Final: Type
        Sealed: Type
        NonSealed: Type
        Transient: Type
        Volatile: Type
        Synchronized: Type
        Native: Type
        Strictfp: Type
        Async: Type
        Reified: Type
        Inline: Type
        LanguageExtension: Type

    _id: UUID
    _prefix: Space
    _markers: Markers
    _keyword: Optional[str]
    _type: Type
    _annotations: List[Annotation]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def keyword(self) -> Optional[str]: ...
    @property
    def type(self) -> Type: ...
    @property
    def annotations(self) -> List[Annotation]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class MultiCatch(TypeTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: MultiCatch

        def replace(self, **kwargs: Any) -> MultiCatch: ...

        @property
        def alternatives(self) -> List[JRightPadded[NameTree]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _alternatives: List[JRightPadded[NameTree]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def alternatives(self) -> List[NameTree]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class NewArray(Expression, TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: NewArray

        def replace(self, **kwargs: Any) -> NewArray: ...

        @property
        def initializer(self) -> Optional[JContainer[Expression]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _type_expression: Optional[TypeTree]
    _dimensions: List[ArrayDimension]
    _initializer: Optional[JContainer[Expression]]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def type_expression(self) -> Optional[TypeTree]: ...
    @property
    def dimensions(self) -> List[ArrayDimension]: ...
    @property
    def initializer(self) -> Optional[List[Expression]]: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ArrayDimension(J):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ArrayDimension

        def replace(self, **kwargs: Any) -> ArrayDimension: ...

        @property
        def index(self) -> JRightPadded[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _index: JRightPadded[Expression]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def index(self) -> Expression: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class NewClass(Statement, TypedTree, MethodCall):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: NewClass

        def replace(self, **kwargs: Any) -> NewClass: ...

        @property
        def enclosing(self) -> Optional[JRightPadded[Expression]]: ...
        @property
        def arguments(self) -> JContainer[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _enclosing: Optional[JRightPadded[Expression]]
    _new: Space
    _clazz: Optional[TypeTree]
    _arguments: JContainer[Expression]
    _body: Optional[Block]
    _constructor_type: Optional[JavaType.Method]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def enclosing(self) -> Optional[Expression]: ...
    @property
    def new(self) -> Space: ...
    @property
    def clazz(self) -> Optional[TypeTree]: ...
    @property
    def arguments(self) -> List[Expression]: ...
    @property
    def body(self) -> Optional[Block]: ...
    @property
    def constructor_type(self) -> Optional[JavaType.Method]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class NullableType(TypeTree, Expression):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: NullableType

        def replace(self, **kwargs: Any) -> NullableType: ...

        @property
        def type_tree(self) -> JRightPadded[TypeTree]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _type_tree: JRightPadded[TypeTree]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def type_tree(self) -> TypeTree: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Package(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _expression: Expression
    _annotations: List[Annotation]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def expression(self) -> Expression: ...
    @property
    def annotations(self) -> List[Annotation]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ParameterizedType(TypeTree, Expression):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ParameterizedType

        def replace(self, **kwargs: Any) -> ParameterizedType: ...

        @property
        def type_parameters(self) -> Optional[JContainer[Expression]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _clazz: NameTree
    _type_parameters: Optional[JContainer[Expression]]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def clazz(self) -> NameTree: ...
    @property
    def type_parameters(self) -> Optional[List[Expression]]: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Parentheses(Expression, Generic[J2]):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Parentheses[J2]

        def replace(self, **kwargs: Any) -> Parentheses[J2]: ...

        @property
        def tree(self) -> JRightPadded[J2]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _tree: JRightPadded[J2]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def tree(self) -> J2: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class ControlParentheses(Expression, Generic[J2]):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: ControlParentheses[J2]

        def replace(self, **kwargs: Any) -> ControlParentheses[J2]: ...

        @property
        def tree(self) -> JRightPadded[J2]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _tree: JRightPadded[J2]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def tree(self) -> J2: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Primitive(TypeTree, Expression):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _type: JavaType.Primitive

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def type(self) -> JavaType.Primitive: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Return(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _expression: Optional[Expression]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def expression(self) -> Optional[Expression]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Switch(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _selector: ControlParentheses[Expression]
    _cases: Block

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def selector(self) -> ControlParentheses[Expression]: ...
    @property
    def cases(self) -> Block: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class SwitchExpression(Expression, TypedTree):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _selector: ControlParentheses[Expression]
    _cases: Block
    _type: Optional[JavaType]

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def selector(self) -> ControlParentheses[Expression]: ...
    @property
    def cases(self) -> Block: ...
    @property
    def type(self) -> Optional[JavaType]: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Synchronized(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _lock: ControlParentheses[Expression]
    _body: Block

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def lock(self) -> ControlParentheses[Expression]: ...
    @property
    def body(self) -> Block: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Ternary(Expression, Statement, TypedTree):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Ternary

        def replace(self, **kwargs: Any) -> Ternary: ...

        @property
        def true_part(self) -> JLeftPadded[Expression]: ...
        @property
        def false_part(self) -> JLeftPadded[Expression]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _condition: Expression
    _true_part: JLeftPadded[Expression]
    _false_part: JLeftPadded[Expression]
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def condition(self) -> Expression: ...
    @property
    def true_part(self) -> Expression: ...
    @property
    def false_part(self) -> Expression: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Throw(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _exception: Expression

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def exception(self) -> Expression: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Try(Statement):
    @dataclass(frozen=True)
    class Resource(J):
        _id: UUID
        _prefix: Space
        _markers: Markers
        _variable_declarations: TypedTree
        _terminated_with_semicolon: bool

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def variable_declarations(self) -> TypedTree: ...
        @property
        def terminated_with_semicolon(self) -> bool: ...

        def with_id(self, id: UUID) -> Try.Resource: ...
        def with_prefix(self, prefix: Space) -> Try.Resource: ...
        def with_markers(self, markers: Markers) -> Try.Resource: ...
        def with_variable_declarations(self, variable_declarations: TypedTree) -> Try.Resource: ...
        def with_terminated_with_semicolon(self, terminated_with_semicolon: bool) -> Try.Resource: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class Catch(J):
        _id: UUID
        _prefix: Space
        _markers: Markers
        _parameter: ControlParentheses[VariableDeclarations]
        _body: Block

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def parameter(self) -> ControlParentheses[VariableDeclarations]: ...
        @property
        def body(self) -> Block: ...

        def with_id(self, id: UUID) -> Try.Catch: ...
        def with_prefix(self, prefix: Space) -> Try.Catch: ...
        def with_markers(self, markers: Markers) -> Try.Catch: ...
        def with_parameter(self, parameter: ControlParentheses[VariableDeclarations]) -> Try.Catch: ...
        def with_body(self, body: Block) -> Try.Catch: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Try

        def replace(self, **kwargs: Any) -> Try: ...

        @property
        def resources(self) -> Optional[JContainer[Try.Resource]]: ...
        @property
        def finally_(self) -> Optional[JLeftPadded[Block]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _resources: Optional[JContainer[Resource]]
    _body: Block
    _catches: List[Catch]
    _finally: Optional[JLeftPadded[Block]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def resources(self) -> Optional[List[Resource]]: ...
    @property
    def body(self) -> Block: ...
    @property
    def catches(self) -> List[Catch]: ...
    @property
    def finally_(self) -> Optional[Block]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class TypeCast(Expression, TypedTree):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _clazz: ControlParentheses[TypeTree]
    _expression: Expression

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def clazz(self) -> ControlParentheses[TypeTree]: ...
    @property
    def expression(self) -> Expression: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class TypeParameter(J):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: TypeParameter

        def replace(self, **kwargs: Any) -> TypeParameter: ...

        @property
        def bounds(self) -> Optional[JContainer[TypeTree]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _modifiers: List[Modifier]
    _name: Expression
    _bounds: Optional[JContainer[TypeTree]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def modifiers(self) -> List[Modifier]: ...
    @property
    def name(self) -> Expression: ...
    @property
    def bounds(self) -> Optional[List[TypeTree]]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class TypeParameters(J):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: TypeParameters

        def replace(self, **kwargs: Any) -> TypeParameters: ...

        @property
        def type_parameters(self) -> List[JRightPadded[TypeParameter]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _annotations: List[Annotation]
    _type_parameters: List[JRightPadded[TypeParameter]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def annotations(self) -> List[Annotation]: ...
    @property
    def type_parameters(self) -> List[TypeParameter]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Unary(Statement, Expression, TypedTree):
    class Type(Enum):
        PreIncrement: Type
        PreDecrement: Type
        PostIncrement: Type
        PostDecrement: Type
        Positive: Type
        Negative: Type
        Complement: Type
        Not: Type

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Unary

        def replace(self, **kwargs: Any) -> Unary: ...

        @property
        def operator(self) -> JLeftPadded[Unary.Type]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _operator: JLeftPadded[Type]
    _expression: Expression
    _type: Optional[JavaType]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def operator(self) -> Type: ...
    @property
    def expression(self) -> Expression: ...
    @property
    def type(self) -> Optional[JavaType]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class VariableDeclarations(Statement, TypedTree):
    @dataclass(frozen=True)
    class NamedVariable(NameTree):
        @dataclass(frozen=True)
        class PaddingHelper:
            _t: VariableDeclarations.NamedVariable

            def replace(self, **kwargs: Any) -> VariableDeclarations.NamedVariable: ...

            @property
            def initializer(self) -> Optional[JLeftPadded[Expression]]: ...

        _id: UUID
        _prefix: Space
        _markers: Markers
        _name: Identifier
        _dimensions_after_name: List[JLeftPadded[Space]]
        _initializer: Optional[JLeftPadded[Expression]]
        _variable_type: Optional[JavaType.Variable]
        _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def name(self) -> Identifier: ...
        @property
        def dimensions_after_name(self) -> List[JLeftPadded[Space]]: ...
        @property
        def initializer(self) -> Optional[Expression]: ...
        @property
        def variable_type(self) -> Optional[JavaType.Variable]: ...
        @property
        def padding(self) -> PaddingHelper: ...

        def with_id(self, id: UUID) -> VariableDeclarations.NamedVariable: ...
        def with_prefix(self, prefix: Space) -> VariableDeclarations.NamedVariable: ...
        def with_markers(self, markers: Markers) -> VariableDeclarations.NamedVariable: ...
        def with_name(self, name: Identifier) -> VariableDeclarations.NamedVariable: ...
        def with_dimensions_after_name(self, dimensions_after_name: List[JLeftPadded[Space]]) -> VariableDeclarations.NamedVariable: ...
        def with_initializer(self, initializer: Optional[Expression]) -> VariableDeclarations.NamedVariable: ...
        def with_variable_type(self, variable_type: Optional[JavaType.Variable]) -> VariableDeclarations.NamedVariable: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: VariableDeclarations

        def replace(self, **kwargs: Any) -> VariableDeclarations: ...

        @property
        def variables(self) -> List[JRightPadded[VariableDeclarations.NamedVariable]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _leading_annotations: List[Annotation]
    _modifiers: List[Modifier]
    _type_expression: Optional[TypeTree]
    _varargs: Optional[Space]
    _dimensions_before_name: List[JLeftPadded[Space]]
    _variables: List[JRightPadded[NamedVariable]]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def leading_annotations(self) -> List[Annotation]: ...
    @property
    def modifiers(self) -> List[Modifier]: ...
    @property
    def type_expression(self) -> Optional[TypeTree]: ...
    @property
    def varargs(self) -> Optional[Space]: ...
    @property
    def dimensions_before_name(self) -> List[JLeftPadded[Space]]: ...
    @property
    def variables(self) -> List[NamedVariable]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class WhileLoop(Loop):
    @dataclass(frozen=True)
    class PaddingHelper:
        _t: WhileLoop

        def replace(self, **kwargs: Any) -> WhileLoop: ...

        @property
        def body(self) -> JRightPadded[Statement]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _condition: ControlParentheses[Expression]
    _body: JRightPadded[Statement]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def condition(self) -> ControlParentheses[Expression]: ...
    @property
    def body(self) -> Statement: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Wildcard(Expression, TypeTree):
    class Bound(Enum):
        Extends: Bound
        Super: Bound

    @dataclass(frozen=True)
    class PaddingHelper:
        _t: Wildcard

        def replace(self, **kwargs: Any) -> Wildcard: ...

        @property
        def bound(self) -> Optional[JLeftPadded[Wildcard.Bound]]: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _bound: Optional[JLeftPadded[Bound]]
    _bounded_type: Optional[NameTree]
    _padding: Optional[weakref.ReferenceType[PaddingHelper]] = ...

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def bound(self) -> Optional[Bound]: ...
    @property
    def bounded_type(self) -> Optional[NameTree]: ...
    @property
    def padding(self) -> PaddingHelper: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Yield(Statement):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _implicit: bool
    _value: Expression

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def implicit(self) -> bool: ...
    @property
    def value(self) -> Expression: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Unknown(Statement, Expression, TypeTree):
    @dataclass(frozen=True)
    class Source(J):
        _id: UUID
        _prefix: Space
        _markers: Markers
        _text: str

        def replace(self, **kwargs: Any) -> Self: ...

        @property
        def id(self) -> UUID: ...
        @property
        def prefix(self) -> Space: ...
        @property
        def markers(self) -> Markers: ...
        @property
        def text(self) -> str: ...

        def with_id(self, id: UUID) -> Unknown.Source: ...
        def with_prefix(self, prefix: Space) -> Unknown.Source: ...
        def with_markers(self, markers: Markers) -> Unknown.Source: ...
        def with_text(self, text: str) -> Unknown.Source: ...
        def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

    _id: UUID
    _prefix: Space
    _markers: Markers
    _source: Source

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def source(self) -> Source: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...

@dataclass(frozen=True)
class Erroneous(Statement, Expression):
    _id: UUID
    _prefix: Space
    _markers: Markers
    _text: str

    def replace(self, **kwargs: Any) -> Self: ...

    @property
    def id(self) -> UUID: ...
    @property
    def prefix(self) -> Space: ...
    @property
    def markers(self) -> Markers: ...
    @property
    def text(self) -> str: ...

    def accept_java(self, v: JavaVisitor[P], p: P) -> J: ...
