@Transactional(readOnly = true)
  private Specification<Usuario> childrenBelongsToPessoaId(final Long pessoaId) {
    Pessoa pessoa = pessoaService.findOne(pessoaId);

    if (pessoa instanceof Estabelecimento) {
      Estabelecimento pai = null;

      Specifications<Usuario> pessoaIdEqualsSpecifications =
          Specifications.where(pessoaIdEquals(pessoaId));

      while ((pai = pai == null ? ((Estabelecimento) pessoa).getPai() : pai.getPai()) != null) {
        pessoaIdEqualsSpecifications =
            pessoaIdEqualsSpecifications.or(pessoaIdEquals(pai.getPessoaId()));
      }

      return pessoaIdEqualsSpecifications;
    } else {
      return Specifications.where(pessoaIdEquals(pessoaId));
    }
  }