@Override
 public DistinctMarketDataSelector findMatchingSelector(
     ValueSpecification valueSpecification,
     String calculationConfigurationName,
     SelectorResolver resolver) {
   if (_calcConfigNames != null && !_calcConfigNames.contains(calculationConfigurationName)) {
     return null;
   }
   if (!s_compatibleVRNames.contains(valueSpecification.getValueName())) {
     return null;
   }
   VolatilitySurfaceKey key = createKey(valueSpecification);
   if (!contains(_names, key.getName())) {
     return null;
   }
   if (_nameMatchPattern != null
       && !_nameMatchPattern.getPattern().matcher(key.getName()).matches()) {
     return null;
   }
   if (_nameLikePattern != null
       && !_nameLikePattern.getPattern().matcher(key.getName()).matches()) {
     return null;
   }
   if (!contains(_instrumentTypes, key.getInstrumentType())) {
     return null;
   }
   if (!contains(_quoteTypes, key.getQuoteType())) {
     return null;
   }
   if (!contains(_quoteUnits, key.getQuoteUnits())) {
     return null;
   }
   return this;
 }