code: func (r *AWSEFSFileSystem) UnmarshalJSON(b []byte) error {
  	type Properties AWSEFSFileSystem
  	res := &struct {
  		Type       string
  		Properties *Properties
  		DependsOn  []string
  		Metadata   map[string]interface{}
  	}{}
  
  	dec := json.NewDecoder(bytes.NewReader(b))
  	dec.DisallowUnknownFields() // Force error if unknown field is found
  
  	if err := dec.Decode(&res); err != nil {
  		fmt.Printf("ERROR: %s\n", err)
  		return err
  	}
  
  	// If the resource has no Properties set, it could be nil
  	if res.Properties != nil {
  		*r = AWSEFSFileSystem(*res.Properties)
  	}
  	if res.DependsOn != nil {
  		r._dependsOn = res.DependsOn
  	}
  	if res.Metadata != nil {
  		r._metadata = res.Metadata
  	}
  
  	return nil
  }
docs: // UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer
  // AWS CloudFormation resource object, and just keeps the 'Properties' field.