code: def Process(self, info, values):
          
          visitor_class_types = {
              opendnp3.ICollectionIndexedBinary: VisitorIndexedBinary,
              opendnp3.ICollectionIndexedDoubleBitBinary: VisitorIndexedDoubleBitBinary,
              opendnp3.ICollectionIndexedCounter: VisitorIndexedCounter,
              opendnp3.ICollectionIndexedFrozenCounter: VisitorIndexedFrozenCounter,
              opendnp3.ICollectionIndexedAnalog: VisitorIndexedAnalog,
              opendnp3.ICollectionIndexedBinaryOutputStatus: VisitorIndexedBinaryOutputStatus,
              opendnp3.ICollectionIndexedAnalogOutputStatus: VisitorIndexedAnalogOutputStatus,
              opendnp3.ICollectionIndexedTimeAndInterval: VisitorIndexedTimeAndInterval
          }
          visitor_class = visitor_class_types[type(values)]
          visitor = visitor_class()
          values.Foreach(visitor)
          for index, value in visitor.index_and_value:
              log_string = 'SOEHandler.Process {0}\theaderIndex={1}\tdata_type={2}\tindex={3}\tvalue={4}'
              _log.debug(log_string.format(info.gv, info.headerIndex, type(values).__name__, index, value))
docs: Process measurement data.
  
          :param info: HeaderInfo
          :param values: A collection of values received from the Outstation (various data types are possible).