code: func NewGenericScheduler(
  	cache internalcache.Cache,
  	podQueue internalqueue.SchedulingQueue,
  	predicates map[string]predicates.FitPredicate,
  	predicateMetaProducer predicates.PredicateMetadataProducer,
  	prioritizers []priorities.PriorityConfig,
  	priorityMetaProducer priorities.PriorityMetadataProducer,
  	framework framework.Framework,
  	extenders []algorithm.SchedulerExtender,
  	volumeBinder *volumebinder.VolumeBinder,
  	pvcLister corelisters.PersistentVolumeClaimLister,
  	pdbLister algorithm.PDBLister,
  	alwaysCheckAllPredicates bool,
  	disablePreemption bool,
  	percentageOfNodesToScore int32,
  ) ScheduleAlgorithm {
  	return &genericScheduler{
  		cache:                    cache,
  		schedulingQueue:          podQueue,
  		predicates:               predicates,
  		predicateMetaProducer:    predicateMetaProducer,
  		prioritizers:             prioritizers,
  		priorityMetaProducer:     priorityMetaProducer,
  		framework:                framework,
  		extenders:                extenders,
  		nodeInfoSnapshot:         framework.NodeInfoSnapshot(),
  		volumeBinder:             volumeBinder,
  		pvcLister:                pvcLister,
  		pdbLister:                pdbLister,
  		alwaysCheckAllPredicates: alwaysCheckAllPredicates,
  		disablePreemption:        disablePreemption,
  		percentageOfNodesToScore: percentageOfNodesToScore,
  	}
  }
docs: // NewGenericScheduler creates a genericScheduler object.