Extracts from an object existing dictionary with tensors specified by name.
        If there is no such object then new one will be created. Intenally, it appends
        autoflow prefix to the name and saves it as an attribute.

        :param obj: target GPflow object.
        :param name: unique part of autoflow attribute's name.

        :raises: ValueError exception if `name` is not a string.

def get_autoflow(cls, obj, name):
        """
        Extracts from an object existing dictionary with tensors specified by name.
        If there is no such object then new one will be created. Intenally, it appends
        autoflow prefix to the name and saves it as an attribute.

        :param obj: target GPflow object.
        :param name: unique part of autoflow attribute's name.

        :raises: ValueError exception if `name` is not a string.
        """
        if not isinstance(name, str):
            raise ValueError('Name must be string.')
        prefix = cls.__autoflow_prefix__
        autoflow_name = prefix + name
        store = misc.get_attribute(obj, autoflow_name, allow_fail=True, default={})
        if not store:
            setattr(obj, autoflow_name, store)
        return store