code: private boolean mustContinue(BitSet potentialNode) {
          boolean result = true;
          boolean cancel = false;
          BitSet projG1 = projectG1(potentialNode);
          BitSet projG2 = projectG2(potentialNode);
  
          // if we reached the maximum number of
          // search iterations than do not continue
          if (maxIteration != -1 && nbIteration >= maxIteration) {
              return false;
          }
  
          // if constrains may no more be fulfilled then stop.
          if (!isContainedIn(c1, projG1) || !isContainedIn(c2, projG2)) {
              return false;
          }
  
          // check if the solution potential is not included in an already
          // existing solution
          for (Iterator<BitSet> i = solutionList.iterator(); i.hasNext() && !cancel;) {
              BitSet sol = i.next();
  
              // if we want every 'mappings' do not stop
              if (findAllMap && (projG1.equals(projectG1(sol)) || projG2.equals(projectG2(sol)))) {
                  // do nothing
              }
              // if it is not possible to do better than an already existing solution than stop.
              else if (isContainedIn(projG1, projectG1(sol)) || isContainedIn(projG2, projectG2(sol))) {
                  result = false;
                  cancel = true;
              }
          }
  
          return result;
      }
docs: Determine if there are potential solution remaining.
  @param       potentialNode  set of remaining potential nodes
  @return      true if it is worse to continue the search