public List<Movimentacao> buscaPorContaETipo_Concatenando_LevementeRefatorado(Conta conta, TipoMovimentacao tipo) {
		StringBuilder jpql = new StringBuilder(" select m from Movimentacao m ");
		
		List<String> criteria = new ArrayList<String>();
		if (conta != null) {
			criteria.add("m.conta = :conta");
		}
		if (tipo != null) {
			criteria.add("m.tipoMovimentacao = :tipo");
		}
		
		if (criteria.size() > 0) {
			jpql.append(" where ");
			for (int i = 0; i < criteria.size(); i++) {
				if (i > 0) {
					jpql.append(" and ");
				}
				jpql.append(criteria.get(i));
			}
		}
		
		TypedQuery<Movimentacao> query = entityManager.createQuery(jpql.toString(), Movimentacao.class);
		if (criteria.size() > 0) {
			if (conta != null) {
				query.setParameter("conta", conta);
			}
			if (tipo != null) {
				query.setParameter("tipo", tipo);
			}
		}
		
		return query.getResultList();
	}