def _on_after_api_deserialize(self, r, root):
        if root is not None:
            if ( "FTPServer" in root if isinstance(root, dict) else hasattr(root, "FTPServer")):
                ftp = (root["FTPServer"] if "FTPServer" in root else None)
                if ftp is not None:
                    self._ftp_info = FtpInfo(ftp)
        if r is not None:
            if ( "SourceArchive" in r if isinstance(r, dict) else hasattr(r, "SourceArchive")):
                s = (r["SourceArchive"] if "SourceArchive" in r else None)
                if s is not None:
                    id = (s["ID"] if "ID" in s else None)
                    if id is not None:
                        self._source = Archive(self._client, s)
            if ( "SourceDisk" in r if isinstance(r, dict) else hasattr(r, "SourceDisk")):
                s = (r["SourceDisk"] if "SourceDisk" in r else None)
                if s is not None:
                    id = (s["ID"] if "ID" in s else None)
                    if id is not None:
                        self._source = Resource.create_with("Disk", self._client, s)
    
    ## @private
    # @param {any} r
    # @param {bool} withClean
    # @return {void}
dataset/ETHPy150Open sakura-internet/saklient.python/saklient/cloud/resources/archive.py/Archive._on_after_api_deserialize/original