Program: 87854
Project: 87854
Buggy source:
@SuppressWarnings("String_Node_Str") private void onStartInputViewInternal(final EditorInfo editorInfo,final boolean restarting){
  super.onStartInputView(editorInfo,restarting);
  final KeyboardSwitcher switcher=mKeyboardSwitcher;
  final MainKeyboardView mainKeyboardView=switcher.getMainKeyboardView();
  if (editorInfo == null) {
    Log.e(TAG,"String_Node_Str");
    if (LatinImeLogger.sDBG) {
      throw new NullPointerException("String_Node_Str");
    }
    return;
  }
  if (DEBUG) {
    Log.d(TAG,"String_Node_Str" + String.format("String_Node_Str",editorInfo.inputType,editorInfo.imeOptions));
    Log.d(TAG,"String_Node_Str" + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0) + "String_Node_Str"+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0)+ "String_Node_Str"+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0));
  }
  if (ProductionFlag.IS_EXPERIMENTAL) {
    ResearchLogger.latinIME_onStartInputViewInternal(editorInfo,mPrefs);
  }
  if (InputAttributes.inPrivateImeOptions(null,NO_MICROPHONE_COMPAT,editorInfo)) {
    Log.w(TAG,"String_Node_Str" + editorInfo.privateImeOptions);
    Log.w(TAG,"String_Node_Str" + getPackageName() + "String_Node_Str"+ NO_MICROPHONE+ "String_Node_Str");
  }
  if (InputAttributes.inPrivateImeOptions(getPackageName(),FORCE_ASCII,editorInfo)) {
    Log.w(TAG,"String_Node_Str" + editorInfo.privateImeOptions);
    Log.w(TAG,"String_Node_Str");
  }
  mTargetApplicationInfo=TargetApplicationGetter.getCachedApplicationInfo(editorInfo.packageName);
  if (null == mTargetApplicationInfo) {
    new TargetApplicationGetter(this,this).execute(editorInfo.packageName);
  }
  LatinImeLogger.onStartInputView(editorInfo);
  if (mainKeyboardView == null) {
    return;
  }
  final AccessibilityUtils accessUtils=AccessibilityUtils.getInstance();
  if (accessUtils.isTouchExplorationEnabled()) {
    accessUtils.onStartInputViewInternal(mainKeyboardView,editorInfo,restarting);
  }
  final boolean selectionChanged=mLastSelectionStart != editorInfo.initialSelStart || mLastSelectionEnd != editorInfo.initialSelEnd;
  final boolean inputTypeChanged=!mCurrentSettings.isSameInputType(editorInfo);
  final boolean isDifferentTextField=!restarting || inputTypeChanged;
  if (isDifferentTextField) {
    final boolean currentSubtypeEnabled=mSubtypeSwitcher.updateParametersOnStartInputViewAndReturnIfCurrentSubtypeEnabled();
    if (!currentSubtypeEnabled) {
      final InputMethodSubtype newSubtype=ImfUtils.getCurrentInputMethodSubtype(this,mSubtypeSwitcher.getNoLanguageSubtype());
      mSubtypeSwitcher.updateSubtype(newSubtype);
      loadKeyboard();
    }
  }
  updateFullscreenMode();
  mApplicationSpecifiedCompletions=null;
  if (isDifferentTextField || selectionChanged) {
    mEnteredText=null;
    resetComposingState(true);
    mDeleteCount=0;
    mSpaceState=SPACE_STATE_NONE;
    if (mSuggestionStripView != null) {
      mSuggestionStripView.clear();
    }
  }
  mConnection.resetCachesUponCursorMove(mLastSelectionStart);
  if (isDifferentTextField) {
    mainKeyboardView.closing();
    loadSettings();
    if (mSuggest != null && mCurrentSettings.mCorrectionEnabled) {
      mSuggest.setAutoCorrectionThreshold(mCurrentSettings.mAutoCorrectionThreshold);
    }
    switcher.loadKeyboard(editorInfo,mCurrentSettings);
  }
  setSuggestionStripShownInternal(isSuggestionsStripVisible(),false);
  mLastSelectionStart=editorInfo.initialSelStart;
  mLastSelectionEnd=editorInfo.initialSelEnd;
  mKeyboardSwitcher.updateShiftState();
  mHandler.cancelUpdateSuggestionStrip();
  mHandler.cancelDoubleSpacesTimer();
  mainKeyboardView.setMainDictionaryAvailability(mIsMainDictionaryAvailable);
  mainKeyboardView.setKeyPreviewPopupEnabled(mCurrentSettings.mKeyPreviewPopupOn,mCurrentSettings.mKeyPreviewPopupDismissDelay);
  mainKeyboardView.setGestureHandlingEnabledByUser(mCurrentSettings.mGestureInputEnabled);
  mainKeyboardView.setGesturePreviewMode(mCurrentSettings.mGesturePreviewTrailEnabled,mCurrentSettings.mGestureFloatingPreviewTextEnabled);
  if (TRACE)   Debug.startMethodTracing("String_Node_Str");
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void onStartInputViewInternal(final EditorInfo editorInfo,final boolean restarting){
  super.onStartInputView(editorInfo,restarting);
  final KeyboardSwitcher switcher=mKeyboardSwitcher;
  final MainKeyboardView mainKeyboardView=switcher.getMainKeyboardView();
  if (editorInfo == null) {
    Log.e(TAG,"String_Node_Str");
    if (LatinImeLogger.sDBG) {
      throw new NullPointerException("String_Node_Str");
    }
    return;
  }
  if (DEBUG) {
    Log.d(TAG,"String_Node_Str" + String.format("String_Node_Str",editorInfo.inputType,editorInfo.imeOptions));
    Log.d(TAG,"String_Node_Str" + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0) + "String_Node_Str"+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0)+ "String_Node_Str"+ ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0));
  }
  if (ProductionFlag.IS_EXPERIMENTAL) {
    ResearchLogger.latinIME_onStartInputViewInternal(editorInfo,mPrefs);
  }
  if (InputAttributes.inPrivateImeOptions(null,NO_MICROPHONE_COMPAT,editorInfo)) {
    Log.w(TAG,"String_Node_Str" + editorInfo.privateImeOptions);
    Log.w(TAG,"String_Node_Str" + getPackageName() + "String_Node_Str"+ NO_MICROPHONE+ "String_Node_Str");
  }
  if (InputAttributes.inPrivateImeOptions(getPackageName(),FORCE_ASCII,editorInfo)) {
    Log.w(TAG,"String_Node_Str" + editorInfo.privateImeOptions);
    Log.w(TAG,"String_Node_Str");
  }
  mTargetApplicationInfo=TargetApplicationGetter.getCachedApplicationInfo(editorInfo.packageName);
  if (null == mTargetApplicationInfo) {
    new TargetApplicationGetter(this,this).execute(editorInfo.packageName);
  }
  LatinImeLogger.onStartInputView(editorInfo);
  if (mainKeyboardView == null) {
    return;
  }
  final AccessibilityUtils accessUtils=AccessibilityUtils.getInstance();
  if (accessUtils.isTouchExplorationEnabled()) {
    accessUtils.onStartInputViewInternal(mainKeyboardView,editorInfo,restarting);
  }
  final boolean selectionChanged=mLastSelectionStart != editorInfo.initialSelStart || mLastSelectionEnd != editorInfo.initialSelEnd;
  final boolean inputTypeChanged=!mCurrentSettings.isSameInputType(editorInfo);
  final boolean isDifferentTextField=!restarting || inputTypeChanged;
  if (isDifferentTextField) {
    final boolean currentSubtypeEnabled=mSubtypeSwitcher.updateParametersOnStartInputViewAndReturnIfCurrentSubtypeEnabled();
    if (!currentSubtypeEnabled) {
      final InputMethodSubtype newSubtype=ImfUtils.getCurrentInputMethodSubtype(this,mSubtypeSwitcher.getNoLanguageSubtype());
      mSubtypeSwitcher.updateSubtype(newSubtype);
      loadKeyboard();
    }
  }
  updateFullscreenMode();
  mApplicationSpecifiedCompletions=null;
  if (isDifferentTextField || selectionChanged) {
    mEnteredText=null;
    resetComposingState(true);
    mDeleteCount=0;
    mSpaceState=SPACE_STATE_NONE;
    if (mSuggestionStripView != null) {
      mSuggestionStripView.clear();
    }
  }
  mConnection.resetCachesUponCursorMove(editorInfo.initialSelStart);
  if (isDifferentTextField) {
    mainKeyboardView.closing();
    loadSettings();
    if (mSuggest != null && mCurrentSettings.mCorrectionEnabled) {
      mSuggest.setAutoCorrectionThreshold(mCurrentSettings.mAutoCorrectionThreshold);
    }
    switcher.loadKeyboard(editorInfo,mCurrentSettings);
  }
  setSuggestionStripShownInternal(isSuggestionsStripVisible(),false);
  mLastSelectionStart=editorInfo.initialSelStart;
  mLastSelectionEnd=editorInfo.initialSelEnd;
  mKeyboardSwitcher.updateShiftState();
  mHandler.cancelUpdateSuggestionStrip();
  mHandler.cancelDoubleSpacesTimer();
  mainKeyboardView.setMainDictionaryAvailability(mIsMainDictionaryAvailable);
  mainKeyboardView.setKeyPreviewPopupEnabled(mCurrentSettings.mKeyPreviewPopupOn,mCurrentSettings.mKeyPreviewPopupDismissDelay);
  mainKeyboardView.setGestureHandlingEnabledByUser(mCurrentSettings.mGestureInputEnabled);
  mainKeyboardView.setGesturePreviewMode(mCurrentSettings.mGesturePreviewTrailEnabled,mCurrentSettings.mGestureFloatingPreviewTextEnabled);
  if (TRACE)   Debug.startMethodTracing("String_Node_Str");
}