Program: 104923
Project: 104923
Buggy source:
public void adjustBubblesPanel(int newX,int newY,int oldX,int oldY,boolean afterTouchAdjust,boolean resetToOriginal){
  if (!afterTouchAdjust && !resetToOriginal && (null == mOriginalBubbleFlowDraggableParams || (mPreviousBubbleAdjustmentValue - newY > -5 && mPreviousBubbleAdjustmentValue - newY < 5))) {
    return;
  }
  mPreviousBubbleAdjustmentValue=newY;
  int adjustOn=newY - oldY;
  FrameLayout.LayoutParams currentParams=null;
  try {
    currentParams=(FrameLayout.LayoutParams)mBubbleFlowDraggable.getChildAt(0).getLayoutParams();
  }
 catch (  NullPointerException exc) {
  }
  if (null == currentParams) {
    return;
  }
  boolean originalTopMargin=false;
  boolean heightSizeTopMargin=false;
  if (!afterTouchAdjust && 0 == oldY && adjustOn > -5 && adjustOn < 5 || resetToOriginal) {
    currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
    originalTopMargin=true;
  }
 else   if (0 == adjustOn) {
    int half=(mOriginalBubbleFlowDraggableParams.height + currentParams.height) / 2;
    if (0 - currentParams.topMargin > half) {
      currentParams.topMargin=0 - (mOriginalBubbleFlowDraggableParams.height + currentParams.height);
      heightSizeTopMargin=true;
    }
 else {
      currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
      originalTopMargin=true;
    }
  }
 else {
    currentParams.topMargin-=adjustOn;
    if (currentParams.topMargin + (mOriginalBubbleFlowDraggableParams.height + currentParams.height) < 0) {
      currentParams.topMargin=0 - (mOriginalBubbleFlowDraggableParams.height + currentParams.height);
      heightSizeTopMargin=true;
    }
 else     if (currentParams.topMargin > 0) {
      currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
      originalTopMargin=true;
    }
  }
  TabView currentTabView=getCurrentTab();
  if (null != currentTabView) {
    if (currentTabView.adjustBubblesPanel(adjustOn,originalTopMargin,heightSizeTopMargin)) {
      mBubbleFlowDraggable.getChildAt(0).setLayoutParams(currentParams);
    }
  }
  if (!heightSizeTopMargin) {
    mBubbleFlowDraggable.setVisibility(View.VISIBLE);
  }
 else {
    mBubbleFlowDraggable.setVisibility(View.GONE);
  }
}

Fixed version (ground truth):
public void adjustBubblesPanel(int newX,int newY,int oldX,int oldY,boolean afterTouchAdjust,boolean resetToOriginal){
  if (!afterTouchAdjust && !resetToOriginal && (null == mOriginalBubbleFlowDraggableParams || (mPreviousBubbleAdjustmentValue - newY > -5 && mPreviousBubbleAdjustmentValue - newY < 5))) {
    return;
  }
  mPreviousBubbleAdjustmentValue=newY;
  int adjustOn=newY - oldY;
  FrameLayout.LayoutParams currentParams=null;
  try {
    currentParams=(FrameLayout.LayoutParams)mBubbleFlowDraggable.getChildAt(0).getLayoutParams();
  }
 catch (  NullPointerException exc) {
  }
  if (null == currentParams) {
    return;
  }
  boolean originalTopMargin=false;
  boolean heightSizeTopMargin=false;
  if (!afterTouchAdjust && 0 == oldY && adjustOn > -5 && adjustOn < 5 || resetToOriginal) {
    currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
    originalTopMargin=true;
  }
 else   if (0 == adjustOn) {
    int half=(mOriginalBubbleFlowDraggableParams.height + currentParams.height) / 2;
    if (0 - currentParams.topMargin > half) {
      currentParams.topMargin=0 - (mOriginalBubbleFlowDraggableParams.height + currentParams.height);
      heightSizeTopMargin=true;
    }
 else {
      currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
      originalTopMargin=true;
    }
  }
 else {
    currentParams.topMargin-=adjustOn;
    if (currentParams.topMargin + (mOriginalBubbleFlowDraggableParams.height + currentParams.height) < 0) {
      currentParams.topMargin=0 - (mOriginalBubbleFlowDraggableParams.height + currentParams.height);
      heightSizeTopMargin=true;
    }
 else     if (currentParams.topMargin > 0) {
      currentParams.topMargin=mOriginalBubbleFlowDraggableLayoutTopMargin;
      originalTopMargin=true;
    }
  }
  TabView currentTabView=getCurrentTab();
  if (null != currentTabView) {
    if (currentTabView.adjustBubblesPanel(adjustOn,originalTopMargin,heightSizeTopMargin)) {
      mBubbleFlowDraggable.getChildAt(0).setLayoutParams(currentParams);
    }
  }
  if (!heightSizeTopMargin) {
    if (mBubbleFlowDraggable.isExpanded()) {
      mBubbleFlowDraggable.setVisibility(View.VISIBLE);
    }
  }
 else {
    mBubbleFlowDraggable.setVisibility(View.GONE);
  }
}