public FlowInfo getInitsForFinalBlankInitializationCheck(
     TypeBinding declaringType, FlowInfo flowInfo) {
   FlowContext current = this;
   FlowInfo inits = flowInfo;
   do {
     if (current instanceof InitializationFlowContext) {
       InitializationFlowContext initializationContext = (InitializationFlowContext) current;
       if (TypeBinding.equalsEquals(
           ((TypeDeclaration) initializationContext.associatedNode).binding, declaringType)) {
         return inits;
       }
       inits = initializationContext.initsBeforeContext;
       current = initializationContext.initializationParent;
     } else if (current instanceof ExceptionHandlingFlowContext) {
       if (current instanceof FieldInitsFakingFlowContext) {
         return FlowInfo.DEAD_END; // isDefinitelyAssigned will return true for all fields
       }
       ExceptionHandlingFlowContext exceptionContext = (ExceptionHandlingFlowContext) current;
       current =
           exceptionContext.initializationParent == null
               ? exceptionContext.parent
               : exceptionContext.initializationParent;
     } else {
       current = current.getLocalParent();
     }
   } while (current != null);
   // not found
   throw new IllegalStateException(declaringType.debugName());
 }