code: func (f *FindInMapFunc) UnmarshalJSON(buf []byte) error {
  	v := struct {
  		FnFindInMap [3]json.RawMessage `json:"Fn::FindInMap"`
  	}{}
  	if err := json.Unmarshal(buf, &v); err != nil {
  		return err
  	}
  	if err := json.Unmarshal(v.FnFindInMap[0], &f.MapName); err != nil {
  		return err
  	}
  	if err := json.Unmarshal(v.FnFindInMap[1], &f.TopLevelKey); err != nil {
  		return err
  	}
  	if err := json.Unmarshal(v.FnFindInMap[2], &f.SecondLevelKey); err != nil {
  		return err
  	}
  
  	return nil
  }
docs: // UnmarshalJSON sets the object from the provided JSON representation