code: func (term *Term) UnmarshalJSON(bs []byte) error {
  	v := map[string]interface{}{}
  	if err := util.UnmarshalJSON(bs, &v); err != nil {
  		return err
  	}
  	val, err := unmarshalValue(v)
  	if err != nil {
  		return err
  	}
  	term.Value = val
  	return nil
  }
docs: // UnmarshalJSON parses the byte array and stores the result in term.
  // Specialized unmarshalling is required to handle Value.