docs: protected void end() {
          if ( subSolver != null && subSolver.subSolver == null ) {
              if ( type == OperatorDescrType.AND ) {
                  if ( possibilityLists.isEmpty() ) {
                      possibilityLists.add( new HashSet<VerifierComponent>() );
                  }
  
                  List<Set<VerifierComponent>> newPossibilities = new ArrayList<Set<VerifierComponent>>();
  
                  List<Set<VerifierComponent>> sets = subSolver.getPossibilityLists();
                  for ( Set<VerifierComponent> possibilityList : possibilityLists ) {
  
                      for ( Set<VerifierComponent> set : sets ) {
                          Set<VerifierComponent> newSet = new HashSet<VerifierComponent>();
                          newSet.addAll( possibilityList );
                          newSet.addAll( set );
                          newPossibilities.add( newSet );
                      }
                  }
                  possibilityLists = newPossibilities;
  
              } else if ( type == OperatorDescrType.OR ) {
  
                  possibilityLists.addAll( subSolver.getPossibilityLists() );
  
              }
  
              subSolver = null;
  
          } else if ( subSolver != null && subSolver.subSolver != null ) {
  
              subSolver.end();
          }
  
      }