code: func (c *unstructuredConverter) FromUnstructured(u map[string]interface{}, obj interface{}) error {
  	t := reflect.TypeOf(obj)
  	value := reflect.ValueOf(obj)
  	if t.Kind() != reflect.Ptr || value.IsNil() {
  		return fmt.Errorf("FromUnstructured requires a non-nil pointer to an object, got %v", t)
  	}
  	err := fromUnstructured(reflect.ValueOf(u), value.Elem())
  	if c.mismatchDetection {
  		newObj := reflect.New(t.Elem()).Interface()
  		newErr := fromUnstructuredViaJSON(u, newObj)
  		if (err != nil) != (newErr != nil) {
  			klog.Fatalf("FromUnstructured unexpected error for %v: error: %v", u, err)
  		}
  		if err == nil && !c.comparison.DeepEqual(obj, newObj) {
  			klog.Fatalf("FromUnstructured mismatch\nobj1: %#v\nobj2: %#v", obj, newObj)
  		}
  	}
  	return err
  }
docs: // FromUnstructured converts an object from map[string]interface{} representation into a concrete type.
  // It uses encoding/json/Unmarshaler if object implements it or reflection if not.