def get instance_reference, keys = nil
      if keys
        if self.class == Wbem::WsmanClient
          uri = Openwsman.epr_uri_for "", instance_reference
          instance_reference = Openwsman::EndPointReference.new(uri, nil, keys)
        elsif self.class == Wbem::CimxmlClient
          namespace = keys.delete(:namespace) || "root/cimv2"
          instance_reference = Sfcc::Cim::ObjectPath.new(namespace, instance_reference)
          keys.each do |k,v|
            instance_reference.add_key k, v
          end
        end
      end
      puts "@client.get #{instance_reference.class}..." if Wbem.debug
      case instance_reference
      when Openwsman::EndPointReference
        get_by_epr instance_reference
      when Sfcc::Cim::ObjectPath
        get_by_objectpath instance_reference
      when String
        if self.class == WsmanClient
          get_by_epr Openwsman::EndPointReference.new(instance_reference)
        elsif self.class == CimxmlClient
          get_by_objectpath CimxmlClient.parse_object_path(instance_reference)
        else
          raise "Unsupported Wbem::get #{instance_reference.class} for #{self.class}"
        end
      else
        raise "Unsupported Wbem::get #{instance_reference.class}"
      end
    end
def get instance_reference, keys = nil
      if keys
        if self.class == Wbem::WsmanClient
          uri = Openwsman.epr_uri_for "", instance_reference
          instance_reference = Openwsman::EndPointReference.new(uri, nil, keys)
        elsif self.class == Wbem::CimxmlClient
          namespace = keys.delete(:namespace) || "root/cimv2"
          instance_reference = Sfcc::Cim::ObjectPath.new(namespace, instance_reference)
          keys.each do |k,v|
            instance_reference.add_key k, v
          end
        end
      end
      puts "@client.get #{instance_reference.class}..." if Wbem.debug
      case instance_reference
      when Openwsman::EndPointReference
        get_by_epr instance_reference
      when Sfcc::Cim::ObjectPath
        get_by_objectpath instance_reference
      when String
        if self.class == WsmanClient
          get_by_epr Openwsman::EndPointReference.new(instance_reference)
        elsif self.class == CimxmlClient
          get_by_objectpath CimxmlClient.parse_object_path(instance_reference)
        else
          raise "Unsupported Wbem::get #{instance_reference.class} for #{self.class}"
        end
      else
        raise "Unsupported Wbem::get #{instance_reference.class}"
      end
    end
get instance by reference

 call-seq
   get Openwsman::EndPointReference -> Wbem::Instance
   get Sfcc::Cim::ObjectPath -> Wbem::Instance
   get EndPointReference-as-String -> Wbem::Instance
   get ObjectPath-as-String -> Wbem::Instance
   get "ClassName", "key" => "value", :namespace => "root/interop"