Program: 191978
Project: 191978
Buggy source:
protected NotificationTemplateViewWrapper(Context ctx,View view){
  super(ctx,view);
  mTransformationHelper.setCustomTransformation(new ViewTransformationHelper.CustomTransformation(){
    @Override public boolean transformTo(    TransformState ownState,    TransformableView notification,    final float transformationAmount){
      if (!(notification instanceof HybridNotificationView)) {
        return false;
      }
      TransformState otherState=notification.getCurrentState(TRANSFORMING_VIEW_TITLE);
      final View text=ownState.getTransformedView();
      CrossFadeHelper.fadeOut(text,transformationAmount);
      if (otherState != null) {
        ownState.transformViewVerticalTo(otherState,this,transformationAmount);
        otherState.recycle();
      }
      return true;
    }
    @Override public boolean customTransformTarget(    TransformState ownState,    TransformState otherState){
      float endY=getTransformationY(ownState,otherState);
      ownState.setTransformationEndY(endY);
      return true;
    }
    @Override public boolean transformFrom(    TransformState ownState,    TransformableView notification,    float transformationAmount){
      if (!(notification instanceof HybridNotificationView)) {
        return false;
      }
      TransformState otherState=notification.getCurrentState(TRANSFORMING_VIEW_TITLE);
      final View text=ownState.getTransformedView();
      CrossFadeHelper.fadeIn(text,transformationAmount);
      if (otherState != null) {
        ownState.transformViewVerticalFrom(otherState,this,transformationAmount);
        otherState.recycle();
      }
      return true;
    }
    @Override public boolean initTransformation(    TransformState ownState,    TransformState otherState){
      float startY=getTransformationY(ownState,otherState);
      ownState.setTransformationStartY(startY);
      return true;
    }
    private float getTransformationY(    TransformState ownState,    TransformState otherState){
      int[] otherStablePosition=otherState.getLaidOutLocationOnScreen();
      int[] ownStablePosition=ownState.getLaidOutLocationOnScreen();
      return (otherStablePosition[1] + otherState.getTransformedView().getHeight() - ownStablePosition[1]) * 0.33f;
    }
  }
,TRANSFORMING_VIEW_TEXT);
}

Fixed version (ground truth):
protected NotificationTemplateViewWrapper(Context ctx,View view,ExpandableNotificationRow row){
  super(ctx,view,row);
  mTransformationHelper.setCustomTransformation(new ViewTransformationHelper.CustomTransformation(){
    @Override public boolean transformTo(    TransformState ownState,    TransformableView notification,    final float transformationAmount){
      if (!(notification instanceof HybridNotificationView)) {
        return false;
      }
      TransformState otherState=notification.getCurrentState(TRANSFORMING_VIEW_TITLE);
      final View text=ownState.getTransformedView();
      CrossFadeHelper.fadeOut(text,transformationAmount);
      if (otherState != null) {
        ownState.transformViewVerticalTo(otherState,this,transformationAmount);
        otherState.recycle();
      }
      return true;
    }
    @Override public boolean customTransformTarget(    TransformState ownState,    TransformState otherState){
      float endY=getTransformationY(ownState,otherState);
      ownState.setTransformationEndY(endY);
      return true;
    }
    @Override public boolean transformFrom(    TransformState ownState,    TransformableView notification,    float transformationAmount){
      if (!(notification instanceof HybridNotificationView)) {
        return false;
      }
      TransformState otherState=notification.getCurrentState(TRANSFORMING_VIEW_TITLE);
      final View text=ownState.getTransformedView();
      CrossFadeHelper.fadeIn(text,transformationAmount);
      if (otherState != null) {
        ownState.transformViewVerticalFrom(otherState,this,transformationAmount);
        otherState.recycle();
      }
      return true;
    }
    @Override public boolean initTransformation(    TransformState ownState,    TransformState otherState){
      float startY=getTransformationY(ownState,otherState);
      ownState.setTransformationStartY(startY);
      return true;
    }
    private float getTransformationY(    TransformState ownState,    TransformState otherState){
      int[] otherStablePosition=otherState.getLaidOutLocationOnScreen();
      int[] ownStablePosition=ownState.getLaidOutLocationOnScreen();
      return (otherStablePosition[1] + otherState.getTransformedView().getHeight() - ownStablePosition[1]) * 0.33f;
    }
  }
,TRANSFORMING_VIEW_TEXT);
}