'Constructor.  See class doc string.'

def __init__(self, stmt='pass', setup='pass', timer=default_timer):

    self.timer = timer
    ns = {}
    if isinstance(stmt, basestring):
        stmt = reindent(stmt, 8)
        if isinstance(setup, basestring):
            setup = reindent(setup, 4)
            src = (template % {'stmt': stmt, 'setup': setup})
        elif hasattr(setup, '__call__'):
            src = (template % {'stmt': stmt, 'setup': '_setup()'})
            ns['_setup'] = setup
        else:
            raise ValueError('setup    is    neither    a    string    nor    callable')
        self.src = src
        code = compile(src, dummy_src_name, 'exec')
        exec code in globals(), ns
        self.inner = ns['inner']
    elif hasattr(stmt, '__call__'):
        self.src = None
        if isinstance(setup, basestring):
            _setup = setup
            def setup():
                exec _setup in globals(), ns
        elif (not hasattr(setup, '__call__')):
            raise ValueError('setup    is    neither    a    string    nor    callable')
        self.inner = _template_func(setup, stmt)
    else:
        raise ValueError('stmt    is    neither    a    string    nor    callable')
    return
