Problema, retorno de um vetor de int

Olá pessoal,
Estava procurando e não encontrei uma resposta para a falha que esta ocorrendo. Estou tentando fazer um programa que tem o cógido a baixo, trate-se do algoritmo de Knuth-Morris-Pratt. Eu praticamente só copiei o arquivo, mas esta dando um erro na funcao, public int[]calculaNext(String trecho), onde eu deveria retornar um vetor de int. Se alguém puder compilar para ver se o erro nao é só no meu computador. Grato
O erro é:
C:\Users\Usuario\Desktop\Documents\NetBeansProjects\TestaEntrada\src\testaentrada\KMP.java:66: missing return statement
}
1 error
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)

public class KMP {

    public int kmpAlgoritmo(String texto, String trecho) {

        int n = texto.length();
        int m = trecho.length();
        int[] next = calculaNext(trecho);
        int i = 0;
        int j = 0;

        while (i < n) {
            if (trecho.charAt(j) == texto.charAt(i)) {
                if (j == m - 1) {
                    return (i - m + 1);
                }
                i++;
                j++;
            } else {
                if (j > 0) {
                    j = next[j - 1];
                } else {
                    i++;
                }
            }
        }
        return -1;
    }

    public int[]calculaNext(String trecho)
    { // <- nesta parte aparece o erro, missing return statement, como se estivesse faltando um parenteses
        int[] next = new int[trecho.length()];
        next[0] = 0;

        int m = trecho.length();
        int j = 0;
        int i = 1;

        while (i < m) {
            if (trecho.charAt(j) == trecho.charAt(i)) {
                next[i] = j + 1;
                i++;
                j++;
            } else {
                if (j > 0) {
                    j = next[j - 1];
                } else {
                    next[i] = 0;
                    i++;
                }

            }
            return next;
        }

    
    }
}

Se o seu programa não cair no laço condicional, veja que o metodo fica sem retorno certo?

hm…verdade, alterei o return, coloquei-o fora do while e ficou ok.
Valeu Laubstein, M?cio. Rápido e preciso!