# Package jif.extension

Provides classes that implements the Jif AST node extensions and delegates.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  JifDel |
  JifFieldDeclExt | The Jif extension of the `FieldDecl` node.
  JifPreciseClassDel | Marker interface for nodes that want to track the precise classes of a sub-expression, e.g., JifCastDel.
  JifProcedureDeclExt | The Jif extension of the `ProcedureDecl` node.
  JifStmtExt | The root of all kinds of Jif extensions for statements.

- Class Summary
  Class | Description
  --- | ---
  CallHelper | This is a tool to label-check method calls.
  ConstructorChecker | A tool to label check constructors.
  JifArrayAccessAssignDel | The Jif extension of the `ArrayAccessAssign` node.
  JifArrayAccessAssignExt | The Jif extension of the `ArrayAccessAssign` node.
  JifArrayAccessDel | The Jif extension of the `ArrayAccess` node.
  JifArrayAccessExt | The Jif extension of the `ArrayAccess` node.
  JifArrayInitDel |
  JifArrayInitExt | The Jif extension of the `ArrayInit` node.
  JifAssignDel |
  JifAssignExt | The Jif extension of the `Assign` node.
  JifBinaryDel |
  JifBinaryExt | The Jif extension of the `Binary` node.
  JifBlockExt | The Jif extension of the `Block` node.
  JifBranchExt | The Jif extension of the `Branch` node.
  JifCallDel | The Jif extension of the `Call` node.
  JifCallExt | The Jif extension of the `Call` node.
  JifCaseExt | The Jif extension of the `Case` node.
  JifCastDel | The Jif extension of the `Cast` node.
  JifCastExt | The Jif extension of the `Cast` node.
  JifCatchDel | The Jif extension of the `Catch` node.
  JifCheckedEndorseStmtExt | The Jif extension of the `CheckedEndorseStmt` node.
  JifClassBodyExt | The extension of the `ClassBody` node.
  JifClassDeclDel | The delegate of the `JifClassDecl` node.
  JifClassDeclExt | The extension of the `JifClassDecl` node.
  JifConditionalExt | The Jif extension of the `Conditional` node.
  JifConstructorCallDel | The Jif extension of the `ConstructorCall` node.
  JifConstructorCallExt | The Jif extension of the `ConstructorCall` node.
  JifConstructorDeclExt | The Jif extension of the `JifConstructorDecl` node.
  JifDeclassifyExprExt | The Jif extension of the `DeclassifyExpr` node.
  JifDeclassifyStmtExt | The Jif extension of the `DeclassifyStmt` node.
  JifDel_c | An implementation of the `Jif` interface.
  JifDoExt | The Jif extension of the `Do` node.
  JifDowngradeExprExt | The Jif extension of the `DowngradeExpr` node.
  JifDowngradeStmtExt | The Jif extension of the `DeclassifyStmt` node.
  JifEmptyExt | The Jif extension of the `Empty` node.
  JifEndorseExprExt | The Jif extension of the `EndorseExpr` node.
  JifEndorseStmtExt | The Jif extension of the `EndorseStmt` node.
  JifEvalExt | The Jif extension of the `Eval` node.
  JifExprExt | The Jif extension for all `Expr` nodes.
  JifFieldAssignDel | The Jif extension of the `FieldAssign` node.
  JifFieldAssignExt | The Jif extension of the `LocalAssign` node.
  JifFieldDeclDel | The Jif extension of the `FieldDecl` node.
  JifFieldDeclExt_c | The Jif extension of the `FieldDecl` node.
  JifFieldDeclExt_c.InvarianceLabelChecker | Checker to ensure that labels do not use covariant labels in the wrong places
  JifFieldDeclExt_c.InvarianceLabelSubstr | Visitor to ensure that labels do not use covariant labels in the wrong places
  JifFieldDeclExt_c.StaticFieldLabelChecker | Checker to ensure that labels of static fields do not use the This label, or any parameters
  JifFieldDel | The Jif extension of the `Field` node.
  JifFieldExt | The Jif extension of the `Field` node.
  JifForExt | The Jif extension of the `For` node.
  JifFormalDel | The Jif extension of the `Formal` node.
  JifFormalExt | The Jif extension of the `Formal` node.
  JifFormalExt.FormalVarianceLabelChecker | Checker to ensure that labels do not use covariant labels in the wrong places
  JifFormalExt.FormalVarianceLabelSubstr | Visitor to ensure that labels do not use covariant labels in the wrong places
  JifIfDel | The Jif extension of the `FieldAssign` node.
  JifIfExt | The Jif extension of the `If` node.
  JifInitializerDel | The Jif extension of the `Initializer` node.
  JifInitializerExt | The Jif extension of the `Initializer` node.
  JifInstanceOfDel | The Jif extension of the `Cast` node.
  JifInstanceofExt | The Jif extension of the `Instanceof` node.
  JifLabeledExt | The Jif extension of the `Labeled` node.
  JifLabelExprExt |
  JifLiteralExt | The Jif extension of the `Lit` or `NewLabel` node.
  JifLocalAssignExt | The Jif extension of the `LocalAssign` node.
  JifLocalClassDeclExt |
  JifLocalDeclDel | The delegate of the `JifMethodDecl` node.
  JifLocalDeclExt | The Jif extension of the `LocalDecl` node.
  JifLocalExt | The Jif extension of the `Local` node.
  JifMethodDeclDel | The delegate of the `JifMethodDecl` node.
  JifMethodDeclExt | The Jif extension of the `JifMethodDecl` node.
  JifMethodDeclExt.CovariantLabelChecker | Checker to ensure that no covariant label occurs in the label
  JifNewArrayDel |
  JifNewArrayExt | The Jif extension of the `NewArray` node.
  JifNewDel |
  JifNewExt | The Jif extension of the `New` node.
  JifPrincipalExprExt |
  JifPrincipalNodeExt |
  JifProcedureDeclDel | The Jif delegate the `ProcedureDecl` node.
  JifProcedureDeclExt_c | The Jif extension of the `ProcedureDecl` node.
  JifProcedureDeclExt_c.ConstraintVarianceLabelChecker | Checker to ensure that labels do not use covariant labels in the wrong places
  JifReturnExt | The Jif extension of the `Return` node.
  JifSourceFileExt | The root of all kinds of Jif extensions for statements.
  JifSpecialExt | The Jif extension of the `Special` node.
  JifStmtExt_c | The root of all kinds of Jif extensions for statements.
  JifSwitchExt | Jif extension of the `Switch` node.
  JifSynchronizedExt | Jif extension of the `Synchronized` node.
  JifThrowDel | Jif extension of the `Throw` node.
  JifThrowExt | Jif extension of the `Throw` node.
  JifTryExt | Jif extension of the `Try` node.
  JifTypeNodeDel | The Jif extension of the `TypeNode` node.
  JifTypeNodeDel.StaticLabelChecker | Checker to ensure that labels in a static context do not use the This label
  JifUnaryExt | Jif extension of the `Unary` node.
  JifWhileExt | Jif extension of the `While` node.
  LabelTypeCheckUtil | Contains some common utility code to type check dynamic labels and principals
  SubtypeChecker | A checker of subtype relationships.

## Package jif.extension Description

Provides classes that implements the Jif AST node extensions and delegates.

All the extensions extend from the class `Jif_c` and implement the `labelCheck` method. All delegates extend the class `JifJL_c`.

See Also:
  `Ext`, `jif.ast.Jif`, `jif.ast.Jif_c`, ``