public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {

    // {ObjectTeams: role class literal?
    if (this.roleClassLiteralAccess != null)
      return this.roleClassLiteralAccess.analyseCode(currentScope, flowContext, flowInfo);
    // SH}
    // if reachable, request the addition of a synthetic field for caching the class descriptor
    SourceTypeBinding sourceType = currentScope.outerMostClassScope().enclosingSourceType();
    // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=22334
    if (!sourceType.isInterface()
        && !this.targetType.isBaseType()
        && currentScope.compilerOptions().targetJDK < ClassFileConstants.JDK1_5) {
      this.syntheticField =
          sourceType.addSyntheticFieldForClassLiteral(this.targetType, currentScope);
    }
    return flowInfo;
  }