private void process() {
        if (intervals.size() < 2) {
            throw new IndexOutOfBoundsException("Processing requires at least two intervals");
        }
        // addressing to the first non-fictitious interval
        double y_min = intervals.get(1).getY();
        MatterInterval inl;

        for (int i = 1; i < intervals.size(); i++) {
            inl = intervals.get(i);
            if (inl.getY() < y_min) {
                y_min = inl.getY();
            }
        }
        y_shift = y_min;

        for (int i = 1; i < intervals.size(); i++) {
            inl = intervals.get(i);
            inl.setY(inl.getY() - y_shift);
        }

        getFictitiousInterval().setY(0);
        // System.out.println("After process:\n" + this);
    }