@staticmethod
def _invoke(thing, caller=None):
    """
        invoke method on object but return object instead of call result if the
        call returns None

        @param thing: some thing
        @param caller: a callable (default: None)
        """
    results = caller(thing)
    return thing if results is None else results
