code: func (p *DefaultPolicy) UnmarshalJSON(data []byte) error {
  	var pol = struct {
  		ID          string     `json:"id" gorethink:"id"`
  		Description string     `json:"description" gorethink:"description"`
  		Subjects    []string   `json:"subjects" gorethink:"subjects"`
  		Effect      string     `json:"effect" gorethink:"effect"`
  		Resources   []string   `json:"resources" gorethink:"resources"`
  		Actions     []string   `json:"actions" gorethink:"actions"`
  		Conditions  Conditions `json:"conditions" gorethink:"conditions"`
  		Meta        []byte     `json:"meta" gorethink:"meta"`
  	}{
  		Conditions: Conditions{},
  	}
  
  	if err := json.Unmarshal(data, &pol); err != nil {
  		return errors.WithStack(err)
  	}
  
  	*p = *&DefaultPolicy{
  		ID:          pol.ID,
  		Description: pol.Description,
  		Subjects:    pol.Subjects,
  		Effect:      pol.Effect,
  		Resources:   pol.Resources,
  		Actions:     pol.Actions,
  		Conditions:  pol.Conditions,
  		Meta:        pol.Meta,
  	}
  	return nil
  }
docs: // UnmarshalJSON overwrite own policy with values of the given in policy in JSON format