code: def cast(cls, value_type, value, visitor=None, **kwargs):
          
          if visitor is None:
              visitor = cls.Visitor(
                  cls.grok, cls.reverse, cls.collect, cls.produce,
                  **kwargs)
  
          return cls.map(visitor, value, value_type)
docs: 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.