@classmethod
def get_or_create(cls, text, background, weight):
    """ Return an instance matching the given text/background/weight.
            
            Any such instance found in the cache will be summarily returned;
            otherwise, a new instance is created and ensconced in the cache
            before finally ending up as the return itself.
        """
    try:
        out = cls.instance_for(text, background, weight)
    except KeyError:
        out = super().__new__(cls, text, background, weight)
        cls.instances[text, background, weight] = out
    return out
