Metodo Transfere

O problema consiste no fato de o saldo do objeto que está transferindo, na verdade transfere o dobro do argumento passado. Alguém pode me ajudar?

class Conta{
	int id = 123;
	String nome = "Human";
	double limit, saldo;
	Client titular;

	boolean saca(double valor){
		if((valor > this.saldo) || (this.saldo < 0)){
			return false;
		}
		else{
			this.saldo -= valor;
			return true;
		}
	}

	void deposita(double valor){
		this.saldo += valor;
	}

	void transferePara(Conta destino, double valor){
		boolean isTrue = this.saca(valor);

		if(isTrue){
			this.saldo = this.saldo - valor;
			destino.saldo += valor;
		}
	}
}

class Client{
	String cpf = "99999999";
	String address= "";
}

class Main{
	public static void main(String[] args){
		
		Conta c1 = new Conta();
		Conta c2 = new Conta();

		c1.saldo = 1900;
		c2.saldo = 1900;

		c1.transferePara(c2, 100);

		System.out.println(c1.saldo);

	}
}
	void transferePara(Conta destino, double valor){
		boolean isTrue = this.saca(valor); // aqui você está sacando a primeira vez 

		if(isTrue){
			this.saldo = this.saldo - valor; // e aqui está fazendo a mesma coisa que o saca faz, ou seja, está sacando pela segunda vez 
			destino.saldo += valor;
		}
	}

Bem que eu estava suspeitando dessa validação. Valeu camarada!