<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _fractional_division( cls, divisor, remainder, base, precision=None, method=RoundingMethods.ROUND_DOWN ):
 """ Get the repeating and non-repeating part. :param int divisor: the divisor :param int remainder: the remainder :param int base: the base :param precision: maximum number of fractional digits :type precision: int or NoneType :param method: rounding method :type method: element of RoundignMethods.METHODS :returns: carry-out digit, non_repeating and repeating parts :rtype: tuple of int * list of int * list of int * int :raises BasesValueError: Complexity: O(precision) if precision is not None else O(divisor) """

        # pylint: disable=too-many-arguments
        quotient = []
        remainders = []
        remainder = cls._divide(
           divisor,
           remainder * base,
           quotient,
           remainders,
           base,
           precision
        )

        if remainder == 0:
            return (0, quotient, [], 0)
        if remainder in remainders:
            start = remainders.index(remainder)
            return (0, quotient[:start], quotient[start:], 0)
        return cls._round(
           quotient,
           divisor,
           remainder,
           base,
           method
        )