protected function triggerFakerOnAttributes($attributes)
    {
        // If $attributes is a closure, then we need to call it
        // and fetch the returned array. This way, we ensure
        // that we always fetch unique faked values.

        if ($attributes instanceof Closure) {
            $attributes = $attributes($this->faker());
        }

        // To ensure that we don't use the same Faker value for every
        // single factory of the same name, all Faker properties are
        // wrapped in closures.

        // So we can now filter through our attributes and call these
        // closures, which will generate the proper Faker values.

        return array_map([$this, 'runFaker'], $attributes);
    }