code: public void putNext(Tuple t) throws IOException
      {
          /*
          We support two cases for output:
          First, the original output:
              (key, (name, value), (name,value), {(name,value)}) (tuples or bag is optional)
          For supers, we only accept the original output.
          */
  
          if (t.size() < 1)
          {
              // simply nothing here, we can't even delete without a key
              logger.warn("Empty output skipped, filter empty tuples to suppress this warning");
              return;
          }
          ByteBuffer key = objToBB(t.get(0));
          if (t.getType(1) == DataType.TUPLE)
              writeColumnsFromTuple(key, t, 1);
          else if (t.getType(1) == DataType.BAG)
          {
              if (t.size() > 2)
                  throw new IOException("No arguments allowed after bag");
              writeColumnsFromBag(key, (DataBag) t.get(1));
          }
          else
              throw new IOException("Second argument in output must be a tuple or bag");
      }
docs: write next row