A resposta para um NullPointerException é sempre a mesma - debugue seu código, e veja o que ficou nulo (se é repObj[x] ou repObj[x][y]). Depois, veja no seu código onde é que você esqueceu de inicializar repObj[x] ou repObj[x][y].
Uma coisa que não entrou no JDK 8 foi uma coisa que existe no Groovy mas foi rejeitada. A ideia é você ter um operador “?.” que é igual ao “.”, mas em vez de criar um NullPointerException se o lado esquerdo for null, simplesmente retorna null.
O seu exemplo seria, se essa modificação na linguagem tivesse entrado: