Abstract syntax tree classes for working with Java programs =========================================================== CodeQL has a large selection of classes for representing the abstract syntax tree of Java programs. .. include:: ../../reusables/abstract-syntax-tree.rst Statement classes ----------------- This table lists all subclasses of `Stmt`_. +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | Statement syntax | CodeQL class | Superclasses | Remarks | +============================================================================+===========================================================================================================================================================+=================================+============================================+ | ``;`` | `EmptyStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | `Expr`_ ``;`` | `ExprStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``{`` `Stmt`_ ``... }`` | `Block `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``if (`` `Expr`_ ``)`` `Stmt`_ ``else`` `Stmt`_ | `IfStmt `__ | `ConditionalStmt`_ | | +----------------------------------------------------------------------------+ | | | | ``if (`` `Expr`_ ``)`` `Stmt`_ | | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``while (`` `Expr`_ ``)`` `Stmt`_ | `WhileStmt `__ | `ConditionalStmt`_, `LoopStmt`_ | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``do`` `Stmt`_ ``while (`` `Expr`_ ``)`` | `DoStmt `__ | `ConditionalStmt`_, `LoopStmt`_ | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``for (`` `Expr`_ ``;`` `Expr`_ ``;`` `Expr`_ ``)`` `Stmt`_ | `ForStmt `__ | `ConditionalStmt`_, `LoopStmt`_ | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``for (`` `VarAccess`_ ``:`` `Expr`_ ``)`` `Stmt`_ | `EnhancedForStmt `__ | `LoopStmt`_ | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``switch (`` `Expr`_ ``) {`` `SwitchCase`_ ``... }`` | `SwitchStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``try {`` `Stmt`_ ``... } finally {`` `Stmt`_ ``... }`` | `TryStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``return`` `Expr`_ ``;`` | `ReturnStmt `__ | | | +----------------------------------------------------------------------------+ | | | | ``return ;`` | | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``throw`` `Expr`_ ``;`` | `ThrowStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``break ;`` | `BreakStmt `__ | `JumpStmt`_ | | +----------------------------------------------------------------------------+ | | | | ``break label ;`` | | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``continue ;`` | `ContinueStmt `__ | `JumpStmt`_ | | +----------------------------------------------------------------------------+ | | | | ``continue label ;`` | | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``label :`` `Stmt`_ | `LabeledStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``synchronized (`` `Expr`_ ``)`` `Stmt`_ | `SynchronizedStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``assert`` `Expr`_ ``:`` `Expr`_ ``;`` | `AssertStmt `__ | | | +----------------------------------------------------------------------------+ | | | | ``assert`` `Expr`_ ``;`` | | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | `TypeAccess`_ ``name ;`` | `LocalVariableDeclStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``class name {`` `Member`_ ``... } ;`` | `LocalClassDeclStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``this (`` `Expr`_ ``, ... ) ;`` | `ThisConstructorInvocationStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``super (`` `Expr`_ ``, ... ) ;`` | `SuperConstructorInvocationStmt `__ | | | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``catch (`` `TypeAccess`_ ``name ) {`` `Stmt`_ ``... }`` | `CatchClause `__ | | can only occur as child of a `TryStmt`_ | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``case`` `Literal`_ ``:`` `Stmt`_ ``...`` | `ConstCase `__ | | can only occur as child of a `SwitchStmt`_ | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ | ``default :`` `Stmt`_ ``...`` | `DefaultCase `__ | | can only occur as child of a `SwitchStmt`_ | +----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+--------------------------------------------+ Expression classes ------------------ There are many expression classes, so we present them by category. All classes in this section are subclasses of `Expr `__. Literals ~~~~~~~~ All classes in this subsection are subclasses of `Literal `__. +---------------------------+-------------------------+ | Expression syntax example | CodeQL class | +===========================+=========================+ | ``true`` | `BooleanLiteral`_ | +---------------------------+-------------------------+ | ``23`` | `IntegerLiteral`_ | +---------------------------+-------------------------+ | ``23l`` | `LongLiteral`_ | +---------------------------+-------------------------+ | ``4.2f`` | `FloatingPointLiteral`_ | +---------------------------+-------------------------+ | ``4.2`` | `DoubleLiteral`_ | +---------------------------+-------------------------+ | ``'a'`` | `CharacterLiteral`_ | +---------------------------+-------------------------+ | ``"Hello"`` | `StringLiteral`_ | +---------------------------+-------------------------+ | ``null`` | `NullLiteral`_ | +---------------------------+-------------------------+ Unary expressions ~~~~~~~~~~~~~~~~~ All classes in this subsection are subclasses of `UnaryExpr `__. +-------------------+----------------+--------------------+--------------------------------------------------+ | Expression syntax | CodeQL class | Superclasses | Remarks | +===================+================+====================+==================================================+ | `Expr`_\ ``++`` | `PostIncExpr`_ | `UnaryAssignExpr`_ | | +-------------------+----------------+--------------------+--------------------------------------------------+ | `Expr`_\ ``--`` | `PostDecExpr`_ | `UnaryAssignExpr`_ | | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``++``\ `Expr`_ | `PreIncExpr`_ | `UnaryAssignExpr`_ | | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``--``\ `Expr`_ | `PreDecExpr`_ | `UnaryAssignExpr`_ | | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``~``\ `Expr`_ | `BitNotExpr`_ | `BitwiseExpr`_ | see below for other subclasses of `BitwiseExpr`_ | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``-``\ `Expr`_ | `MinusExpr`_ | | | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``+``\ `Expr`_ | `PlusExpr`_ | | | +-------------------+----------------+--------------------+--------------------------------------------------+ | ``!``\ `Expr`_ | `LogNotExpr`_ | `LogicExpr`_ | see below for other subclasses of `LogicExpr`_ | +-------------------+----------------+--------------------+--------------------------------------------------+ Binary expressions ~~~~~~~~~~~~~~~~~~ All classes in this subsection are subclasses of `BinaryExpr `__. +-------------------------+-------------------+-------------------+ | Expression syntax | CodeQL class | Superclasses | +=========================+===================+===================+ | `Expr`_ ``*`` `Expr`_ | `MulExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``/`` `Expr`_ | `DivExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``%`` `Expr`_ | `RemExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``+`` `Expr`_ | `AddExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``-`` `Expr`_ | `SubExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``<<`` `Expr`_ | `LShiftExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``>>`` `Expr`_ | `RShiftExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``>>>`` `Expr`_ | `URShiftExpr`_ | | +-------------------------+-------------------+-------------------+ | `Expr`_ ``&&`` `Expr`_ | `AndLogicalExpr`_ | `LogicExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``||`` `Expr`_ | `OrLogicalExpr`_ | `LogicExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``<`` `Expr`_ | `LTExpr`_ | `ComparisonExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``>`` `Expr`_ | `GTExpr`_ | `ComparisonExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``<=`` `Expr`_ | `LEExpr`_ | `ComparisonExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``>=`` `Expr`_ | `GEExpr`_ | `ComparisonExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``==`` `Expr`_ | `EQExpr`_ | `EqualityTest`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``!=`` `Expr`_ | `NEExpr`_ | `EqualityTest`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``&`` `Expr`_ | `AndBitwiseExpr`_ | `BitwiseExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``|`` `Expr`_ | `OrBitwiseExpr`_ | `BitwiseExpr`_ | +-------------------------+-------------------+-------------------+ | `Expr`_ ``^`` `Expr`_ | `XorBitwiseExpr`_ | `BitwiseExpr`_ | +-------------------------+-------------------+-------------------+ Assignment expressions ~~~~~~~~~~~~~~~~~~~~~~ All classes in this table are subclasses of `Assignment `__. +--------------------------+----------------------+--------------+ | Expression syntax | CodeQL class | Superclasses | +==========================+======================+==============+ | `Expr`_ ``=`` `Expr`_ | `AssignExpr`_ | | +--------------------------+----------------------+--------------+ | `Expr`_ ``+=`` `Expr`_ | `AssignAddExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``-=`` `Expr`_ | `AssignSubExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``*=`` `Expr`_ | `AssignMulExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``/=`` `Expr`_ | `AssignDivExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``%=`` `Expr`_ | `AssignRemExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``&=`` `Expr`_ | `AssignAndExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``|=`` `Expr`_ | `AssignOrExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``^=`` `Expr`_ | `AssignXorExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``<<=`` `Expr`_ | `AssignLShiftExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``>>=`` `Expr`_ | `AssignRShiftExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ | `Expr`_ ``>>>=`` `Expr`_ | `AssignURShiftExpr`_ | `AssignOp`_ | +--------------------------+----------------------+--------------+ Accesses ~~~~~~~~ +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | Expression syntax examples | CodeQL class | +======================================+=========================================================================================================================+ | ``this`` | `ThisAccess `__ | +--------------------------------------+ + | ``Outer.this`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``super`` | `SuperAccess `__ | +--------------------------------------+ + | ``Outer.super`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``x`` | `VarAccess `__ | +--------------------------------------+ + | ``e.f`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``a[i]`` | `ArrayAccess `__ | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``f(...)`` | `MethodAccess `__ | +--------------------------------------+ + | ``e.m(...)`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``String`` | `TypeAccess `__ | +--------------------------------------+ + | ``java.lang.String`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | ``? extends Number`` | `WildcardTypeAccess `__ | +--------------------------------------+ + | ``? super Double`` | | +--------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ A `VarAccess `__ that refers to a field is a `FieldAccess `__. Miscellaneous ~~~~~~~~~~~~~ +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | Expression syntax examples | CodeQL class | Remarks | +==================================================================+=======================================================================================================================+=============================================================================+ | ``(int) f`` | `CastExpr `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``(23 + 42)`` | `ParExpr `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``o instanceof String`` | `InstanceOfExpr `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | `Expr`_ ``?`` `Expr`_ ``:`` `Expr`_ | `ConditionalExpr `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``String. class`` | `TypeLiteral `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``new A()`` | `ClassInstanceExpr `__ | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``new String[3][2]`` | `ArrayCreationExpr `__ | | +------------------------------------------------------------------+ + + | ``new int[] { 23, 42 }`` | | | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``{ 23, 42 }`` | `ArrayInit `__ | can only appear as an initializer or as a child of an `ArrayCreationExpr`_ | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ | ``@Annot(key=val)`` | `Annotation `__ |   | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------+ Further reading --------------- .. include:: ../../reusables/java-further-reading.rst .. include:: ../../reusables/codeql-ref-tools-further-reading.rst .. _Expr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$Expr.html .. _Stmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$Stmt.html .. _VarAccess: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$VarAccess.html .. _SwitchCase: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$SwitchCase.html .. _TypeAccess: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$TypeAccess.html .. _Member: https://help.semmle.com/qldoc/java/semmle/code/java/Member.qll/type.Member$Member.html .. _Literal: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$Literal.html .. _ConditionalStmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$ConditionalStmt.html .. _LoopStmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$LoopStmt.html .. _JumpStmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$JumpStmt.html .. _TryStmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$TryStmt.html .. _SwitchStmt: https://help.semmle.com/qldoc/java/semmle/code/java/Statement.qll/type.Statement$SwitchStmt.html .. _BooleanLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$BooleanLiteral.html .. _IntegerLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$IntegerLiteral.html .. _LongLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LongLiteral.html .. _FloatingPointLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$FloatingPointLiteral.html .. _DoubleLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$DoubleLiteral.html .. _CharacterLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$CharacterLiteral.html .. _StringLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$StringLiteral.html .. _NullLiteral: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$NullLiteral.html .. _PostIncExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$PostIncExpr.html .. _PostDecExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$PostDecExpr.html .. _PreIncExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$PreIncExpr.html .. _PreDecExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$PreDecExpr.html .. _BitNotExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$BitNotExpr.html .. _MinusExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$MinusExpr.html .. _PlusExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$PlusExpr.html .. _LogNotExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LogNotExpr.html .. _UnaryAssignExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$UnaryAssignExpr.html .. _BitwiseExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$BitwiseExpr.html .. _LogicExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LogicExpr.html .. _MulExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$MulExpr.html .. _DivExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$DivExpr.html .. _RemExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$RemExpr.html .. _AddExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AddExpr.html .. _SubExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$SubExpr.html .. _LShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LShiftExpr.html .. _RShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$RShiftExpr.html .. _URShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$URShiftExpr.html .. _AndLogicalExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AndLogicalExpr.html .. _OrLogicalExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$OrLogicalExpr.html .. _LTExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LTExpr.html .. _GTExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$GTExpr.html .. _LEExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LEExpr.html .. _GEExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$GEExpr.html .. _EQExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$EQExpr.html .. _NEExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$NEExpr.html .. _AndBitwiseExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AndBitwiseExpr.html .. _OrBitwiseExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$OrBitwiseExpr.html .. _XorBitwiseExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$XorBitwiseExpr.html .. _LogicExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$LogicExpr.html .. _ComparisonExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$ComparisonExpr.html .. _EqualityTest: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$EqualityTest.html .. _BitwiseExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$BitwiseExpr.html .. _AssignExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignExpr.html .. _AssignAddExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignAddExpr.html .. _AssignSubExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignSubExpr.html .. _AssignMulExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignMulExpr.html .. _AssignDivExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignDivExpr.html .. _AssignRemExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignRemExpr.html .. _AssignAndExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignAndExpr.html .. _AssignOrExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignOrExpr.html .. _AssignXorExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignXorExpr.html .. _AssignLShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignLShiftExpr.html .. _AssignRShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignRShiftExpr.html .. _AssignURShiftExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignURShiftExpr.html .. _AssignOp: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$AssignOp.html .. _ArrayCreationExpr: https://help.semmle.com/qldoc/java/semmle/code/java/Expr.qll/type.Expr$ArrayCreationExpr.html