// Rendered by UMod Pretty Printer at 2026-02-01_13h18m33
// See also the UMod user documentation online.

MODEL LLJava =
  EXT Character FROM java.lang.Character
  EXT String FROM java.lang.String
  EXT Integer FROM java.lang.Integer
  EXT Long FROM java.lang.Long
  EXT Float FROM java.lang.Float
  EXT Double FROM java.lang.Double
  EXT SourceId SOURCE FROM eu.bandm.tools.lljava.absy.SourceId
  EXT Location SOURCE FROM eu.bandm.tools.location.Location

  ENUM HandleKind = GetField, GetStatic, PutField, PutStatic, InvokeVirtual, 
          InvokeStatic, InvokeSpecial, NewInvokeSpecial, InvokeInterface
  ENUM Condition = Eq, NEq, LEq, GEq, LT, GT, Eq0, NEq0, LEq0, GEq0, LT0, GT0, 
          EqNull, NEqNull
  ENUM Modifier = Public, Protected, Private, Abstract, Static, Interface, 
          Enum, Annotation, Final, Synthetic, Super, Bridge, Strictfp, Volatile, 
          Transient, Synchronized, Native, Varargs, Mandated
  ENUM Strategy = Virtual, Special, Static, Interface, Dynamic

  TOPLEVEL CLASS
  Node ABSTRACT
        location    OPT Location
  | Exception
        range       GotoInterval
        type        OPT ClassReference
        target      GotoPoint
  | AnnotationValue ABSTRACT
  | | ArrayAnnotationValue
        elems       SEQ AnnotationValue
  | | EnumAnnotationValue
        type        QualId
        name        Id
  | | ClassAnnotationValue
        name        QualId
  | | NestedAnnotationValue
        annotation  Annotation
  | | ConstantAnnotationValue
        literal     Literal
  | MemberFullName ABSTRACT
        name        Id
  | | MemberDynamicName
        factory     MethodHandleExpr
        bootstrapArguments  SEQ LoadableExpr
  | | MemberStaticName
        owner       OPT QualId
  | CodeInterval ABSTRACT
  | | GotoInterval
        start       Name
        end         OPT Name
        startTarget OPT Block
        endTarget   OPT Block
  | | InlineInterval
        body        Block
  | MethodBody ABSTRACT
  | | DefaultMethodBody
        value       AnnotationValue
  | | AbstractMethodBody
  | | CodeMethodBody
        block       Block
        exceptionTable      SEQ Exception
        maxLocals   OPT Integer
        maxOperands OPT Integer
        stackMapPlaces      SET Instruction
        stackMap    SEQ StackFrameDelta
  | LoadArgument ABSTRACT
  | | StoreArgument ABSTRACT
  | | | VariableAccess ABSTRACT
        target      OPT Slot
  | | | | VariableRef
        name        Name
  | | | | This
  | | | | SlotReference
        index       int
        wide        bool
  | | | | SlotRef
  | | | ArrayAccess
        type        OPT Type
  | | LoadableExpr ABSTRACT
        entry       ABSTRACT GETTER Loadable
  | | | MethodTypeExpr
        result      ResultExpr
        parameters  SEQ TypeExpr
        entry       OPT MethodType
  | | | Literal ABSTRACT
  | | | | LongLiteral
        value       Long
        entry       OPT ConstantLong
  | | | | FloatLiteral
        value       Float
        entry       OPT ConstantFloat
  | | | | BooleanLiteral
        value       bool
        entry       OPT ConstantInteger
  | | | | CharLiteral
        value       Character
        entry       OPT ConstantInteger
  | | | | IntLiteral
        value       Integer
        entry       OPT ConstantInteger
  | | | | DoubleLiteral
        value       Double
        entry       OPT ConstantDouble
  | | | | StringLiteral
        value       String
        entry       OPT ConstantString
  | | | DynamicExpr
        type        TypeExpr
        fullName    MemberDynamicName
  | | | ClassExpr
        type        ClassTypeExpr
        entry       OPT ClassRef
  | | | MethodHandleExpr
        target      MethodHandleTarget
        entry       OPT MethodHandle
  | | NullLiteral
  | MemberReference ABSTRACT
        fullName    ABSTRACT GETTER MemberFullName
        entry       ABSTRACT GETTER OPT MemberRef
  | | MethodReference
        asInterface bool
        result      ResultExpr
        fullName    MemberFullName
        parameters  SEQ MethodReferenceParameter
        entry       OPT AbstractMethodRef
        dynamicEntry        OPT InvokeDynamic
  | | FieldReference
        type        TypeExpr
        fullName    MemberStaticName
        entry       OPT FieldRef
  | CodePoint ABSTRACT
  | | InlinePoint
        body        Block
  | | GotoPoint
        id          Name
        target      OPT Block
  | ResultExpr ABSTRACT
        erasure     OPT Result
  | | VoidExpr
  | | ReturnsExpr
        type        TypeExpr
  | ModifierExpr ABSTRACT
  | | SimpleModifierExpr
        modifier    Modifier
  | | Annotation
        name        QualId
        runtimeVisible      bool
        elems       Id->AnnotationValue
  | Modifiable ABSTRACT
        annotations SEQ Annotation
        modifiers   SET Modifier
  | | Attributable ABSTRACT
        attrs       SEQ Attribute
  | | | Member ABSTRACT
        name        Id
        nameEntry   OPT ConstantUTF8
        descriptorEntry     OPT ConstantUTF8
        signatureEntry      OPT ConstantUTF8
  | | | | Field
        type        TypeExpr
        initializer OPT Literal
  | | | | Method
        typeParameters      SEQ TypeParameter
        result      ResultExpr
        parameters  SEQ Parameter
        exceptions  SEQ ClassReference
        body        MethodBody
  | | | InnerClass
        name        OPT Id
        definition  OPT Class
  | | | Class
        name        QualId
        innerName   OPT Id
        typeParameters      SEQ TypeParameter
        superClass  ClassReference
        interfaces  SEQ ClassReference
        fields      SEQ Field
        methods     SEQ Method
        innerClasses        SEQ InnerClass
        pool        SEQ ConstantPoolEntry
        thisEntry   OPT ClassRef
        signatureEntry      OPT ConstantUTF8
  | | Parameter
        type        TypeExpr
        name        OPT Name
        variable    OPT Variable
  | ClassParent
  | ClassReference
        type        ClassTypeExpr
        entry       OPT ClassRef
  | Statement ABSTRACT
  | | LocalClass
        target      Class
  | | Local
        type        TypeExpr
        name        OPT Name
        variable    OPT Variable
  | | Block
        labels      SEQ Name
        implicit    bool
        elems       SEQ Statement
        controlEnv  Name->Block
        dataEnv     Name->Variable
  | | Label
        name        Name
  | | Instruction ABSTRACT
        pre         OPT StackFrame
        post        OPT StackFrame
  | | | If
        neg         bool
        condition   Condition
        body        CodePoint
  | | | Dup
  | | | Swap
  | | | ArithInstruction ABSTRACT
  | | | | Cmp ABSTRACT
  | | | | | CmpIntegral
  | | | | | CmpLT
  | | | | | CmpGT
  | | | | | CmpFloating
        greaterNaN  bool
  | | | | Neg
  | | | | Shift ABSTRACT
  | | | | | Shr
  | | | | | Shl
  | | | | | UShr
  | | | | Inc
        target      VariableAccess
        increment   int
  | | | | And
  | | | | Add
  | | | | XOr
  | | | | Sub
  | | | | Rem
  | | | | Or
  | | | | Div
  | | | | Mul
  | | | Load
        arg         LoadArgument
  | | | Switch
        cases       SEQ Case
  | | | Jump ABSTRACT
  | | | | Goto
        target      GotoPoint
  | | | | Return
  | | | | Throw
  | | | Pop
  | | | MethodHandleTarget ABSTRACT
        target      ABSTRACT GETTER MemberReference
  | | | | Invoke
        modifiers   SET Modifier
        strategy    OPT Strategy
        target      MethodReference
  | | | | FieldAccess ABSTRACT
        statically  bool
        target      FieldReference
  | | | | | Get
  | | | | | Put
  | | | Length
  | | | Nop
  | | | Store
        arg         StoreArgument
  | | | Monitor ABSTRACT
  | | | | Enter
  | | | | Exit
  | | | Try
        body        CodeInterval
        handlers    SEQ Handler
  | | | TypeInstruction ABSTRACT
        type        ABSTRACT GETTER TypeExpr
        entry       OPT ClassRef
  | | | | Instanceof
        type        ReferenceTypeExpr
  | | | | New
        type        ReferenceTypeExpr
        multiarray  int
  | | | | Cast
        type        TypeExpr
  | MethodReferenceParameter
        type        OPT TypeExpr
  | Handler
        type        OPT ClassReference
        body        CodePoint
  | TypeArgument ABSTRACT
        annotations SEQ Annotation
        erasure     ABSTRACT GETTER OPT Type
  | | TypeExpr ABSTRACT
  | | | ReferenceTypeExpr ABSTRACT
        erasure     OPT RefType
  | | | | ClassTypeExpr
        name        QualId
        arguments   SEQ TypeArgument
        parameter   bool
  | | | | ArrayTypeExpr
        base        TypeExpr
        specified   bool
  | | | PrimitiveTypeExpr
        erasure     PrimitiveType
  | | Wildcard
        bound       OPT TypeBound
        erasure     OPT RefType
  | TypeParameter
        annotations SEQ Annotation
        name        Id
        bound       UpperTypeBound
  | DimensionExpr
        specified   bool
        annotations SEQ Annotation
  | TypeBound ABSTRACT
        limit       ReferenceTypeExpr
        erasure     OPT Type
  | | LowerTypeBound
  | | UpperTypeBound
        interfaces  SEQ ReferenceTypeExpr
  | Case
        labels      SET Integer
        isDefault   bool
        body        CodePoint
  Slot ALGEBRAIC
        type        Type
        index       int
  StackFrameDelta ALGEBRAIC
        delta       int
        next        StackFrame
  Result ABSTRACT ALGEBRAIC
  | Void ALGEBRAIC
  | Type ABSTRACT ALGEBRAIC
  | | PrimitiveType ABSTRACT ALGEBRAIC
  | | | CharType ALGEBRAIC
  | | | BooleanType ALGEBRAIC
  | | | IntType ALGEBRAIC
  | | | FloatType ALGEBRAIC
  | | | WideType ABSTRACT ALGEBRAIC
  | | | | DoubleType ALGEBRAIC
  | | | | LongType ALGEBRAIC
  | | | ByteType ALGEBRAIC
  | | | ShortType ALGEBRAIC
  | | RefType ABSTRACT ALGEBRAIC
  | | | ArrayType ALGEBRAIC
        element     Type
  | | | ClassType ALGEBRAIC
        name        QualId
  StackFrame ALGEBRAIC
        locals      SEQ VType
        operands    SEQ VType
        uninitThis  bool
  QualId ALGEBRAIC
        qualifier   SEQ Id
        id          Id
  ConstantPoolEntry ABSTRACT ALGEBRAIC
  | ConstantUTF8 ALGEBRAIC
        text        string
  | AbstractDynamic ABSTRACT ALGEBRAIC
        bootstrap   BootstrapMethod
        nametype    NameAndType
  | | Dynamic ALGEBRAIC
  | | InvokeDynamic ALGEBRAIC
  | MemberRef ABSTRACT ALGEBRAIC
        owner       ClassRef
        nametype    NameAndType
  | | FieldRef ALGEBRAIC
  | | AbstractMethodRef ABSTRACT ALGEBRAIC
  | | | InterfaceMethodRef ALGEBRAIC
  | | | MethodRef ALGEBRAIC
  | Loadable ABSTRACT ALGEBRAIC
  | | ConstantDoubleValue ABSTRACT ALGEBRAIC
  | | | ConstantLong ALGEBRAIC
        value       Long
  | | | ConstantDouble ALGEBRAIC
        value       Double
  | | ConstantSingleValue ABSTRACT ALGEBRAIC
  | | | ConstantInteger ALGEBRAIC
        value       Integer
  | | | ConstantString ALGEBRAIC
        value       ConstantUTF8
  | | | ConstantFloat ALGEBRAIC
        value       Float
  | | ClassRef ALGEBRAIC
        name        ConstantUTF8
  | | MethodHandle ALGEBRAIC
        kind        HandleKind
        reference   MemberRef
  | | MethodType ALGEBRAIC
        descriptor  ConstantUTF8
  | NameAndType ALGEBRAIC
        name        ConstantUTF8
        descriptor  ConstantUTF8
  VType ABSTRACT ALGEBRAIC
  | Category2VType ABSTRACT ALGEBRAIC
  | | LongVType ALGEBRAIC
  | | DoubleVType ALGEBRAIC
  | | TwoWordVType ALGEBRAIC
  | Category1VType ABSTRACT ALGEBRAIC
  | | UninitializedNewVType ALGEBRAIC
        offset      New
  | | AbstractIntVType ABSTRACT ALGEBRAIC
  | | | IntVType ALGEBRAIC
  | | | ByteVType ALGEBRAIC
  | | | CharVType ALGEBRAIC
  | | | ShortVType ALGEBRAIC
  | | | BooleanVType ALGEBRAIC
  | | ReferenceVType ALGEBRAIC
  | | NullVType ALGEBRAIC
  | | ObjectVType ALGEBRAIC
        classname   string
  | | FloatVType ALGEBRAIC
  | | UninitializedThisVType ALGEBRAIC
  | | OneWordVType ALGEBRAIC
  | | UninitializedVType ALGEBRAIC
  | TopVType ALGEBRAIC
  Attribute ABSTRACT
        name        ABSTRACT GETTER ConstantUTF8
  | CustomAttribute
        name        ConstantUTF8
        attrs       SEQ Attribute
  | ExceptionsAttribute
        name        ConstantUTF8
  | StackMapTableAttribute
        name        ConstantUTF8
  | BootstrapMethodsAttribute
        name        ConstantUTF8
        bootstrapMethods    SEQ BootstrapMethod
  | CodeAttribute
        name        ConstantUTF8
        stackMap    OPT StackMapTableAttribute
  | AnnotationDefaultAttribute
        name        ConstantUTF8
  | SignatureAttribute ABSTRACT
        name        ConstantUTF8
        signature   OPT ConstantUTF8
  | | ClassSignatureAttribute
  | | MethodSignatureAttribute
  | | FieldSignatureAttribute
  | ConstantValueAttribute
        name        ConstantUTF8
  Id ALGEBRAIC
        text        String
  Variable ALGEBRAIC
        type        Type
        name        Name
  BootstrapMethod ALGEBRAIC
        handle      MethodHandle
        arguments   SEQ Loadable
  Anonymity
  Name ABSTRACT ALGEBRAIC
  | ImplicitName ALGEBRAIC
        id          Anonymity
  | ExplicitName ALGEBRAIC
        id          Id
  MethodName

END MODEL // LLJava