def next(self): # will raise StopIteration if no (more) facts or fallback
        uncoveredAspectFacts = self.hyperspaceBindings.aspectBoundFacts
        if self.yieldedFact is not None and self.hyperspaceBindings.aggregationNode is None:
            for aspect, priorFact in self.evaluationContributedUncoveredAspects.items():
                if priorFact == "none":
                    del uncoveredAspectFacts[aspect]
                else:
                    uncoveredAspectFacts[aspect] = priorFact
            self.evaluationContributedUncoveredAspects.clear()
        try:
            if self.isWithRestrictionNode:
                self.yieldedFactsPartition = next(self.factIter)
                for self.yieldedFact in self.yieldedFactsPartition:
                    break
            else:
                self.yieldedFact = next(self.factIter)
            self.evaluationContributedUncoveredAspects = {}
            if not self.isValuesIteration:
                for aspect in self.unQualifiedAspects:  # covered aspects may not be defined e.g., test 12062 v11, undefined aspect is a complemented aspect
                    if uncoveredAspectFacts.get(aspect) is None:
                        self.evaluationContributedUncoveredAspects[aspect] = uncoveredAspectFacts.get(aspect,"none")
                        uncoveredAspectFacts[aspect] = None if aspect in self.axesAspects else self.yieldedFact
            if self.sCtx.formulaOptions.traceVariableFiltersResult:
                self.sCtx.modelXbrl.info("sphinx:trace",
                     _("Hyperspace %(variable)s: bound value %(result)s"), 
                     sourceFileLine=self.node.sourceFileLine, variable=str(self.node), result=str(self.yieldedFact))
        except __HOLE__:
            self.yieldedFact = None
            if self.isWithRestrictionNode:
                self.yieldedFactsPartition = []
            if self.fallback and not self.fallenBack:
                self.fallenBack = True
                if self.sCtx.formulaOptions.traceVariableExpressionResult:
                    self.sCtx.modelXbrl.info("sphinx:trace",
                         _("Hyperspace %(variable)s: fallbackValue result %(result)s"), 
                         sourceFileLine=self.node.sourceFileLine, variable=str(self.node), result=0)
            else:
                raise StopIteration
dataset/ETHPy150Open Arelle/Arelle/arelle/plugin/sphinx/SphinxContext.py/HyperspaceBinding.next