jif.types

## Interface JifTypeSystem

- All Superinterfaces:
    polyglot.ext.param.types.ParamTypeSystem<ParamInstance,Param>, polyglot.types.TypeSystem
  All Known Implementing Classes:
    JifTypeSystem_c

      public interface JifTypeSystem
      extends polyglot.ext.param.types.ParamTypeSystem<ParamInstance,Param>

  Jif type system.

- - ### Field Summary

    - ### Fields inherited from interface polyglot.types.TypeSystem

      `SERIALIZE_MEMBERS_WITH_CONTAINER`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.List<polyglot.types.ReferenceType>` | `abstractSuperInterfaces(polyglot.types.ReferenceType rt)` Exposes utility method of TypeSystem_c
    `java.lang.String` | `accessPathDescrip(AccessPath path, java.lang.String kind)`
    `boolean` | `actsFor(Principal p, Principal q)` Returns true iff p actsfor q in the empty environment.
    `<Actor extends ActsForParam,Granter extends ActsForParam> ActsForConstraint<Actor,Granter>` | `actsForConstraint(polyglot.util.Position pos, Actor actor, Granter granter, boolean isEquiv)` Construct an acts-for constraint.
    `ArgLabel` | `argLabel(polyglot.util.Position pos, polyglot.types.LocalInstance li, polyglot.types.CodeInstance ci)`
    `ArgLabel` | `argLabel(polyglot.util.Position pos, ParamInstance li)`
    `AuthConstraint` | `authConstraint(polyglot.util.Position pos, java.util.List<Principal> principals)` Construct an authority constraint.
    `AutoEndorseConstraint` | `autoEndorseConstraint(polyglot.util.Position pos, Label endorseTo)` Construct an autoendorse constraint.
    `ConfPolicy` | `bottomConfPolicy(polyglot.util.Position pos)`
    `IntegPolicy` | `bottomIntegPolicy(polyglot.util.Position pos)`
    `Label` | `bottomLabel()`
    `Label` | `bottomLabel(polyglot.util.Position pos)`
    `BottomPrincipal` | `bottomPrincipal(polyglot.util.Position pos)`
    `CallerConstraint` | `callerConstraint(polyglot.util.Position pos, java.util.List<Principal> principals)` Construct a caller constraint.
    `Label` | `callSitePCLabel(JifProcedureInstance pi)`
    `ConfPolicy` | `confProjection(Label L)`
    `Principal` | `conjunctivePrincipal(polyglot.util.Position pos, java.util.Collection<Principal> principals)`
    `Principal` | `conjunctivePrincipal(polyglot.util.Position pos, Principal conjunctLeft, Principal conjunctRight)`
    `PrincipalToJavaExpr` | `conjunctivePrincipalTranslator()`
    `ConstArrayType` | `constArrayOf(polyglot.util.Position pos, polyglot.types.Type type)`
    `ConstArrayType` | `constArrayOf(polyglot.util.Position pos, polyglot.types.Type type, int dims)`
    `ConstArrayType` | `constArrayOf(polyglot.util.Position position, polyglot.types.Type type, int dims, boolean castableToNonConst)`
    `ConstArrayType` | `constArrayOf(polyglot.util.Position position, polyglot.types.Type type, int dims, boolean castableToNonConst, boolean recurseIntoBaseType)`
    `ConstArrayType` | `constArrayOf(polyglot.types.Type type)`
    `ConstArrayType` | `constArrayOf(polyglot.types.Type type, int dims)`
    `CovariantParamLabel` | `covariantLabel(polyglot.util.Position pos, ParamInstance pi)`
    `JifContext` | `createContext()`
    `LabelEnv` | `createLabelEnv()`
    `Solver` | `createSolver(java.lang.String solverName)` Returns a new label constraint system solver.
    `DefaultSignature` | `defaultSignature()`
    `Principal` | `disjunctivePrincipal(polyglot.util.Position pos, java.util.Collection<Principal> principals)`
    `Principal` | `disjunctivePrincipal(polyglot.util.Position pos, Principal disjunctLeft, Principal disjunctRight)`
    `PrincipalToJavaExpr` | `disjunctivePrincipalTranslator()`
    `DynamicLabel` | `dynamicLabel(polyglot.util.Position pos, AccessPath path)`
    `DynamicPrincipal` | `dynamicPrincipal(polyglot.util.Position pos, AccessPath path)`
    `boolean` | `equalsNoStrip(polyglot.types.TypeObject t1, polyglot.types.TypeObject t2)` Compares t1 to t2 without stripping off all the parameters and labels
    `boolean` | `equalsStrip(polyglot.types.TypeObject t1, polyglot.types.TypeObject t2)` Compares t1 to t2, stripping off all the parameters and labels
    `ExceptionPath` | `exceptionPath(polyglot.types.Type type)`
    `AccessPath` | `exprToAccessPath(polyglot.ast.Expr e, JifContext context)` Create an AccessPath for the expression `e` in context `context`.
    `AccessPath` | `exprToAccessPath(polyglot.ast.Expr e, polyglot.types.Type expectedType, JifContext context)` Create an AccessPath for the expression `e` with expected type `expectedType` in context `context`.
    `Label` | `exprToLabel(JifTypeSystem ts, polyglot.ast.Expr e, JifContext context)`
    `Principal` | `exprToPrincipal(JifTypeSystem ts, polyglot.ast.Expr e, JifContext context)`
    `ExternalPrincipal` | `externalPrincipal(polyglot.util.Position pos, java.lang.String name)`
    `polyglot.types.ClassType` | `fatalException()`
    `VarLabel` | `freshLabelVariable(polyglot.util.Position pos, java.lang.String s, java.lang.String description)`
    `VarPrincipal` | `freshPrincipalVariable(polyglot.util.Position pos, java.lang.String s, java.lang.String description)`
    `Path` | `gotoPath(polyglot.ast.Branch.Kind kind, java.lang.String target)`
    `polyglot.types.ClassType` | `hasUntrustedAncestor(polyglot.types.Type t)` Check if the class has an untrusted non-jif ancestor.
    `IntegPolicy` | `integProjection(Label L)`
    `boolean` | `isAccessible(polyglot.types.MemberInstance mi, polyglot.types.ClassType contextClass)` Exposes utility method of TypeSystem_c
    `boolean` | `isFinalAccessExpr(polyglot.ast.Expr e)`
    `boolean` | `isFinalAccessExprOrConst(polyglot.ast.Expr e)`
    `boolean` | `isFinalAccessExprOrConst(polyglot.ast.Expr e, polyglot.types.Type expectedType)`
    `boolean` | `isLabel(polyglot.types.Type t)` Tests if the type is "label".
    `boolean` | `isLabeled(polyglot.types.Type type)` Returns true if the type is labeled.
    `boolean` | `isMarkerFieldName(java.lang.String s)` Is the string s a special marker field name?
    `boolean` | `isParamsRuntimeRep(polyglot.types.Type t)` Returns true if the type is a Jif class, or if it is a non-Jif class that represents parameters at runtime.
    `boolean` | `isPrincipal(polyglot.types.Type t)` Tests if the type is "principal".
    `boolean` | `isSignature(polyglot.types.Type t)` Returns true if the type is signature for a Java class.
    `JifMethodInstance` | `jifMethodInstance(polyglot.util.Position pos, polyglot.types.ReferenceType container, polyglot.types.Flags flags, polyglot.types.Type returnType, java.lang.String name, Label startLabel, boolean isDefaultStartLabel, java.util.List<? extends polyglot.types.Type> formalTypes, java.util.List<Label> formalArgLabels, Label endLabel, boolean isDefaultEndLabel, java.util.List<? extends polyglot.types.Type> excTypes, java.util.List<Assertion> constraints)`
    `ConfPolicy` | `join(ConfPolicy p1, ConfPolicy p2)`
    `IntegPolicy` | `join(IntegPolicy p1, IntegPolicy p2)`
    `Label` | `join(Label L1, Label L2)` Returns the join of L1 and L2.
    `ConfPolicy` | `joinConfPolicy(polyglot.util.Position pos, java.util.Set<ConfPolicy> components)`
    `IntegPolicy` | `joinIntegPolicy(polyglot.util.Position pos, java.util.Set<IntegPolicy> components)`
    `Label` | `joinLabel(polyglot.util.Position pos, java.util.Set<Label> components)`
    `polyglot.types.PrimitiveType` | `Label()` Returns the "label" type.
    `java.lang.String` | `LabelClassName()` Returns the name of the "label" type.
    `LabeledType` | `labeledType(polyglot.util.Position pos, polyglot.types.Type type, Label label)` Returns a labeled type, type{label}.
    `LabelLeAssertion` | `labelLeAssertion(polyglot.util.Position pos, Label lhs, Label rhs)` Construct an acts-for constraint.
    `Label` | `labelOfField(polyglot.types.FieldInstance vi, Label pc)` Get the label of the field, folding in the PC if appropriate.
    `Label` | `labelOfLocal(polyglot.types.LocalInstance vi, Label pc)` Get the label of the local, folding in the PC if appropriate.
    `Label` | `labelOfType(polyglot.types.Type type)` Get the label of the type, or bottom if unlabeled
    `Label` | `labelOfType(polyglot.types.Type type, Label defaultLabel)` Get the label of the type, or `defaultLabel` if unlabeled.
    `LabelTypeCheckUtil` | `labelTypeCheckUtil()`
    `java.lang.String` | `LabelUtilClassName()` Returns the name of the LabelUtil class.
    `boolean` | `leq(Label L1, Label L2)` Returns true iff L1 <= L2 in the empty environment.
    `boolean` | `leq(Policy p1, Policy p2)`
    `ConfPolicy` | `meet(ConfPolicy p1, ConfPolicy p2)`
    `IntegPolicy` | `meet(IntegPolicy p1, IntegPolicy p2)`
    `Label` | `meet(Label L1, Label L2)` Returns the meet of L1 and L2.
    `ConfPolicy` | `meetConfPolicy(polyglot.util.Position pos, java.util.Set<ConfPolicy> components)`
    `IntegPolicy` | `meetIntegPolicy(polyglot.util.Position pos, java.util.Set<IntegPolicy> components)`
    `Label` | `meetLabel(polyglot.util.Position pos, java.util.Set<Label> components)`
    `boolean` | `needsDynamicTypeMethods(polyglot.types.Type ct)` Returns true if the class has runtime methods for cast and instanceof
    `boolean` | `needsImplClass(polyglot.types.Type ct)` Returns true if the class has runtime methods for cast and instanceof
    `Label` | `noComponentsLabel()`
    `Label` | `noComponentsLabel(polyglot.util.Position pos)`
    `Label` | `notTaken()`
    `Label` | `notTaken(polyglot.util.Position pos)`
    `polyglot.types.ClassType` | `nullInstantiate(polyglot.util.Position pos, polyglot.ext.param.types.PClass<ParamInstance,Param> pc)`
    `PairLabel` | `pairLabel(polyglot.util.Position pos, ConfPolicy confPol, IntegPolicy integPol)`
    `ParamInstance` | `paramInstance(polyglot.util.Position pos, JifClassType container, ParamInstance.Kind kind, java.lang.String name)` Constructs a parameter instance for a class parameter declaration
    `ParamLabel` | `paramLabel(polyglot.util.Position pos, ParamInstance pi)`
    `LabelToJavaExpr` | `paramLabelTranslator()`
    `PrincipalToJavaExpr` | `paramPrincipalTranslator()`
    `PathMap` | `pathMap()`
    `PathMap` | `pathMap(Path path, Label L)`
    `Label` | `pathToLabel(polyglot.util.Position pos, AccessPath path)`
    `Principal` | `pathToPrincipal(polyglot.util.Position pos, AccessPath path)`
    `polyglot.types.PrimitiveType` | `Principal()` Returns the "principal" type.
    `polyglot.types.Type` | `PrincipalClass()` Returns the class jif.lang.Principal.
    `java.lang.String` | `PrincipalClassName()` Returns the name of the "principal" type.
    `PrincipalInstance` | `principalInstance(polyglot.util.Position pos, ExternalPrincipal principal)` Constructs a principal instance for an external principal.
    `ParamPrincipal` | `principalParam(polyglot.util.Position pos, ParamInstance pi)`
    `java.lang.String` | `PrincipalUtilClassName()` Returns the name of the PrincipalUtil class.
    `void` | `processFAP(polyglot.types.ReferenceType rt, AccessPath path, JifContext A)`
    `void` | `processFAP(polyglot.types.VarInstance fi, AccessPath path, JifContext A)`
    `boolean` | `promoteToFatal(polyglot.types.Type t)` Should this exception be promoted to a fatal error?
    `ProviderLabel` | `providerLabel(JifClassType ct)` Constructs a label for the provider of the given class type.
    `ProviderLabel` | `providerLabel(polyglot.util.Position position, JifClassType ct)`
    `ReaderPolicy` | `readerPolicy(polyglot.util.Position pos, Principal owner, java.util.Collection<Principal> readers)`
    `ReaderPolicy` | `readerPolicy(polyglot.util.Position pos, Principal owner, Principal reader)`
    `java.lang.String` | `RuntimePackageName()` Returns the name of the Jif runtime package.
    `ThisLabel` | `thisLabel(polyglot.types.ArrayType ct)`
    `ThisLabel` | `thisLabel(JifClassType ct)`
    `ThisLabel` | `thisLabel(polyglot.util.Position pos, JifClassType ct)`
    `Label` | `toLabel(Principal p)`
    `ConfPolicy` | `topConfPolicy(polyglot.util.Position pos)`
    `IntegPolicy` | `topIntegPolicy(polyglot.util.Position pos)`
    `Label` | `topLabel()`
    `Label` | `topLabel(polyglot.util.Position pos)`
    `TopPrincipal` | `topPrincipal(polyglot.util.Position pos)`
    `UnknownLabel` | `unknownLabel(polyglot.util.Position pos)`
    `Param` | `unknownParam(polyglot.util.Position pos)`
    `UnknownPrincipal` | `unknownPrincipal(polyglot.util.Position pos)`
    `polyglot.types.Type` | `unlabel(polyglot.types.Type type)` Remove the label from a type, if any.
    `AccessPath` | `varInstanceToAccessPath(polyglot.types.VarInstance vi, polyglot.util.Position pos)`
    `AccessPath` | `varInstanceToAccessPath(polyglot.types.VarInstance vi, java.lang.String name, polyglot.util.Position pos)`
    `WriterPolicy` | `writerPolicy(polyglot.util.Position pos, Principal owner, java.util.Collection<Principal> writers)`
    `WriterPolicy` | `writerPolicy(polyglot.util.Position pos, Principal owner, Principal writer)`
    `WritersToReadersLabel` | `writersToReadersLabel(polyglot.util.Position pos, Label L)`

    - ### Methods inherited from interface polyglot.ext.param.types.ParamTypeSystem

      `instantiate, mutablePClass, subst, subst`

    - ### Methods inherited from interface polyglot.types.TypeSystem

      `Abstract, ArithmeticException, arrayOf, arrayOf, arrayOf, arrayOf, ArrayStoreException, AssertionError, Boolean, Byte, callValid, canCoerceToString, canOverride, Char, checkAccessFlags, checkClassConformance, checkConstructorFlags, checkCycles, checkFieldFlags, checkInitializerFlags, checkInterfaceFieldFlags, checkLocalClassFlags, checkLocalFlags, checkMemberClassFlags, checkMethodFlags, checkOverride, checkTopLevelClassFlags, Class, classAccessible, classAccessible, classAccessibleFromPackage, ClassCastException, classContextResolver, classContextResolver, classFileLazyClassInitializer, Cloneable, constructorInstance, createClassContextResolver, createClassType, createClassType, createClassType, createClassType, createNewFlag, createPackage, createPackage, createPackageContextResolver, defaultClassInitializer, defaultConstructor, defaultPackageImports, descendsFrom, deserializedClassInitializer, Double, equals, Error, Exception, extensionInfo, fieldInstance, Final, findConstructor, findConstructor, findConstructor, findField, findField, findField, findField, findImplementingMethod, findMemberClass, findMemberClass, findMemberClass, findMethod, findMethod, findMethod, flagsForBits, Float, forName, getTransformedClassName, getTypeEncoderRootSet, hasAccessibleMethodNamed, hasEnclosingInstance, hasFormals, hasMethod, hasMethodNamed, implemented, importTable, importTable, initialize, initializerInstance, Int, Interface, interfaces, isAccessible, isAccessible, isAccessible, isAccessible, isCanonical, isCastValid, isEnclosed, isImplicitCastValid, isInherited, isMember, isSameConstructor, isSameMethod, isSubtype, isThrowable, isUncheckedException, leastCommonAncestor, legalAbstractMethodFlags, legalAccessFlags, legalConstructorFlags, legalFieldFlags, legalInitializerFlags, legalInterfaceFieldFlags, legalLocalClassFlags, legalLocalFlags, legalMemberClassFlags, legalMethodFlags, legalTopLevelClassFlags, loadedResolver, localInstance, Long, methodCallValid, methodInstance, moreSpecific, mostSpecificComparator, Native, NoFlags, Null, NullPointerException, numericConversionValid, numericConversionValid, Object, OutOfBoundsException, overrides, packageContextResolver, packageContextResolver, packageContextResolver, packageEquals, packageExists, packageForName, packageForName, parsedResolver, placeHolder, placeHolder, primitiveForName, Private, promote, promote, Protected, Public, restoreSystemResolver, RuntimeException, saveSystemResolver, Serializable, Short, Static, staticTarget, StrictFP, String, superType, Synchronized, systemResolver, Throwable, throwsSubset, Transient, translateArray, translateClass, translatePackage, translatePrimitive, typeEquals, typeForName, uncheckedExceptions, unknownPackage, unknownQualifier, unknownType, Void, Volatile, wrapperTypeString`

- - ### Method Detail

    - #### createContext

          JifContext createContext()

      Specified by:
        `createContext` in interface `polyglot.types.TypeSystem`

    - #### Label

          polyglot.types.PrimitiveType Label()

      Returns the "label" type.

    - #### PrincipalClassName

          java.lang.String PrincipalClassName()

      Returns the name of the "principal" type. In Jif, this is "jif.lang.Principal". In languages that extend Jif, this may be different.

    - #### PrincipalUtilClassName

          java.lang.String PrincipalUtilClassName()

      Returns the name of the PrincipalUtil class. In Jif, this is "jif.lang.PrincipalUtil". In languages that extend Jif, this may be different.

    - #### LabelClassName

          java.lang.String LabelClassName()

      Returns the name of the "label" type. In Jif, this is "jif.lang.Label". In languages that extend Jif, this may be different.

    - #### LabelUtilClassName

          java.lang.String LabelUtilClassName()

      Returns the name of the LabelUtil class. In Jif, this is "jif.lang.LabelUtil". In languages that extend Jif, this may be different.

    - #### RuntimePackageName

          java.lang.String RuntimePackageName()

      Returns the name of the Jif runtime package. In Jif, this is "jif.runtime". In languages that extend Jif, this may be different.

    - #### Principal

          polyglot.types.PrimitiveType Principal()

      Returns the "principal" type.

    - #### PrincipalClass

          polyglot.types.Type PrincipalClass()

      Returns the class jif.lang.Principal.

    - #### labeledType

          LabeledType labeledType(polyglot.util.Position pos,
                                  polyglot.types.Type type,
                                  Label label)

      Returns a labeled type, type{label}.

    - #### nullInstantiate

          polyglot.types.ClassType nullInstantiate(polyglot.util.Position pos,
                                                   polyglot.ext.param.types.PClass<ParamInstance,Param> pc)

    - #### paramInstance

          ParamInstance paramInstance(polyglot.util.Position pos,
                                      JifClassType container,
                                      ParamInstance.Kind kind,
                                      java.lang.String name)

      Constructs a parameter instance for a class parameter declaration

    - #### principalInstance

          PrincipalInstance principalInstance(polyglot.util.Position pos,
                                              ExternalPrincipal principal)

      Constructs a principal instance for an external principal.

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.types.Type type)

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.util.Position pos,
                                      polyglot.types.Type type)

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.types.Type type,
                                      int dims)

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.util.Position pos,
                                      polyglot.types.Type type,
                                      int dims)

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.util.Position position,
                                      polyglot.types.Type type,
                                      int dims,
                                      boolean castableToNonConst)

    - #### constArrayOf

          ConstArrayType constArrayOf(polyglot.util.Position position,
                                      polyglot.types.Type type,
                                      int dims,
                                      boolean castableToNonConst,
                                      boolean recurseIntoBaseType)

    - #### jifMethodInstance

          JifMethodInstance jifMethodInstance(polyglot.util.Position pos,
                                              polyglot.types.ReferenceType container,
                                              polyglot.types.Flags flags,
                                              polyglot.types.Type returnType,
                                              java.lang.String name,
                                              Label startLabel,
                                              boolean isDefaultStartLabel,
                                              java.util.List<? extends polyglot.types.Type> formalTypes,
                                              java.util.List<Label> formalArgLabels,
                                              Label endLabel,
                                              boolean isDefaultEndLabel,
                                              java.util.List<? extends polyglot.types.Type> excTypes,
                                              java.util.List<Assertion> constraints)

    - #### isPrincipal

          boolean isPrincipal(polyglot.types.Type t)

      Tests if the type is "principal".

    - #### isLabel

          boolean isLabel(polyglot.types.Type t)

      Tests if the type is "label".

    - #### pathMap

          PathMap pathMap()

    - #### pathMap

          PathMap pathMap(Path path,
                          Label L)

    - #### exceptionPath

          ExceptionPath exceptionPath(polyglot.types.Type type)

    - #### gotoPath

          Path gotoPath(polyglot.ast.Branch.Kind kind,
                        java.lang.String target)

    - #### unknownParam

          Param unknownParam(polyglot.util.Position pos)

    - #### principalParam

          ParamPrincipal principalParam(polyglot.util.Position pos,
                                        ParamInstance pi)

    - #### dynamicPrincipal

          DynamicPrincipal dynamicPrincipal(polyglot.util.Position pos,
                                            AccessPath path)

    - #### externalPrincipal

          ExternalPrincipal externalPrincipal(polyglot.util.Position pos,
                                              java.lang.String name)

    - #### unknownPrincipal

          UnknownPrincipal unknownPrincipal(polyglot.util.Position pos)

    - #### topPrincipal

          TopPrincipal topPrincipal(polyglot.util.Position pos)

    - #### bottomPrincipal

          BottomPrincipal bottomPrincipal(polyglot.util.Position pos)

    - #### conjunctivePrincipal

          Principal conjunctivePrincipal(polyglot.util.Position pos,
                                         Principal conjunctLeft,
                                         Principal conjunctRight)

    - #### conjunctivePrincipal

          Principal conjunctivePrincipal(polyglot.util.Position pos,
                                         java.util.Collection<Principal> principals)

    - #### disjunctivePrincipal

          Principal disjunctivePrincipal(polyglot.util.Position pos,
                                         Principal disjunctLeft,
                                         Principal disjunctRight)

    - #### disjunctivePrincipal

          Principal disjunctivePrincipal(polyglot.util.Position pos,
                                         java.util.Collection<Principal> principals)

    - #### pathToPrincipal

          Principal pathToPrincipal(polyglot.util.Position pos,
                                    AccessPath path)

    - #### freshPrincipalVariable

          VarPrincipal freshPrincipalVariable(polyglot.util.Position pos,
                                              java.lang.String s,
                                              java.lang.String description)

    - #### freshLabelVariable

          VarLabel freshLabelVariable(polyglot.util.Position pos,
                                      java.lang.String s,
                                      java.lang.String description)

    - #### topLabel

          Label topLabel(polyglot.util.Position pos)

      Returns:
        the label representing private, untrusted information ({⊤→⊤;⊥←⊥}).

    - #### bottomLabel

          Label bottomLabel(polyglot.util.Position pos)

      Returns:
        the label representing public, trusted information ({⊥→⊥;⊤←⊤}).

    - #### providerLabel

          ProviderLabel providerLabel(JifClassType ct)

      Constructs a label for the provider of the given class type. This is intended to be used only when initializing JifClassTypes. All other callers should use providerLabel(Position, JifClassType).

    - #### providerLabel

          ProviderLabel providerLabel(polyglot.util.Position position,
                                      JifClassType ct)

      Returns:
        a label representing the provider of the given class type.

    - #### noComponentsLabel

          Label noComponentsLabel(polyglot.util.Position pos)

      Returns:
        the label representing public, untrusted information ({⊥→⊥;⊥←⊥}).

    - #### notTaken

          Label notTaken(polyglot.util.Position pos)

    - #### topLabel

          Label topLabel()

      Returns:
        the label representing private, untrusted information ({⊤→⊤;⊥←⊥}).

    - #### bottomLabel

          Label bottomLabel()

      Returns:
        the label representing public, trusted information ({⊥→⊥;⊤←⊤}).

    - #### noComponentsLabel

          Label noComponentsLabel()

      Returns:
        the label representing public, untrusted information ({⊥→⊥;⊥←⊥}).

    - #### notTaken

          Label notTaken()

    - #### covariantLabel

          CovariantParamLabel covariantLabel(polyglot.util.Position pos,
                                             ParamInstance pi)

    - #### paramLabel

          ParamLabel paramLabel(polyglot.util.Position pos,
                                ParamInstance pi)

    - #### dynamicLabel

          DynamicLabel dynamicLabel(polyglot.util.Position pos,
                                    AccessPath path)

    - #### argLabel

          ArgLabel argLabel(polyglot.util.Position pos,
                            polyglot.types.LocalInstance li,
                            polyglot.types.CodeInstance ci)

    - #### argLabel

          ArgLabel argLabel(polyglot.util.Position pos,
                            ParamInstance li)

    - #### callSitePCLabel

          Label callSitePCLabel(JifProcedureInstance pi)

    - #### thisLabel

          ThisLabel thisLabel(polyglot.util.Position pos,
                              JifClassType ct)

    - #### thisLabel

          ThisLabel thisLabel(JifClassType ct)

    - #### thisLabel

          ThisLabel thisLabel(polyglot.types.ArrayType ct)

    - #### unknownLabel

          UnknownLabel unknownLabel(polyglot.util.Position pos)

    - #### pairLabel

          PairLabel pairLabel(polyglot.util.Position pos,
                              ConfPolicy confPol,
                              IntegPolicy integPol)

    - #### writersToReadersLabel

          WritersToReadersLabel writersToReadersLabel(polyglot.util.Position pos,
                                                      Label L)

    - #### pathToLabel

          Label pathToLabel(polyglot.util.Position pos,
                            AccessPath path)

    - #### readerPolicy

          ReaderPolicy readerPolicy(polyglot.util.Position pos,
                                    Principal owner,
                                    Principal reader)

    - #### readerPolicy

          ReaderPolicy readerPolicy(polyglot.util.Position pos,
                                    Principal owner,
                                    java.util.Collection<Principal> readers)

    - #### writerPolicy

          WriterPolicy writerPolicy(polyglot.util.Position pos,
                                    Principal owner,
                                    Principal writer)

    - #### writerPolicy

          WriterPolicy writerPolicy(polyglot.util.Position pos,
                                    Principal owner,
                                    java.util.Collection<Principal> writers)

    - #### bottomConfPolicy

          ConfPolicy bottomConfPolicy(polyglot.util.Position pos)

      Returns:
        the confidentiality policy representing public information (⊥→⊥).

    - #### bottomIntegPolicy

          IntegPolicy bottomIntegPolicy(polyglot.util.Position pos)

      Returns:
        the integrity policy representing trusted information (⊤←⊤).

    - #### topConfPolicy

          ConfPolicy topConfPolicy(polyglot.util.Position pos)

      Returns:
        the confidentiality policy representing private information (⊤→⊤).

    - #### topIntegPolicy

          IntegPolicy topIntegPolicy(polyglot.util.Position pos)

      Returns:
        the integrity policy representing untrusted information (⊥←⊥).

    - #### leq

          boolean leq(Label L1,
                      Label L2)

      Returns true iff L1 <= L2 in the empty environment.

    - #### actsFor

          boolean actsFor(Principal p,
                          Principal q)

      Returns true iff p actsfor q in the empty environment.

    - #### join

          Label join(Label L1,
                     Label L2)

      Returns the join of L1 and L2.

    - #### joinLabel

          Label joinLabel(polyglot.util.Position pos,
                          java.util.Set<Label> components)

    - #### meet

          Label meet(Label L1,
                     Label L2)

      Returns the meet of L1 and L2.

    - #### meetLabel

          Label meetLabel(polyglot.util.Position pos,
                          java.util.Set<Label> components)

    - #### leq

          boolean leq(Policy p1,
                      Policy p2)

    - #### joinConfPolicy

          ConfPolicy joinConfPolicy(polyglot.util.Position pos,
                                    java.util.Set<ConfPolicy> components)

    - #### joinIntegPolicy

          IntegPolicy joinIntegPolicy(polyglot.util.Position pos,
                                      java.util.Set<IntegPolicy> components)

    - #### meetConfPolicy

          ConfPolicy meetConfPolicy(polyglot.util.Position pos,
                                    java.util.Set<ConfPolicy> components)

    - #### meetIntegPolicy

          IntegPolicy meetIntegPolicy(polyglot.util.Position pos,
                                      java.util.Set<IntegPolicy> components)

    - #### join

          ConfPolicy join(ConfPolicy p1,
                          ConfPolicy p2)

    - #### meet

          ConfPolicy meet(ConfPolicy p1,
                          ConfPolicy p2)

    - #### join

          IntegPolicy join(IntegPolicy p1,
                           IntegPolicy p2)

    - #### meet

          IntegPolicy meet(IntegPolicy p1,
                           IntegPolicy p2)

    - #### confProjection

          ConfPolicy confProjection(Label L)

    - #### integProjection

          IntegPolicy integProjection(Label L)

    - #### actsForConstraint

          <Actor extends ActsForParam,Granter extends ActsForParam> ActsForConstraint<Actor,Granter> actsForConstraint(polyglot.util.Position pos,
                                                                                                                       Actor actor,
                                                                                                                       Granter granter,
                                                                                                                       boolean isEquiv)

      Construct an acts-for constraint.

    - #### labelLeAssertion

          LabelLeAssertion labelLeAssertion(polyglot.util.Position pos,
                                            Label lhs,
                                            Label rhs)

      Construct an acts-for constraint.

    - #### authConstraint

          AuthConstraint authConstraint(polyglot.util.Position pos,
                                        java.util.List<Principal> principals)

      Construct an authority constraint.

    - #### callerConstraint

          CallerConstraint callerConstraint(polyglot.util.Position pos,
                                            java.util.List<Principal> principals)

      Construct a caller constraint.

    - #### autoEndorseConstraint

          AutoEndorseConstraint autoEndorseConstraint(polyglot.util.Position pos,
                                                      Label endorseTo)

      Construct an autoendorse constraint.

    - #### labelOfField

          Label labelOfField(polyglot.types.FieldInstance vi,
                             Label pc)

      Get the label of the field, folding in the PC if appropriate.

    - #### labelOfLocal

          Label labelOfLocal(polyglot.types.LocalInstance vi,
                             Label pc)

      Get the label of the local, folding in the PC if appropriate.

    - #### labelOfType

          Label labelOfType(polyglot.types.Type type)

      Get the label of the type, or bottom if unlabeled

    - #### labelOfType

          Label labelOfType(polyglot.types.Type type,
                            Label defaultLabel)

      Get the label of the type, or `defaultLabel` if unlabeled.

    - #### unlabel

          polyglot.types.Type unlabel(polyglot.types.Type type)

      Remove the label from a type, if any.

    - #### isLabeled

          boolean isLabeled(polyglot.types.Type type)

      Returns true if the type is labeled.

    - #### isSignature

          boolean isSignature(polyglot.types.Type t)

      Returns true if the type is signature for a Java class.

    - #### isParamsRuntimeRep

          boolean isParamsRuntimeRep(polyglot.types.Type t)

      Returns true if the type is a Jif class, or if it is a non-Jif class that represents parameters at runtime.

    - #### hasUntrustedAncestor

          polyglot.types.ClassType hasUntrustedAncestor(polyglot.types.Type t)

      Check if the class has an untrusted non-jif ancestor. An untrusted non-jif ancestor is any non-jif ancestor that is not one of java.lang.Object, java.lang.Throwable, java.lang.Error, java.lang.Exception, java.lang.IllegalArgumentException, java.lang.IllegalStateException, java.lang.IndexOutOfBoundsException, java.lang.RuntimeException or java.lang.SecurityException.
      Parameters:
        `t` - Type to check
      Returns:
        null if ct has no untrusted non-Jif ancestor, and the ClassType of an untrusted non-Jif ancestor otherwise.

    - #### abstractSuperInterfaces

          java.util.List<polyglot.types.ReferenceType> abstractSuperInterfaces(polyglot.types.ReferenceType rt)

      Exposes utility method of TypeSystem_c

    - #### isAccessible

          boolean isAccessible(polyglot.types.MemberInstance mi,
                               polyglot.types.ClassType contextClass)

      Exposes utility method of TypeSystem_c
      Specified by:
        `isAccessible` in interface `polyglot.types.TypeSystem`

    - #### createSolver

          Solver createSolver(java.lang.String solverName)

      Returns a new label constraint system solver.

    - #### createLabelEnv

          LabelEnv createLabelEnv()

    - #### defaultSignature

          DefaultSignature defaultSignature()

    - #### equalsNoStrip

          boolean equalsNoStrip(polyglot.types.TypeObject t1,
                                polyglot.types.TypeObject t2)

      Compares t1 to t2 without stripping off all the parameters and labels

    - #### equalsStrip

          boolean equalsStrip(polyglot.types.TypeObject t1,
                              polyglot.types.TypeObject t2)

      Compares t1 to t2, stripping off all the parameters and labels

    - #### labelTypeCheckUtil

          LabelTypeCheckUtil labelTypeCheckUtil()

    - #### isMarkerFieldName

          boolean isMarkerFieldName(java.lang.String s)

      Is the string s a special marker field name?

    - #### promoteToFatal

          boolean promoteToFatal(polyglot.types.Type t)

      Should this exception be promoted to a fatal error?

    - #### toLabel

          Label toLabel(Principal p)

      Returns:
        the label {⊤→⊤;p←p}, representing the authority of the given principal. This can then be used to check whether L actsfor p by checking whether L <= p.

    - #### conjunctivePrincipalTranslator

          PrincipalToJavaExpr conjunctivePrincipalTranslator()

      Returns:
        class for translating conjunctive principals to java expressions

    - #### disjunctivePrincipalTranslator

          PrincipalToJavaExpr disjunctivePrincipalTranslator()

      Returns:
        class for translating disjunctive principals to java expressions

    - #### paramLabelTranslator

          LabelToJavaExpr paramLabelTranslator()

      Returns:
        object for translating label parameters to Java expressions

    - #### paramPrincipalTranslator

          PrincipalToJavaExpr paramPrincipalTranslator()

      Returns:
        object for translating principal parameters to Java expressions

    - #### fatalException

          polyglot.types.ClassType fatalException()

    - #### exprToAccessPath

          AccessPath exprToAccessPath(polyglot.ast.Expr e,
                                      JifContext context)
                               throws polyglot.types.SemanticException

      Create an AccessPath for the expression `e` in context `context`.
      Throws:
        `polyglot.types.SemanticException`

    - #### exprToAccessPath

          AccessPath exprToAccessPath(polyglot.ast.Expr e,
                                      polyglot.types.Type expectedType,
                                      JifContext context)
                               throws polyglot.types.SemanticException

      Create an AccessPath for the expression `e` with expected type `expectedType` in context `context`.
      Throws:
        `polyglot.types.SemanticException`

    - #### accessPathDescrip

          java.lang.String accessPathDescrip(AccessPath path,
                                             java.lang.String kind)

    - #### exprToPrincipal

          Principal exprToPrincipal(JifTypeSystem ts,
                                    polyglot.ast.Expr e,
                                    JifContext context)
                             throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### exprToLabel

          Label exprToLabel(JifTypeSystem ts,
                            polyglot.ast.Expr e,
                            JifContext context)
                     throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### isFinalAccessExpr

          boolean isFinalAccessExpr(polyglot.ast.Expr e)

    - #### isFinalAccessExprOrConst

          boolean isFinalAccessExprOrConst(polyglot.ast.Expr e,
                                           polyglot.types.Type expectedType)

    - #### isFinalAccessExprOrConst

          boolean isFinalAccessExprOrConst(polyglot.ast.Expr e)

    - #### processFAP

          void processFAP(polyglot.types.VarInstance fi,
                          AccessPath path,
                          JifContext A)
                   throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### processFAP

          void processFAP(polyglot.types.ReferenceType rt,
                          AccessPath path,
                          JifContext A)
                   throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### varInstanceToAccessPath

          AccessPath varInstanceToAccessPath(polyglot.types.VarInstance vi,
                                             java.lang.String name,
                                             polyglot.util.Position pos)
                                      throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### varInstanceToAccessPath

          AccessPath varInstanceToAccessPath(polyglot.types.VarInstance vi,
                                             polyglot.util.Position pos)
                                      throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### needsDynamicTypeMethods

          boolean needsDynamicTypeMethods(polyglot.types.Type ct)

      Returns true if the class has runtime methods for cast and instanceof

    - #### needsImplClass

          boolean needsImplClass(polyglot.types.Type ct)

      Returns true if the class has runtime methods for cast and instanceof