class CryptowatchOHLCsDeserializer extends JsonDeserializer<CryptowatchOHLCs> {

    @Override
    public CryptowatchOHLCs deserialize(JsonParser jsonParser, DeserializationContext ctxt)
        throws IOException {<FILL_FUNCTION_BODY>}
  }

      Map<String, List<CryptowatchOHLC>> cwOHLCs = new HashMap<>();
      ObjectCodec oc = jsonParser.getCodec();
      JsonNode node = oc.readTree(jsonParser);

      Iterator<Map.Entry<String, JsonNode>> tradesResultIterator = node.fields();
      while (tradesResultIterator.hasNext()) {
        Map.Entry<String, JsonNode> entry = tradesResultIterator.next();
        String key = entry.getKey();
        JsonNode value = entry.getValue();

        List<CryptowatchOHLC> ohlcs = new ArrayList<>();
        for (JsonNode jsonSpreadNode : value) {
          long time = jsonSpreadNode.path(0).asLong();
          BigDecimal open = new BigDecimal(jsonSpreadNode.path(1).asText());
          BigDecimal high = new BigDecimal(jsonSpreadNode.path(2).asText());
          BigDecimal low = new BigDecimal(jsonSpreadNode.path(3).asText());
          BigDecimal close = new BigDecimal(jsonSpreadNode.path(4).asText());
          BigDecimal volume = new BigDecimal(jsonSpreadNode.path(5).asText());
          BigDecimal vwap = new BigDecimal(jsonSpreadNode.path(6).asText());
          long count = jsonSpreadNode.path(7).asLong();
          ohlcs.add(new CryptowatchOHLC(time, open, high, low, close, vwap, volume, count));
        }
        cwOHLCs.put(key, ohlcs);
      }
      return new CryptowatchOHLCs(cwOHLCs);
    
<no_super_class>