private final UnitValue[] getPos(ComponentWrapper cw,
            CC cc) {
        UnitValue[] cbPos = null;
        if (callbackList != null) {
            for (int i = 0; i < callbackList.size() && cbPos == null;
                    i++) {
                cbPos = callbackList.get(i).getPosition(cw); // NOT a copy!
            }
        }

        // If one is null, return the other (which many also be null)
        UnitValue[] ccPos = cc.getPos(); // A copy!!
        if (cbPos == null || ccPos == null) {
            return cbPos != null ? cbPos : ccPos;
        }
        // Merge
        for (int i = 0; i < 4;
                i++) {
            UnitValue cbUv = cbPos[i];
            if (cbUv != null) {
                ccPos[i] = cbUv;
            }
        }

        return ccPos;
    }