public InvestmentTableModel(AccountRecord account, String[] columnNames, Class<?>[] columnClasses) {
        if (account == null)
            throw new NullPointerException("No account provided");
        if (columnNames == null)
            throw new NullPointerException("No column names provided");
        if (columnClasses == null)
            throw new NullPointerException("No column classes provided");
        if (columnNames.length != columnClasses.length)
            throw new IllegalArgumentException("Number of names not same as number of classes");

        this.account = account;
        this.columnNames = columnNames;
        this.columnClasses = columnClasses;
        
        int listSize = TransactionRecord.transactions.size();
        listData = new ArrayList<TransactionRecord>(listSize+10);

        //
        // Add transactions for the investment account
        //
        // An investment account cannot be a transfer account, so
        // we just need to check the source account for the transaction
        //
        for (TransactionRecord t : TransactionRecord.transactions) {
            if (t.getAccount() == account)
                listData.add(t);
        }
    }