Your code is very close to working correctly. Here is the problem:
if (!prefix.equals(""))
// You make a recursive invocation, and then...
prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
// ...ignore its return value, and return null instead!
return null;
Replace with
if (!prefix.equals(""))
return prefix_last_child(STN.getNexts().get(alphabet_place(preffixx[0])), prefix.substring(1));
// ^^^^^^
return null;
to fix the problem.