@Override
	public String transalte(BaseSMVSourceFormatter formatter) {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();
		sb.append("MODULE ").append(formatter.format(this.getId(), false, 0)).append("(");
		boolean flag = true;
		List<BreezeNode> lbn = this.getAllNode();
		for (BreezeNode bn : lbn) {
			if (!flag)
				sb.append(", ");
			else flag = false;
			sb.append(bn.getSmvParameterName());
		}
		sb.append(")\n");

		Map<String, BreezePort> allTargetPorts = new HashMap<String, BreezePort>();
		for (String key : this.connectionMap.keySet()) {
			List<Connection> conns = this.connectionMap.get(key);
			for (Connection conn : conns)
				allTargetPorts.put(conn.targetPort.getId(), conn.targetPort);
		}

		// assign
		sb.append("\tASSIGN\n");

		for (String key : this.connectionMap.keySet()) {
			for (Connection conn : this.connectionMap.get(key)) {
				BreezePort port = conn.sourcePort;
				String varId = port.getSmvInName(conn.targetPort.getId());
				Integer count = (Integer) port.getProperty(varId);
				if (count == null || count == 0)
					continue;

				String var = port.getOwner().getSmvParameterName() + "." + varId;
				String val = conn.targetNode.getSmvParameterName() + "." + conn.targetPort.getSmvOutName();
				sb.append(templateExpr.replaceAll("\\$\\{var\\}", var).replaceAll("\\$\\{value\\}", val));
			}
		}
		return sb.toString();
	}