should only be called internally

def _examine_val(self, k, val):
        'should only be called internally'
        if not isinstance(val, (types.FunctionType, partial)): return val
        vid = id(val)
        if vid in self._memoized:
            return self._memoized[vid]
        elif [] != getargspec_py27like(val)[0]:
            return val
        else:
            val = val()
            object.__setattr__(self, '_memoized', self._memoized.set(vid, val))
            return val