* @return squarefree factorization algorithm implementation.
*/
@SuppressWarnings("unchecked")
public static <C extends GcdRingElem<C>> SquarefreeAbstract<C> getImplementation(RingFactory<C> fac) {
SquarefreeAbstract/*raw type<C>*/ufd = null;
AlgebraicNumberRing afac = null;
QuotientRing qfac = null;
GenPolynomialRing pfac = null;
Object ofac = fac;
if (ofac instanceof BigInteger) {
ufd = new SquarefreeRingChar0<>(fac);