def preload(self, name, properties=None):
        """Pre-loads the requested properties for each object in the "name"
        attribute.

        :param name: The name of the attribute containing the list to
        preload.
        :type name: str
        :param properties: The properties to preload on the objects or the
        string all to preload all properties.
        :type properties: list or the string "all"
        
        """
        if properties is None:
            raise ValueError("You must specify some properties to preload. To"
                             " preload all properties use the string \"all\".")
        # Don't do anything if the attribute contains an empty list
        if not getattr(self, name):
            return

        mo_refs = []
        # Iterate over each item and collect the mo_ref
        for item in getattr(self, name):
            # Make sure the items are ManagedObjectReference's
            if isinstance(item, ManagedObject) is False:
                raise ValueError("Only ManagedObject's can be pre-loaded.")

            mo_refs.append(item._mo_ref)
            
        # Send a single query to the server which gets views
        views = self._client.get_views(mo_refs, properties)

        # Populate the inst.attr item with the retrieved object/properties
        self._cache[name] = (views, time.time())
Pre-loads the requested properties for each object in the "name"
        attribute.

        :param name: The name of the attribute containing the list to
        preload.
        :type name: str
        :param properties: The properties to preload on the objects or the
        string all to preload all properties.
        :type properties: list or the string "all"