Program: 92737
Project: 92737
Buggy source:
private void switchAccounts(final MaterialAccount newAccount){
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    final ImageView floatingImage=new ImageView(this);
    Rect startingRect=new Rect();
    Rect finalRect=new Rect();
    Point offsetHover=new Point();
    float finalScale=1.6f;
    final int statusBarHeight;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT || (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT && !kitkatTraslucentStatusbar)) {
      statusBarHeight=(int)(25 * density);
    }
 else {
      statusBarHeight=0;
    }
    ImageView photoClicked;
    if (newAccount.getAccountNumber() == MaterialAccount.SECOND_ACCOUNT) {
      photoClicked=userSecondPhoto;
    }
 else {
      photoClicked=userThirdPhoto;
    }
    photoClicked.getGlobalVisibleRect(startingRect,offsetHover);
    floatingImage.setImageDrawable(photoClicked.getDrawable());
    RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(photoClicked.getWidth(),photoClicked.getHeight());
    params.setMargins(offsetHover.x,offsetHover.y - statusBarHeight,0,0);
    drawer.addView(floatingImage,params);
    photoClicked.setImageBitmap(currentAccount.getCircularPhoto());
    usercoverSwitcher.setImageBitmap(newAccount.getBackground());
    userphoto.getGlobalVisibleRect(finalRect);
    int offset=(((finalRect.bottom - finalRect.top) - (startingRect.bottom - finalRect.top)) / 2);
    finalRect.offset(offset,offset - statusBarHeight);
    startingRect.offset(0,-statusBarHeight);
    AnimatorSet set=new AnimatorSet();
    set.play(ObjectAnimator.ofFloat(floatingImage,View.X,startingRect.left,finalRect.left)).with(ObjectAnimator.ofFloat(floatingImage,View.Y,startingRect.top,finalRect.top)).with(ObjectAnimator.ofFloat(floatingImage,View.SCALE_X,1f,finalScale)).with(ObjectAnimator.ofFloat(floatingImage,View.SCALE_Y,1f,finalScale)).with(ObjectAnimator.ofFloat(userphoto,View.ALPHA,1f,0f)).with(ObjectAnimator.ofFloat(usercover,View.ALPHA,1f,0f)).with(ObjectAnimator.ofFloat(photoClicked,View.SCALE_X,0f,1f)).with(ObjectAnimator.ofFloat(photoClicked,View.SCALE_Y,0f,1f));
    set.setDuration(USER_CHANGE_TRANSITION);
    set.setInterpolator(new DecelerateInterpolator());
    set.addListener(new AnimatorListenerAdapter(){
      @SuppressLint("String_Node_Str") @Override public void onAnimationEnd(      Animator animation){
        ((View)userphoto).setAlpha(1);
        setFirstAccountPhoto(newAccount.getCircularPhoto());
        drawer.removeView(floatingImage);
        setUserEmail(newAccount.getSubTitle());
        setUsername(newAccount.getTitle());
        setDrawerBackground(newAccount.getBackground());
        ((View)usercover).setAlpha(1);
        currentAccount.setAccountNumber(newAccount.getAccountNumber());
        newAccount.setAccountNumber(MaterialAccount.FIRST_ACCOUNT);
        currentAccount=newAccount;
        if (!deviceSupportMultiPane())         layout.closeDrawer(drawer);
      }
      @Override public void onAnimationCancel(      Animator animation){
        onAnimationEnd(animation);
      }
    }
);
    set.start();
  }
 else {
    currentAccount.setAccountNumber(newAccount.getAccountNumber());
    newAccount.setAccountNumber(MaterialAccount.FIRST_ACCOUNT);
    currentAccount=newAccount;
    notifyAccountDataChanged();
    if (!deviceSupportMultiPane())     layout.closeDrawer(drawer);
  }
}

Fixed version (ground truth):
private void switchAccounts(final MaterialAccount newAccount){
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    final ImageView floatingImage=new ImageView(this);
    Rect startingRect=new Rect();
    Rect finalRect=new Rect();
    Point offsetHover=new Point();
    float finalScale=1.6f;
    final int statusBarHeight;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT || (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT && !kitkatTraslucentStatusbar)) {
      statusBarHeight=(int)(25 * density);
    }
 else {
      statusBarHeight=0;
    }
    ImageView photoClicked;
    if (newAccount.getAccountNumber() == MaterialAccount.SECOND_ACCOUNT) {
      photoClicked=userSecondPhoto;
    }
 else {
      photoClicked=userThirdPhoto;
    }
    photoClicked.getGlobalVisibleRect(startingRect,offsetHover);
    floatingImage.setImageDrawable(photoClicked.getDrawable());
    RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(photoClicked.getWidth(),photoClicked.getHeight());
    params.setMargins(offsetHover.x,offsetHover.y - statusBarHeight,0,0);
    drawer.addView(floatingImage,params);
    photoClicked.setImageDrawable(currentAccount.getCircularPhoto());
    usercoverSwitcher.setImageDrawable(newAccount.getBackground());
    userphoto.getGlobalVisibleRect(finalRect);
    int offset=(((finalRect.bottom - finalRect.top) - (startingRect.bottom - finalRect.top)) / 2);
    finalRect.offset(offset,offset - statusBarHeight);
    startingRect.offset(0,-statusBarHeight);
    AnimatorSet set=new AnimatorSet();
    set.play(ObjectAnimator.ofFloat(floatingImage,View.X,startingRect.left,finalRect.left)).with(ObjectAnimator.ofFloat(floatingImage,View.Y,startingRect.top,finalRect.top)).with(ObjectAnimator.ofFloat(floatingImage,View.SCALE_X,1f,finalScale)).with(ObjectAnimator.ofFloat(floatingImage,View.SCALE_Y,1f,finalScale)).with(ObjectAnimator.ofFloat(userphoto,View.ALPHA,1f,0f)).with(ObjectAnimator.ofFloat(usercover,View.ALPHA,1f,0f)).with(ObjectAnimator.ofFloat(photoClicked,View.SCALE_X,0f,1f)).with(ObjectAnimator.ofFloat(photoClicked,View.SCALE_Y,0f,1f));
    set.setDuration(USER_CHANGE_TRANSITION);
    set.setInterpolator(new DecelerateInterpolator());
    set.addListener(new AnimatorListenerAdapter(){
      @SuppressLint("String_Node_Str") @Override public void onAnimationEnd(      Animator animation){
        ((View)userphoto).setAlpha(1);
        setFirstAccountPhoto(newAccount.getCircularPhoto());
        drawer.removeView(floatingImage);
        setUserEmail(newAccount.getSubTitle());
        setUsername(newAccount.getTitle());
        setDrawerBackground(newAccount.getBackground());
        ((View)usercover).setAlpha(1);
        currentAccount.setAccountNumber(newAccount.getAccountNumber());
        newAccount.setAccountNumber(MaterialAccount.FIRST_ACCOUNT);
        currentAccount=newAccount;
        if (!deviceSupportMultiPane())         layout.closeDrawer(drawer);
      }
      @Override public void onAnimationCancel(      Animator animation){
        onAnimationEnd(animation);
      }
    }
);
    set.start();
  }
 else {
    currentAccount.setAccountNumber(newAccount.getAccountNumber());
    newAccount.setAccountNumber(MaterialAccount.FIRST_ACCOUNT);
    currentAccount=newAccount;
    notifyAccountDataChanged();
    if (!deviceSupportMultiPane())     layout.closeDrawer(drawer);
  }
}