'Construct new ``CRootOf`` object from raw data.'

@classmethod
def _new(cls, poly, index):

    obj = Expr.__new__(cls)
    obj.poly = PurePoly(poly)
    obj.index = index
    try:
        _reals_cache[obj.poly] = _reals_cache[poly]
        _complexes_cache[obj.poly] = _complexes_cache[poly]
    except KeyError:
        pass
    return obj
