code: def dotted_completion(cls, line, sorted_keys, compositor_defs):
          
          completion_key, suggestions = None, []
          tokens = [t for t in reversed(line.replace('.', ' ').split())]
          for i, token in enumerate(tokens):
              key_checks =[]
              if i >= 0:  # Undotted key
                  key_checks.append(tokens[i])
              if i >= 1:  # Single dotted key
                  key_checks.append('.'.join([key_checks[-1], tokens[i-1]]))
              if i >= 2:  # Double dotted key
                  key_checks.append('.'.join([key_checks[-1], tokens[i-2]]))
              # Check for longest potential dotted match first
              for key in reversed(key_checks):
                  if key in sorted_keys:
                      completion_key = key
                      depth = completion_key.count('.')
                      suggestions = [k.split('.')[depth+1] for k in sorted_keys
                                     if k.startswith(completion_key+'.')]
                      return completion_key, suggestions
              # Attempting to match compositor definitions
              if token in compositor_defs:
                  completion_key = compositor_defs[token]
                  break
          return completion_key, suggestions
docs: Supply the appropriate key in Store.options and supply
          suggestions for further completion.