code: func NewImageGCManager(runtime container.Runtime, statsProvider StatsProvider, recorder record.EventRecorder, nodeRef *v1.ObjectReference, policy ImageGCPolicy, sandboxImage string) (ImageGCManager, error) {
  	// Validate policy.
  	if policy.HighThresholdPercent < 0 || policy.HighThresholdPercent > 100 {
  		return nil, fmt.Errorf("invalid HighThresholdPercent %d, must be in range [0-100]", policy.HighThresholdPercent)
  	}
  	if policy.LowThresholdPercent < 0 || policy.LowThresholdPercent > 100 {
  		return nil, fmt.Errorf("invalid LowThresholdPercent %d, must be in range [0-100]", policy.LowThresholdPercent)
  	}
  	if policy.LowThresholdPercent > policy.HighThresholdPercent {
  		return nil, fmt.Errorf("LowThresholdPercent %d can not be higher than HighThresholdPercent %d", policy.LowThresholdPercent, policy.HighThresholdPercent)
  	}
  	im := &realImageGCManager{
  		runtime:       runtime,
  		policy:        policy,
  		imageRecords:  make(map[string]*imageRecord),
  		statsProvider: statsProvider,
  		recorder:      recorder,
  		nodeRef:       nodeRef,
  		initialized:   false,
  		sandboxImage:  sandboxImage,
  	}
  
  	return im, nil
  }
docs: // NewImageGCManager instantiates a new ImageGCManager object.