anchor.diff:    }
   
     @ApiMethod(method: 'GET', path: 'byAnalysis/{product}/{model}/{analysis}')
  -  Future<List<TimeseriesAssembly>> byAnalysis(String product, String model, String analysis, {String locations, String elements, String validFrom, String validTo}) {
  +  Future<List<TimeseriesAssembly>> byAnalysis(
  +      String product, String model, String analysis,
  +      {String locations, String elements, String validFrom, String validTo}) {
       try {
         if ((locations == null) || (elements == null)) {
  -        throw new FormatException("locations and elements are required query paramters");
  +        throw new FormatException(
  +            "locations and elements are required query paramters");
         }
         product = Uri.decodeComponent(product);
         model = Uri.decodeComponent(model);
         analysis = Uri.decodeComponent(analysis);
   
  -      List<TimeseriesNode> nodes = _extractNodes(locations, elements, product, model);
  +      List<TimeseriesNode> nodes =
  +      _extractNodes(locations, elements, product, model);
   
         DateTime analysisAt = _parseDateTime(analysis);
   
  
positive.code: //http://localhost:9090/api/epd/v1/byLatest/City, Town & Spot Forecasts/PDF-PROFOUND/20150215T0300Z/20150215T0600Z?locations=01492.INTL,03266.INTL&elements=TTTTT
  
  //http://localhost:9090/api/epd/v1/byLatest/City,%20Town%20&%20Spot%20Forecasts/PDF-PROFOUND/20150516T0700Z/20150520T0700Z?locations=01492.INTL,03266.INTL&elements=TTTTT
  
  
  final Logger _log = new Logger('epd_api');
  
  
negative.code:     try {
        return DateTime.parse(time);
      } catch (a) {
        throw new FormatException(
            "Time value of '${time}' is invalid, must be ISO time format");
      }
    }
  }
  