@classmethod
def cast(cls, value_type, value, visitor=None, **kwargs):
    """Cast is for visitors where you are visiting some random data
        structure (perhaps returned by a previous ``VisitorPattern.visit()``
        operation), and you want to convert back to the value type.

        This function also takes positional arguments:

            ``value_type=``\\ *RecordType*
                The type to cast to.

            ``value=``\\ *object*

            ``visitor=``\\ *Visitor.Options*
                Specifies the visitor options, which customizes the descent
                and reduction.
        """
    if visitor is None:
        visitor = cls.Visitor(cls.grok, cls.reverse, cls.collect, cls.
            produce, **kwargs)
    return cls.map(visitor, value, value_type)
