public function getReferencesForModels($models, $strategy = null, $source = null)
    {
        $references = new Collection;

        if ( ! count($models)) {
            return $references;
        }

        /** @var Model $firstModel */
        if ($models instanceof Collection) {
            $firstModel = $models->first();
        } else {
            $firstModel = head($models);
        }

        $strategy = $this->determineModelReferenceStrategy($firstModel, $strategy);

        if ( ! $source) {
            $source = $this->determineModelReferenceSource($firstModel);
        }

        foreach ($models as $model) {

            if ( ! $strategy) {
                $references->put($model->getKey(), $this->getReferenceFallback($model));
                continue;
            }

            $references->put($model->getKey(), $strategy->render($model, $source));
        }

        return $references;
    }