code: public boolean canComputeErrors() {
          return !(engine == null || expected.isEmpty() || obtained.isEmpty()
                  || expected.size() != obtained.size()
                  || expected.get(0).length != obtained.get(0).length
                  || expected.get(0).length != engine.variables().size());
      }
docs: Indicates whether errors can be computed based on the expected and obtained
  values from the benchmark. If the benchmark was prepared from a file reader
  and the file included columns of expected output values and the benchmark
  has been run at least once, then the benchmark can automatically compute
  the errors and will automatically include them in the results.
  
  @return whether errors can be computed based on the expected and obtained
  values from the benchmark