code: @Override
      protected Iterable<Source> output() {
  
          if (currentInput == null && currentOutput == null)
              return null;
  
          // In case a transformation is already in progress, return the existing output iterable
          if (currentOutput != null)
              return currentOutput;
  
          // No transformation is in progress -> create new output and forget the input
          currentOutput = new FilterIterable<Source>(currentInput.iterator());
          currentInput = null;
  
          return currentOutput;
      }
docs: {@inheritDoc}