Return the parameters necessary to check type boundaries.

        Args:
            args: A tuple with one or two parameters: A type to cast the
                value passed, and a predicate function to use for bounds
                checking.

        Returns:
            A tuple with three parameters: a type, a slice, and the predicate
            function. If no type was passed in args, the type defaults to Any.

def _get_args(cls, args):
        # type: (tuple) -> Tuple[type, slice, Callable]
        """Return the parameters necessary to check type boundaries.

        Args:
            args: A tuple with one or two parameters: A type to cast the
                value passed, and a predicate function to use for bounds
                checking.

        Returns:
            A tuple with three parameters: a type, a slice, and the predicate
            function. If no type was passed in args, the type defaults to Any.
        """
        if isinstance(args, tuple):
            if not len(args) == 2:
                raise TypeError(
                    "{}[...] takes one or two argument.".format(cls.__name__)
                )
            return super(_ValidationBoundedMeta, cls)._get_args(
                (args[0], None, args[1])
            )
        return super(_ValidationBoundedMeta, cls)._get_args((Any, None, args))