code: private List<TestCaseDef> getFailureCases( FunctionInputDef inputDef, VarTupleSet failureTuples, VarTupleSet validTuples)
      {
      logger_.debug( "{}: Creating failure test cases", inputDef);
      
      List<TestCaseDef> failureCases = new ArrayList<TestCaseDef>();
  
      // For each failure input tuple not yet used in a test case...
      Tuple nextUnused;
      while( (nextUnused = failureTuples.getNextUnused()) != null)
        {
        // Completed bindings for all variables?
        TestCaseDef failureCase = createTestCase( nextUnused, inputDef, validTuples);
        if( failureCase != null)
          {
          // Yes, add new failure test case.
          failureTuples.used( nextUnused);
          failureCases.add( failureCase);
          }
        }
  
      logger_.info( "{}: Created {} failure test cases", inputDef, failureCases.size());
      return failureCases;
      }
docs: Returns a set of failure {@link TestCaseDef test case definitions} for the given function input definition.