@SuppressWarnings({ "rawtypes", "unchecked" })
    private Collection<List<DimensionValuePair>> getObjectLevelTargetStates() {
        final HashMap<Object, List<DimensionValuePair>> resultMap = new HashMap<Object, List<DimensionValuePair>>();
        for ( DimensionValuePair state : targetStateList ) {
            if ( ( state.getDimension() instanceof IObjectDimension ) ) {
                final Object key = ( (IObjectDimension) state.getDimension() ).getDottedName();
                if ( !resultMap.containsKey(key) ) {
                    resultMap.put(key, new ArrayList<DimensionValuePair>());
                }
                final List<DimensionValuePair> list = resultMap.get(key);
                list.add(state);
            }
        }
        final Comparator c = new Comparator<DimensionValuePair>() {

            @Override
            public int compare(DimensionValuePair one, DimensionValuePair other) {
                return one.getDimension().getAlias().compareTo(other.getDimension().getAlias());
            }
        };
        for ( List<DimensionValuePair> list : resultMap.values() ) {
            Collections.sort(list, c);
        }
        return resultMap.values();
    }