public Cell[] getReportHeader() {
        final ArrayList<Cell> result = new ArrayList<Cell>();
        result.add(new MergeableCell("Result", 0, 0, 0, 1));
        result.add(new MergeableCell("Reason", 1, 0, 1, 1));
        int columnIndex = 2;
        for ( DimensionValuePair state : getEnvironmentLevelTargetStates() ) {
            final ArrayList<String> validationList = new ArrayList<String>();
            final String[] values = state.getDimension().values();
            for ( String validation : values ) {
                validationList.add(validation);
            }
            result.add(new MergeableCell(state.getDimension().getAlias(), validationList, columnIndex, 0, columnIndex, 1));
            columnIndex++;
        }
        for ( DimensionValuePair state : getRelationLevelTargetStates() ) {
            final ArrayList<String> validationList = new ArrayList<String>();
            final String[] values = state.getDimension().values();
            for ( String validation : values ) {
                validationList.add(validation);
            }
            result.add(new MergeableCell(state.getDimension().getAlias(), validationList, columnIndex, 0, columnIndex, 1));
            columnIndex++;
        }
        for ( List<DimensionValuePair> states : getObjectLevelTargetStates() ) {
            final int subColumns = states.size();
            if ( 0 >= subColumns ) {
                continue;
            }
            final IObjectDimension d = (IObjectDimension) states.get(0).getDimension();
            final String objectName = ScriptLexicalAnalyzer.stripVariablePlaceholder(d.getOneExpression());
            result.add(new MergeableCell(objectName, columnIndex, 0, columnIndex + subColumns - 1, 0));
            int subCounter = 0;
            for ( DimensionValuePair state : states ) {
                final ArrayList<String> validationList = new ArrayList<String>();
                final String[] values = state.getDimension().values();
                for ( String validation : values ) {
                    validationList.add(validation);
                }
                result.add(new Cell(state.getDimension().getAlias(), validationList, columnIndex + ( subCounter++ ), 1));
            }
            columnIndex += subColumns;
        }
        result.add(new MergeableCell("Expectation", columnIndex, 0, columnIndex, 1));
        return result.toArray(new Cell[0]);
    }