code: func (ts *TrackerStats) UnmarshalJSON(data []byte) (err error) {
  	// Shadow real type for regular unmarshalling
  	type RawTrackerStats TrackerStats
  	tmp := struct {
  		LastAnnounceStartTime int64 `json:"lastAnnounceStartTime"`
  		LastAnnounceTime      int64 `json:"lastAnnounceTime"`
  		LastScrapeStartTime   int64 `json:"lastScrapeStartTime"`
  		LastScrapeTime        int64 `json:"lastScrapeTime"`
  		LastScrapeTimedOut    int64 `json:"lastScrapeTimedOut"`
  		NextAnnounceTime      int64 `json:"nextAnnounceTime"`
  		NextScrapeTime        int64 `json:"nextScrapeTime"`
  		*RawTrackerStats
  	}{
  		RawTrackerStats: (*RawTrackerStats)(ts),
  	}
  	// Unmarshall (with timestamps as number)
  	if err = json.Unmarshal(data, &tmp); err != nil {
  		return
  	}
  	// Convert to real boolean
  	if tmp.LastScrapeTimedOut == 1 {
  		ts.LastScrapeTimedOut = true
  	} else if tmp.LastScrapeTimedOut != 0 {
  		return fmt.Errorf("can't convert 'lastScrapeTimedOut' value '%v' into boolean", tmp.LastScrapeTimedOut)
  	}
  	// Create the real time value from the timestamps
  	ts.LastAnnounceStartTime = time.Unix(tmp.LastAnnounceStartTime, 0)
  	ts.LastAnnounceTime = time.Unix(tmp.LastAnnounceTime, 0)
  	ts.LastScrapeStartTime = time.Unix(tmp.LastScrapeStartTime, 0)
  	ts.LastScrapeTime = time.Unix(tmp.LastScrapeTime, 0)
  	ts.NextAnnounceTime = time.Unix(tmp.NextAnnounceTime, 0)
  	ts.NextScrapeTime = time.Unix(tmp.NextScrapeTime, 0)
  	return
  }
docs: // UnmarshalJSON allows to convert timestamps to golang time.Time values.