docs: public void interpret(Specification table) 
      {
          Example row = table.nextExample();
          Action action = Action.parse(actionCells(row));
          Date start = new Date();
          try 
          {
              Call call = action.checkAgainst(fitFixture != null ? fitFixture : fixture);
              call.will(Do.both(Annotate.right(Group.composedOf(keywordCells(row)))).and(countRowOf(table).right())).when(ResultIs.equalTo(true));
              call.will(Do.both(Annotate.wrong(Group.composedOf(keywordCells(row)))).and(countRowOf(table).wrong())).when(ResultIs.equalTo(false));
              call.will(Do.both(Annotate.exception(CollectionUtil.first(keywordCells(row)))).and(countRowOf(table).exception())).when(ResultIs.exception());
              call.execute();
          }
          catch (Exception e)
          {
              CollectionUtil.first(keywordCells(row)).annotate(Annotations.exception(e));
              reportException(table);
          }
          finally
          {
              if(timed)
              {
                  long split = new Date().getTime() - start.getTime();
              	row.addChild().setContent(Fit.format.format(start));
              	row.addChild().setContent(split<1000 ? "&nbsp;" : Double.toString((split)/1000.0));
              }
          }
      }