Program: 73305
Project: 73305
Buggy source:
/** 
 * Replace all entities connected to the targetEntity with one RemoteSource or RemoteSink.  Essentially instead of all entities connected to it, RemoteSink or RemoteSource would be used that would redirect all links from those entities to itself and connect them to dynamically added ports derived from the connected entities. This configuration would allow running of sources and sinks disconnected from the actors in between remotely by passing respective input and output via CommunicationToken.
 * @param targetEntity the entity to which actors that arereplaced are connected
 * @param portTypes The map of ports and their resolved types
 * @exception IllegalActionException If the actor cannot be containedby the proposed container.
 * @exception NameDuplicationException If the container already has anactor with this name.
 * @exception CloneNotSupportedException If port cloning is not supported
 */
private void _replaceConnectingEntities(ComponentEntity targetEntity,HashMap<String,Type> portTypes) throws CloneNotSupportedException, IllegalActionException, NameDuplicationException {
  for (  Object attributeObject : targetEntity.attributeList()) {
    Attribute attribute=(Attribute)attributeObject;
    Attribute clonedAttribute=(Attribute)attribute.clone(attribute.workspace());
    clonedAttribute.setContainer(this);
    clonedAttribute.setPersistent(true);
  }
  for (  Object portObject : targetEntity.portList()) {
    if (!(portObject instanceof IOPort)) {
      continue;
    }
    IOPort port=(IOPort)portObject;
    for (    Object relationObject : port.linkedRelationList()) {
      Relation relation=(Relation)relationObject;
      List<Port> linkedPortList=relation.linkedPortList(port);
      IOPort remotePort=null;
      for (      Port connectingPort : linkedPortList) {
        if (connectingPort instanceof IOPort && _isValidConnectingPort((IOPort)connectingPort)) {
          remotePort=(IOPort)port.clone(port.workspace());
          remotePort.setInput(!port.isInput());
          remotePort.setOutput(!port.isOutput());
          remotePort.setPersistent(true);
          remotePort.setContainer(this);
          remotePort.setMultiport(false);
          if (remotePort instanceof TypedIOPort) {
            Type type=portTypes.get(port.getFullName());
            ((TypedIOPort)remotePort).setTypeEquals(type);
            StringAttribute targetPortName=new StringAttribute(remotePort,"String_Node_Str");
            targetPortName.setExpression(port.getFullName());
          }
          break;
        }
      }
      relation.unlinkAll();
      if (remotePort != null) {
        port.link(relation);
        remotePort.link(relation);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Replace all entities connected to the targetEntity with one RemoteSource or RemoteSink.  Essentially instead of all entities connected to it, RemoteSink or RemoteSource would be used that would redirect all links from those entities to itself and connect them to dynamically added ports derived from the connected entities. This configuration would allow running of sources and sinks disconnected from the actors in between remotely by passing respective input and output via CommunicationToken.
 * @param targetEntity the entity to which actors that arereplaced are connected
 * @param portTypes The map of ports and their resolved types
 * @exception IllegalActionException If the actor cannot be containedby the proposed container.
 * @exception NameDuplicationException If the container already has anactor with this name.
 * @exception CloneNotSupportedException If port cloning is not supported
 */
private void _replaceConnectingEntities(ComponentEntity targetEntity,HashMap<String,String> portTypes) throws CloneNotSupportedException, IllegalActionException, NameDuplicationException {
  for (  Object attributeObject : targetEntity.attributeList()) {
    Attribute attribute=(Attribute)attributeObject;
    Attribute clonedAttribute=(Attribute)attribute.clone(attribute.workspace());
    clonedAttribute.setContainer(this);
    clonedAttribute.setPersistent(true);
  }
  for (  Object portObject : targetEntity.portList()) {
    if (!(portObject instanceof IOPort)) {
      continue;
    }
    IOPort port=(IOPort)portObject;
    for (    Object relationObject : port.linkedRelationList()) {
      Relation relation=(Relation)relationObject;
      List<Port> linkedPortList=relation.linkedPortList(port);
      IOPort remotePort=null;
      for (      Port connectingPort : linkedPortList) {
        if (connectingPort instanceof IOPort && _isValidConnectingPort((IOPort)connectingPort)) {
          remotePort=(IOPort)port.clone(port.workspace());
          remotePort.setInput(!port.isInput());
          remotePort.setOutput(!port.isOutput());
          remotePort.setPersistent(true);
          remotePort.setContainer(this);
          remotePort.setMultiport(false);
          if (remotePort instanceof TypedIOPort) {
            Type type=TypeParser.parse(portTypes.get(port.getFullName()));
            ((TypedIOPort)remotePort).setTypeEquals(type);
            StringAttribute targetPortName=new StringAttribute(remotePort,"String_Node_Str");
            targetPortName.setExpression(port.getFullName());
          }
          break;
        }
      }
      relation.unlinkAll();
      if (remotePort != null) {
        port.link(relation);
        remotePort.link(relation);
      }
    }
  }
}