<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_sig(self, symbol, fullsymbol):
 """Returns the call signature and docstring for the executable immediately preceding a bracket '(' that was typed."""

        if symbol != fullsymbol:
            #We have a sym%sym%... chain and the completion just needs to
            #be the signature of the member method.
            target, targmod = self._get_chain_parent_symbol(symbol, fullsymbol)

            if symbol in target.executables:
                child = target.executables[symbol]
                return self._compile_signature(child.target, child.name)
            elif symbol in target.members:
                #We are dealing with a dimension request on an array that
                #is a member of the type.
                child = target.members[symbol]
                return self._bracket_dim_suggest(child)
            else:                
                return {}
        else:
            #We must be dealing with a regular executable or builtin fxn
            #or a regular variable dimension.
            iexec = self._bracket_exact_exec(symbol)
            if iexec is not None:
                #It is indeed a function we are completing for.
                return self._compile_signature(iexec, iexec.name)
            else:
                #We need to look at local and global variables to find the
                #variable declaration and dimensionality.
                ivar = self._bracket_exact_var(symbol)
                return self._bracket_dim_suggest(ivar)