Program: 76480
Project: 76480
Buggy source:
/** 
 * Return a description of the object.  The level of detail depends on the argument, which is an or-ing of the static final constants defined in the NamedObj class and in this class. Lines are indented according to to the level argument using the protected method _getIndentPrefix(). Zero, one or two brackets can be specified to surround the returned description.  If one is specified it is the leading bracket. This is used by derived classes that will append to the description. Those derived classes are responsible for the closing bracket. An argument other than 0, 1, or 2 is taken to be equivalent to 0. <p> If the detail argument sets the bit defined by the constant CONFIGURATION, then append to the description a field containing any subset of the words "input", "output", "multiport", and "opaque", separated by spaces, plus a subfield of the form "{width <i>integer</i>}", where the integer is the width of the port. The field keywork is "configuration". <p> If the detail argument sets the bit defined by the constant RECEIVERS, then append to the description a field containing the receivers contained by this port.  The keywork is "receivers" and the format is like the Receivers array, an array of groups, with each group receiving from a channel. Each group is a list of receiver descriptions (it may also be empty). If the detail argument sets the bit defined by the constant REMOTERECEIVERS, then also append to the description a field containing the remote receivers connected to this port. This method is read-synchronized on the workspace.
 * @param detail The level of detail.
 * @param indent The amount of indenting.
 * @param bracket The number of surrounding brackets (0, 1, or 2).
 * @return A description of the object.
 */
protected String _description(int detail,int indent,int bracket){
  try {
    workspace().getReadAccess();
    String result;
    if (bracket == 1 || bracket == 2) {
      result=super._description(detail,indent,1);
    }
 else {
      result=super._description(detail,indent,0);
    }
    if ((detail & CONFIGURATION) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      boolean space=false;
      if (isInput()) {
        space=true;
        result+="String_Node_Str";
      }
      if (isOutput()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (isMultiport()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (isOpaque()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (space)       result+="String_Node_Str";
      result+="String_Node_Str" + getWidth() + "String_Node_Str";
    }
    if ((detail & RECEIVERS) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      Receiver[][] recvrs=null;
      try {
        recvrs=getReceivers();
      }
 catch (      Exception e) {
        result+="String_Node_Str";
      }
      if (recvrs != null) {
        for (int i=0; i < recvrs.length; i++) {
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
          if (recvrs[i] != null) {
            for (int j=0; j < recvrs[i].length; j++) {
              result+=_getIndentPrefix(indent + 2);
              result+="String_Node_Str";
              if (recvrs[i][j] != null) {
                result+=recvrs[i][j].getClass().getName();
              }
              result+="String_Node_Str";
            }
          }
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
        }
      }
      result+=_getIndentPrefix(indent) + "String_Node_Str";
    }
    if ((detail & REMOTERECEIVERS) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      Receiver[][] recvrs=null;
      try {
        recvrs=getRemoteReceivers();
        ;
      }
 catch (      Exception e) {
        result+="String_Node_Str";
      }
      if (recvrs != null) {
        for (int i=0; i < recvrs.length; i++) {
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
          if (recvrs[i] != null) {
            for (int j=0; j < recvrs[i].length; j++) {
              result+=_getIndentPrefix(indent + 2);
              result+="String_Node_Str";
              if (recvrs[i][j] != null) {
                result+=recvrs[i][j].getClass().getName();
                result+="String_Node_Str";
                result+=recvrs[i][j].getContainer().getFullName();
              }
              result+="String_Node_Str";
            }
          }
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
        }
      }
      result+=_getIndentPrefix(indent) + "String_Node_Str";
    }
    if (bracket == 2)     result+="String_Node_Str";
    return result;
  }
  finally {
    workspace().doneReading();
  }
}

Fixed version (ground truth):
/** 
 * Return a description of the object.  The level of detail depends on the argument, which is an or-ing of the static final constants defined in the NamedObj class and in this class. Lines are indented according to to the level argument using the protected method _getIndentPrefix(). Zero, one or two brackets can be specified to surround the returned description.  If one is specified it is the leading bracket. This is used by derived classes that will append to the description. Those derived classes are responsible for the closing bracket. An argument other than 0, 1, or 2 is taken to be equivalent to 0. <p> If the detail argument sets the bit defined by the constant CONFIGURATION, then append to the description a field containing any subset of the words "input", "output", "multiport", and "opaque", separated by spaces, plus a subfield of the form "{width <i>integer</i>}", where the integer is the width of the port. The field keywork is "configuration". <p> If the detail argument sets the bit defined by the constant RECEIVERS, then append to the description a field containing the receivers contained by this port.  The keywork is "receivers" and the format is like the Receivers array, an array of groups, with each group receiving from a channel. Each group is a list of receiver descriptions (it may also be empty). If the detail argument sets the bit defined by the constant REMOTERECEIVERS, then also append to the description a field containing the remote receivers connected to this port. This method is read-synchronized on the workspace.
 * @param detail The level of detail.
 * @param indent The amount of indenting.
 * @param bracket The number of surrounding brackets (0, 1, or 2).
 * @return A description of the object.
 */
protected String _description(int detail,int indent,int bracket){
  try {
    workspace().getReadAccess();
    String result;
    if (bracket == 1 || bracket == 2) {
      result=super._description(detail,indent,1);
    }
 else {
      result=super._description(detail,indent,0);
    }
    if ((detail & CONFIGURATION) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      boolean space=false;
      if (isInput()) {
        space=true;
        result+="String_Node_Str";
      }
      if (isOutput()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (isMultiport()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (isOpaque()) {
        if (space)         result+="String_Node_Str";
        space=true;
        result+="String_Node_Str";
      }
      if (space)       result+="String_Node_Str";
      result+="String_Node_Str" + getWidth() + "String_Node_Str";
    }
    if ((detail & RECEIVERS) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      try {
        Receiver[][] recvrs=null;
        recvrs=getReceivers();
        if (recvrs != null) {
          for (int i=0; i < recvrs.length; i++) {
            result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
            if (recvrs[i] != null) {
              for (int j=0; j < recvrs[i].length; j++) {
                result+=_getIndentPrefix(indent + 2);
                result+="String_Node_Str";
                if (recvrs[i][j] != null) {
                  result+=recvrs[i][j].getClass().getName();
                }
                result+="String_Node_Str";
              }
            }
            result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
          }
        }
      }
 catch (      IllegalActionException ex) {
        result+=_getIndentPrefix(indent + 1) + ex.getMessage() + "String_Node_Str";
      }
      result+=_getIndentPrefix(indent) + "String_Node_Str";
    }
    if ((detail & REMOTERECEIVERS) != 0) {
      if (result.trim().length() > 0) {
        result+="String_Node_Str";
      }
      result+="String_Node_Str";
      Receiver[][] recvrs=null;
      recvrs=getRemoteReceivers();
      ;
      if (recvrs != null) {
        for (int i=0; i < recvrs.length; i++) {
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
          if (recvrs[i] != null) {
            for (int j=0; j < recvrs[i].length; j++) {
              result+=_getIndentPrefix(indent + 2);
              result+="String_Node_Str";
              if (recvrs[i][j] != null) {
                result+=recvrs[i][j].getClass().getName();
                result+="String_Node_Str";
                result+=recvrs[i][j].getContainer().getFullName();
              }
              result+="String_Node_Str";
            }
          }
          result+=_getIndentPrefix(indent + 1) + "String_Node_Str";
        }
      }
      result+=_getIndentPrefix(indent) + "String_Node_Str";
    }
    if (bracket == 2)     result+="String_Node_Str";
    return result;
  }
  finally {
    workspace().doneReading();
  }
}