public DfaInstructionState[] visitPush(
     PushInstruction instruction, DataFlowRunner runner, DfaMemoryState memState) {
   if (instruction.isFieldReference()) {
     memState.fieldReferenced();
   }
   memState.push(instruction.getValue());
   return nextInstruction(instruction, runner, memState);
 }
 @Override
 public DfaInstructionState[] visitPush(
     PushInstruction instruction, DataFlowRunner runner, DfaMemoryState memState) {
   if (instruction.isReferenceRead()) {
     DfaValue dfaValue = instruction.getValue();
     if (dfaValue instanceof DfaVariableValue) {
       DfaConstValue constValue = memState.getConstantValue((DfaVariableValue) dfaValue);
       myPossibleVariableValues.putValue(
           instruction,
           constValue != null
                   && (constValue.getValue() == null || constValue.getValue() instanceof Boolean)
               ? constValue
               : ANY_VALUE);
     }
   }
   return super.visitPush(instruction, runner, memState);
 }