<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_objects_apk(self, filename=None, digest=None):
 """ Returns APK, DalvikVMFormat and Analysis of a specified APK. You must specify either `filename` or `digest`. It is possible to use both, but in this case only `digest` is used. example:: s = Session() digest = s.add("some.apk") a, d, dx = s.get_objects_apk(digest=digest) example:: s = Session() filename = "some.apk" digest = s.add(filename) a, d, dx = s.get_objects_apk(filename=filename) :param filename: the filename of the APK file, only used of digest is None :param digest: the sha256 hash, as returned by :meth:`add` for the APK :returns: a tuple of (APK, [DalvikVMFormat], Analysis) """

        if not filename and not digest:
            raise ValueError("Must give at least filename or digest!")

        if digest is None:
            digests = self.analyzed_files.get(filename)
            # Negate to reduce tree
            if not digests:
                return None, None, None
            digest = digests[0]

        a = self.analyzed_apk[digest][0]
        dx = self.analyzed_vms[digest]
        return a, dx.vms, dx