code: def _reference_keys(self, reference):
          
          if not isinstance(reference, six.string_types):
              raise TypeError(
                  'When using ~ to reference dynamic attributes ref must be a str. a {0} was provided.'.format(type(reference).__name__)
              )
  
          if '~' in reference:
              reference = reference[1:]
  
              scheme = self._scheme_references.get(reference)
              if not scheme:
                  # TODO: need to create nice error here as well and print pretty message.
                  raise LookupError(
                      "Was unable to find {0} in the scheme references. "
                      "available references {1}".format(reference, ', '.join(self._scheme_references.keys()))
                  )
  
              return scheme['keys']
          else:
              raise AttributeError('references must start with ~. Please update {0} and retry.'.format(reference))
docs: Returns a list of all of keys for a given reference.
  
          :param reference: a :string:
          :rtype: A :list: of reference keys.