import jvstm.*; import pt.ist.esw.atomicannotation.Atomic; class VAccount implements Account { private VBox<Long> balance = new VBox<Long>(); VAccount(long balance) { setBalance(balance); } public long getBalance() { return balance.get(); } void setBalance(long newBalance) { this.balance.put(newBalance); } public @Atomic void withdraw(long amount) { setBalance(getBalance() - amount); } public @Atomic void deposit(long amount) { setBalance(getBalance() + amount); } public boolean canWithdraw(long amount) { return amount < getBalance(); } }