public ComplexMatrix getPropagationMatrix(int index, double energy) {
        ComplexMatrix mx = ComplexMatrix.identityMatrix(2);
        for (int i = 0; i < index; i++) {
            try {
                mx = getLocalPropagationMatrix(i, energy).multiply(mx);
                if (VERBOSE) {
                    System.out.println("> > > In getPropagationMatrix(...)");
                    System.out.println("Matrix on index " + index + ", energy " + energy + ", interation " + i);
                    System.out.println(mx);
                    System.out.println("Current propagation matrix = " + getLocalPropagationMatrix(i, energy));
                }
            } catch (NullPointerException e) {
                System.out.println("Null received in ComplexMatrix multiplication in getPropagationMatrix(...)");
                e.printStackTrace();
            } catch (Exception e) {
                System.out.println("Something wrong on ComplexMatrix multiplication in getPropagationMatrix(...)");
                e.printStackTrace();
            }
        }
        return mx;
    }