public static function from($elements, Iterators\IIteratorScheme $scheme = null, Traversable $source = null)
{
if ($source !== null && !$source instanceof Collection) {
throw new PinqException('Cannot construct %s: expecting source to be type %s or null, %s given', __CLASS__, __CLASS__, Utilities::getTypeOrClass($source));
}
return new static($elements, $scheme, $source);
}