<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_used_entities(self,use_specs):
 """ Returns the entities which are imported by a use statement. These are contained in dicts. """

        if len(use_specs.strip()) == 0:
            return (self.pub_procs, self.pub_absints, self.pub_types, self.pub_vars)
        only = bool(self.ONLY_RE.match(use_specs))
        use_specs = self.ONLY_RE.sub('',use_specs)
        ulist = self.SPLIT_RE.split(use_specs)
        ulist[-1] = ulist[-1].strip()
        uspecs = {}
        for item in ulist:
            match = self.RENAME_RE.search(item)
            if match:
                uspecs[match.group(1).lower()] = match.group(2)
            else:
                uspecs[item.lower()] = item
        ret_procs = {}
        ret_absints = {}
        ret_types = {}
        ret_vars = {}
        for name, obj in self.pub_procs.items():
            name = name.lower()
            if only:
                if name in uspecs:
                    ret_procs[name] = obj
            else:
                ret_procs[name] = obj
        for name, obj in self.pub_absints.items():
            name = name.lower()
            if only:
                if name in uspecs:
                    ret_absints[name] = obj
            else:
                ret_absints[name] = obj
        for name, obj in self.pub_types.items():
            name = name.lower()
            if only:
                if name in uspecs:
                    ret_types[name] = obj
            else:
                ret_types[name] = obj
        for name, obj in self.pub_vars.items():
            name = name.lower()
            if only:
                if name in uspecs:
                    ret_vars[name] = obj
            else:
                ret_vars[name] = obj
        return (ret_procs,ret_absints,ret_types,ret_vars)