':type closures: list of CaperClosure'

def run(self, closures):

    self.setup(closures)
    self.capture_closure('usenet', regex='usenet', single=False).capture_closure('part', regex='part', single=True).until_result(tag='part').until_failure().execute()
    (is_town_release, has_part) = self.get_state()
    if (not is_town_release):
        self.capture_release_name()
    if ((not is_town_release) and (not has_part)):
        self.capture_fragment('part', regex='part', single=True).until_closure(node__re='usenet').until_success().execute()
    self.capture_closure('usenet', regex='usenet', single=False).capture_closure('detail', regex='detail', single=False).execute()
    self.result.build()
    return self.result
