Program: 20425
Project: 20425
Buggy source:
@Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
  int widthMode=MeasureSpec.getMode(widthMeasureSpec);
  int heightMode=MeasureSpec.getMode(heightMeasureSpec);
  int widthSize=MeasureSpec.getSize(widthMeasureSpec);
  int heightSize=MeasureSpec.getSize(heightMeasureSpec);
  if ((widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.UNSPECIFIED) && !singleLine) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  int width=0;
  if (widthMode == MeasureSpec.EXACTLY) {
    width=widthSize;
  }
 else   if ((widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.UNSPECIFIED) && !TextUtils.isEmpty(text)) {
    width=(int)Layout.getDesiredWidth(text,paint) + getPaddingLeft() + getPaddingRight();
    if (widthMode == MeasureSpec.AT_MOST) {
      width=Math.min(width,widthSize);
    }
  }
  if (width > 0) {
    if (this.width != width) {
      this.width=width;
      update=true;
    }
    updateLayout();
    if (layout != null) {
      int height;
      if (heightMode == MeasureSpec.EXACTLY) {
        height=heightSize;
      }
 else {
        height=layout.getHeight() + getPaddingTop() + getPaddingBottom();
        if (heightMode == MeasureSpec.AT_MOST) {
          height=Math.min(height,heightSize);
        }
      }
      setMeasuredDimension(width,height);
    }
 else {
      int height;
      if (heightMode == MeasureSpec.EXACTLY) {
        height=heightSize;
      }
 else {
        height=0;
      }
      setMeasuredDimension(width,height);
    }
  }
 else {
    Logger.w(TAG,"String_Node_Str");
    setMeasuredDimension(0,0);
  }
}

Fixed version (ground truth):
@Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
  int widthMode=MeasureSpec.getMode(widthMeasureSpec);
  int heightMode=MeasureSpec.getMode(heightMeasureSpec);
  int widthSize=MeasureSpec.getSize(widthMeasureSpec);
  int heightSize=MeasureSpec.getSize(heightMeasureSpec);
  if ((widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.UNSPECIFIED) && !singleLine) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  int width=0;
  if (widthMode == MeasureSpec.EXACTLY) {
    width=widthSize;
  }
 else   if ((widthMode == MeasureSpec.AT_MOST || widthMode == MeasureSpec.UNSPECIFIED) && !TextUtils.isEmpty(text)) {
    width=Math.round(Layout.getDesiredWidth(text,paint) + getPaddingLeft() + getPaddingRight());
    if (widthMode == MeasureSpec.AT_MOST) {
      width=Math.min(width,widthSize);
    }
  }
  if (width > 0) {
    if (this.width != width) {
      this.width=width;
      update=true;
    }
    updateLayout();
    if (layout != null) {
      int height;
      if (heightMode == MeasureSpec.EXACTLY) {
        height=heightSize;
      }
 else {
        height=layout.getHeight() + getPaddingTop() + getPaddingBottom();
        if (heightMode == MeasureSpec.AT_MOST) {
          height=Math.min(height,heightSize);
        }
      }
      setMeasuredDimension(width,height);
    }
 else {
      int height;
      if (heightMode == MeasureSpec.EXACTLY) {
        height=heightSize;
      }
 else {
        height=0;
      }
      setMeasuredDimension(width,height);
    }
  }
 else {
    Logger.w(TAG,"String_Node_Str");
    setMeasuredDimension(0,0);
  }
}