Consertei alguns erros no 'toSource'. Acho que tá funcionando, falta testar mais exaustivamente