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

END MODEL // LLJava