private void addToDrawn(PortInst pi) { assert stack.isEmpty(); stack.add(pi); while (!stack.isEmpty()) { pi = stack.remove(stack.size() - 1); PortProtoId ppId = pi.portId; int numPorts = getNumPorts(ppId.getParentId()); if (numPorts == 1 || ppId instanceof ExportId) { addToDrawn1(pi); continue; } PrimitivePort pp = techPool.getPrimitivePort((PrimitivePortId) ppId); PrimitiveNode pn = pp.getParent(); int topology = pp.getTopology(); for (int i = 0; i < numPorts; i++) { PrimitivePort pp2 = pn.getPort(i); if (pp2.getTopology() != topology) { continue; } addToDrawn1(new PortInst(pi.n.nodeId, pp2.getId())); } } }