protected void encodeMarketDataAliases( final FudgeSerializer serializer, final MutableFudgeMsg msg, final Map<ValueSpecification, Collection<ValueSpecification>> marketDataEntries) { final MutableFudgeMsg msgRequirements = msg.addSubMessage(MARKET_DATA_REQUIREMENTS_FIELD, null); final MutableFudgeMsg msgAliases = msg.addSubMessage(MARKET_DATA_ALIASES_FIELD, null); for (final Map.Entry<ValueSpecification, Collection<ValueSpecification>> requirement : marketDataEntries.entrySet()) { final ValueSpecification marketData = requirement.getKey(); serializer.addToMessage(msgRequirements, null, null, marketData); if (requirement.getValue().size() == 1) { final ValueSpecification alias = requirement.getValue().iterator().next(); if (alias.equals(marketData)) { msgAliases.add(null, null, IndicatorType.INSTANCE); } else { serializer.addToMessage(msgAliases, null, null, alias); } } else { final MutableFudgeMsg aliases = msgAliases.addSubMessage(null, null); aliases.add(null, 0, "list"); for (ValueSpecification alias : requirement.getValue()) { if (alias.equals(marketData)) { msgAliases.add(null, null, IndicatorType.INSTANCE); } else { serializer.addToMessage(aliases, null, null, alias); } } } } }