/**
  * Creates a new key based on the view definition and a single market data availability provider.
  *
  * @param viewDefinition the view definition, not null
  * @param marketDataProvider the market data availability provider, not null
  * @return the cache key, not null
  */
 public static ViewExecutionCacheKey of(
     final ViewDefinition viewDefinition,
     final MarketDataAvailabilityProvider marketDataProvider) {
   return new ViewExecutionCacheKey(
       viewDefinition.getUniqueId(),
       new Serializable[] {marketDataProvider.getAvailabilityHintKey()});
 }
 /**
  * Creates a new key based on the view definition and an array of market data availability
  * providers.
  *
  * @param viewDefinition the view definition, not null
  * @param marketDataProviders the market data availability providers, not null and not containing
  *     nulls
  * @return the cache key, not null
  */
 public static ViewExecutionCacheKey of(
     final ViewDefinition viewDefinition,
     final MarketDataAvailabilityProvider[] marketDataProviders) {
   final Serializable[] tokens = new Serializable[marketDataProviders.length];
   for (int i = 0; i < marketDataProviders.length; i++) {
     tokens[i] = marketDataProviders[i].getAvailabilityHintKey();
   }
   return new ViewExecutionCacheKey(viewDefinition.getUniqueId(), tokens);
 }
 /**
  * Creates a new key based on the view definition and an ordered collection of market data
  * availability providers.
  *
  * @param viewDefinition the view definition, not null
  * @param marketDataProviders the market data availability providers, not null and not containing
  *     nulls
  * @return the cache key, not null
  */
 public static ViewExecutionCacheKey of(
     final ViewDefinition viewDefinition,
     final Iterable<MarketDataAvailabilityProvider> marketDataProviders) {
   final Collection<Serializable> tokens = new LinkedList<Serializable>();
   for (MarketDataAvailabilityProvider marketDataProvider : marketDataProviders) {
     tokens.add(marketDataProvider.getAvailabilityHintKey());
   }
   return new ViewExecutionCacheKey(
       viewDefinition.getUniqueId(), tokens.toArray(new Serializable[tokens.size()]));
 }