<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def bracket_complete(self):
 """Returns a function call signature for completion whenever a bracket '(' is pressed."""

        #The important thing to keep track of here is that '(' can be
        #pushed in the following places:
        # - in a subroutine/function definition
        # - when calling a function or subroutine, this includes calls within
        #   the argument list of a function, e.g. function(a, fnb(c,d), e)
        # - when specifying the dimensions of an array for element selection
        # - inside of if/do/while blocks.

        #If there is a \s immediately preceding the bracket, then short_symbol
        #will be null string and we are most likely doing arithmetic of some
        #sort or a block statement.
        if self.context.short_symbol == "":
            return {}

        line = self.context.current_line.lower()[:self.context.pos[1]-1]
        if "subroutine" in line or "function" in line:
            #We are in the definition of the subroutine or function. They
            #are choosing the parameter names so we don't offer any suggestions.
            return {}
            
        #Sometimes people do if() with the condition immediately after
        #the keyword, this regex will catch that.
        symbol = self.context.short_symbol.lower()
        if symbol in ["if", "do", "while", "elseif", "case", "associate"]:
            return {}
        
        #All that should be left now are dimensions and legitimate function
        #calls.
        fullsymbol = self.context.short_full_symbol.lower()
        return self._bracket_complete_sig(symbol, fullsymbol)