Returns the module name from the code parser that this parameter/variable
        needs to compile successfully.

def dependency(self):
        """Returns the module name from the code parser that this parameter/variable
        needs to compile successfully.
        """
        from re import match
        if self._kind_module is not None:
            #We have already done this search at some point.
            return self._kind_module.name

        if (self.kind is not None and "len=" not in self.kind.lower()
            and not match("\d", self.kind[0])):
            #Find the module that declares this kind as:
            # 1) derived type
            # 2) parameter/member
            #The good news is that in order for the module being unit tested to compile,
            #it must have a 'use' statement for the derived type. We can just search from
            #that module with a tree find. Also, at the end of the day, it will have to
            #be declared as public, in order to be used in other modules.
            found, foundmod = self.module.parent.tree_find(self.kind.lower(),
                                                           self.module,
                                                           "publics")
            self._kind_module = foundmod #At worst this will be None again
            if found is not None:
                return foundmod.name