An immutable object's dir function should list not only its attributes, but also its un-cached
    lazy values.

def _imm_dir(self):
    '''
    An immutable object's dir function should list not only its attributes, but also its un-cached
    lazy values.
    '''
    dir0 = set(dir(self.__class__))
    dir0.update(self.__dict__.keys())
    dir0.update(six.iterkeys(_imm_value_data(self)))
    return sorted(list(dir0))