# File lib/rbvmomi/deserialization.rb, line 85
  def traverse_data node, klass
    obj = klass.new nil
    props = obj.props
    children = node.children.select(&:element?)
    n = children.size
    i = 0

    klass.full_props_desc.each do |desc|
      name = desc['name']
      child_type = desc['wsdl_type']

      # Ignore unknown fields
      while child = children[i] and not klass.full_props_set.member? child.name
        i += 1
      end

      if desc['is-array']
        a = []
        while ((child = children[i]) && (child.name == name))
          child = children[i]
          a << deserialize(child, child_type)
          i += 1
        end
        props[name.to_sym] = a
      elsif ((child = children[i]) && (child.name == name))
        props[name.to_sym] = deserialize(child, child_type)
        i += 1
      end
    end

    obj
  end