Program: 70904
Project: 70904
Buggy source:
/** 
 * Explicitly sets the colors and associated indices for this mesh. The information supplied by <code>colors</code> and <code>indices</code> is copied to internal structures that are subsequently returned by   {@link #getColors} and {@link #getColorIndices}, respectively.   The argument <code>indices</code> specifies an index values into <code>colors</code> for each vertex of each feature, as described for  {@link #getNormalIndices()}. If a feature vertex has no color value, the index should be specified as <code>-1</code>. If <code>indices</code> is <code>null</code>, then <code>colors</code> should contain one color per vertex and a default index set will be created, appropriate to the mesh subclass. <p>If <code>colors</code> is <code>null</code>, then colors are explicitly removed and subsequent calls to   {@link #getColors} will return <code>null</code>.<p>Each entry in <code>colors</code> should be a <code>float[]</code> of length three (or four) giving the RGB (or RGBA) values for the color in the range 0 to 1.
 * @param colors colors to be set for this mesh
 * @param indices color indices, or <code>null</code> if the indices are tobe automatically generated.
 */
public void setColors(List<float[]> colors,int[] indices){
  if (colors == null) {
    myColors=null;
    myColorIndices=null;
  }
 else {
    ArrayList<float[]> newColors=new ArrayList<float[]>(colors.size());
    for (int i=0; i < colors.size(); i++) {
      float[] c=colors.get(i);
      if (c == null) {
        throw new IllegalArgumentException("String_Node_Str" + i);
      }
      if (c.length != 3 && c.length != 4) {
        throw new IllegalArgumentException("String_Node_Str" + i + "String_Node_Str"+ c.length+ "String_Node_Str");
      }
      newColors.add(copyColor(c));
    }
    if (indices == null && colors.size() != numVertices()) {
      throw new IllegalArgumentException("String_Node_Str" + "String_Node_Str");
    }
    int[] newIndices=createIndices(indices);
    myColors=newColors;
    myColorIndices=newIndices;
  }
  myVertexColoringP=false;
  myFeatureColoringP=false;
}

Fixed version (ground truth):
/** 
 * Explicitly sets the colors and associated indices for this mesh. The information supplied by <code>colors</code> and <code>indices</code> is copied to internal structures that are subsequently returned by   {@link #getColors} and {@link #getColorIndices}, respectively.   <p> Colors should be specified as <code>float[]</code> objects with a length >= 3, indicating RGG values (or RGBA values for length >= 4) in the range [0,1]. <p>The argument <code>indices</code> specifies an index values into <code>colors</code> for each vertex of each feature, as described for  {@link #getNormalIndices()}. If a feature vertex has no color value, the index should be specified as <code>-1</code>.  If <code>indices</code> is <code>null</code>, then <code>colors</code> should contain one color per vertex and a default index set will be created, appropriate to the mesh subclass. <p>If <code>colors</code> is <code>null</code>, then colors are explicitly removed and subsequent calls to   {@link #getColors} will return <code>null</code>.<p>Each entry in <code>colors</code> should be a <code>float[]</code> of length three (or four) giving the RGB (or RGBA) values for the color in the range 0 to 1.
 * @param colors colors to be set for this mesh
 * @param indices color indices, or <code>null</code> if the indices are tobe automatically generated.
 */
public void setColors(List<float[]> colors,int[] indices){
  if (colors == null) {
    myColors=null;
    myColorIndices=null;
  }
 else {
    ArrayList<float[]> newColors=new ArrayList<float[]>(colors.size());
    for (int i=0; i < colors.size(); i++) {
      float[] c=colors.get(i);
      if (c == null) {
        throw new IllegalArgumentException("String_Node_Str" + i);
      }
      if (c.length < 3) {
        throw new IllegalArgumentException("String_Node_Str" + i + "String_Node_Str");
      }
      newColors.add(copyColor(c));
    }
    if (indices == null && colors.size() != numVertices()) {
      throw new IllegalArgumentException("String_Node_Str" + "String_Node_Str");
    }
    int[] newIndices=createIndices(indices);
    myColors=newColors;
    myColorIndices=newIndices;
  }
  myVertexColoringP=false;
  myFeatureColoringP=false;
}