code: def parse_signature(cls, signature):
          
          assert cls.signature_pattern is not None
          pattern = re.compile(cls.signature_pattern, re.VERBOSE)
          match = pattern.match(signature)
          if match:
              groups = match.groupdict()
              arguments = None
              if 'arguments' in groups and groups['arguments'] is not None:
                  arguments = re.split(r'\,\s+', groups['arguments'])
              return DotNetSignature(
                  prefix=groups.get('prefix', None),
                  member=groups.get('member', None),
                  arguments=arguments
              )
          raise ValueError('Could not parse signature: {0}'.format(signature))
docs: Parse signature declartion string
  
          Uses :py:attr:`signature_pattern` to parse out pieces of constraint
          signatures. Pattern should provide the following named groups:
  
              prefix
                  Object prefix, such as a namespace
  
              member
                  Object member name
  
              arguments
                  Declaration arguments, if this is a callable constraint
  
          :param signature: construct signature
          :type signature: string