class YoBitPairDeserializer extends JsonDeserializer<YoBitPair> {

    private static BigDecimal getNumberIfPresent(JsonNode numberNode) {

      final String numberString = numberNode.asText();
      return numberString.isEmpty() ? null : new BigDecimal(numberString);
    }

    public static YoBitPair deserializeFromNode(JsonNode tickerNode) {<FILL_FUNCTION_BODY>}

    @Override
    public YoBitPair deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

      final ObjectCodec oc = jp.getCodec();
      final JsonNode tickerNode = oc.readTree(jp);

      return deserializeFromNode(tickerNode);
    }
  }


      final Integer decimal_places = tickerNode.path("decimal_places").asInt();
      final BigDecimal min_price = getNumberIfPresent(tickerNode.path("min_price"));
      final BigDecimal max_price = getNumberIfPresent(tickerNode.path("max_price"));
      final BigDecimal min_amount = getNumberIfPresent(tickerNode.path("min_amount"));
      final BigDecimal min_total = getNumberIfPresent(tickerNode.path("min_total"));
      final Integer hidden = tickerNode.path("hidden").asInt();
      final BigDecimal fee = getNumberIfPresent(tickerNode.path("fee"));
      final BigDecimal fee_buyer = getNumberIfPresent(tickerNode.path("fee_buyer"));
      final BigDecimal fee_seller = getNumberIfPresent(tickerNode.path("fee_seller"));

      return new YoBitPair(
          decimal_places,
          min_price,
          max_price,
          min_amount,
          min_total,
          hidden,
          fee,
          fee_buyer,
          fee_seller);
    
<no_super_class>