SYMBOL INDEX (348 symbols across 46 files) FILE: D2/src/Main.java class Main (line 4) | public class Main { method main (line 5) | public static void main(String[] args) { FILE: D2/src/data/BookingDAO.java class BookingDAO (line 15) | public class BookingDAO { method BookingDAO (line 20) | public BookingDAO(String path) { method load (line 24) | public void load() throws Exception { method save (line 46) | public void save() throws Exception { method addBooking (line 77) | public void addBooking(Reservation r) { method findByID (line 81) | public Reservation findByID(String bookingID) { method getBookingsByUser (line 88) | public List getBookingsByUser(String userID) { method getBookingsByEquipment (line 96) | public List getBookingsByEquipment(String equipmentID) { method getAllBookings (line 104) | public List getAllBookings() { method updateBooking (line 108) | public void updateBooking(Reservation updated) { FILE: D2/src/data/EquipmentDAO.java class EquipmentDAO (line 15) | public class EquipmentDAO { method EquipmentDAO (line 20) | public EquipmentDAO(String path) { method load (line 24) | public void load() throws Exception { method save (line 43) | public void save() throws Exception { method addEquipment (line 68) | public void addEquipment(Equipment e) { method findByID (line 72) | public Equipment findByID(String equipmentID) { method getAllEquipment (line 79) | public List getAllEquipment() { method getAvailableEquipment (line 83) | public List getAvailableEquipment() { method updateEquipment (line 91) | public void updateEquipment(Equipment updated) { FILE: D2/src/data/UserDAO.java class UserDAO (line 15) | public class UserDAO { method UserDAO (line 20) | public UserDAO(String path) { method load (line 24) | public void load() throws Exception { method save (line 47) | public void save() throws Exception { method addUser (line 76) | public void addUser(User user) { method findByEmail (line 80) | public User findByEmail(String email) { method findByID (line 87) | public User findByID(String userID) { method emailExists (line 94) | public boolean emailExists(String email) { method getAllUsers (line 98) | public List getAllUsers() { method updateUser (line 102) | public void updateUser(User updated) { method createUser (line 112) | private User createUser(String userType) { FILE: D2/src/gui/CoordinatorDashboardPanel.java class CoordinatorDashboardPanel (line 10) | public class CoordinatorDashboardPanel extends ManagerDashboardPanel { method CoordinatorDashboardPanel (line 18) | public CoordinatorDashboardPanel(MainFrame frame) { method refresh (line 23) | @Override method build (line 34) | @Override method buildAllUsersTab (line 62) | private JPanel buildAllUsersTab() { method buildGenerateTab (line 88) | private JPanel buildGenerateTab() { method refreshAllUsers (line 120) | private void refreshAllUsers() { method approveFromAllUsers (line 131) | private void approveFromAllUsers() { method rejectFromAllUsers (line 145) | private void rejectFromAllUsers() { method generateManager (line 159) | private void generateManager() { method getFrame (line 187) | private MainFrame getFrame() { FILE: D2/src/gui/LoginPanel.java class LoginPanel (line 10) | public class LoginPanel extends JPanel { method LoginPanel (line 21) | public LoginPanel(MainFrame frame) { method build (line 27) | private void build() { method buildLoginCard (line 64) | private JPanel buildLoginCard() { method buildRegCard (line 105) | private JPanel buildRegCard() { method wrapCard (line 121) | private JPanel wrapCard(JPanel inner) { method handleLogin (line 130) | private void handleLogin() { method handleRegister (line 143) | private void handleRegister() { method setStatus (line 162) | private void setStatus(String msg, boolean error) { FILE: D2/src/gui/MainFrame.java class MainFrame (line 7) | public class MainFrame extends JFrame { method getInstance (line 25) | public static MainFrame getInstance() { method MainFrame (line 30) | private MainFrame() { method showPanel (line 53) | public void showPanel(String name) { method onLoginSuccess (line 57) | public void onLoginSuccess(User user) { method main (line 78) | public static void main(String[] args) { FILE: D2/src/gui/ManagerDashboardPanel.java class ManagerDashboardPanel (line 13) | public class ManagerDashboardPanel extends JPanel { method ManagerDashboardPanel (line 29) | public ManagerDashboardPanel(MainFrame frame) { this(frame, true); } method ManagerDashboardPanel (line 31) | protected ManagerDashboardPanel(MainFrame frame, boolean standalone) { method setCurrentUser (line 36) | public void setCurrentUser(User u) { this.currentUser = u; } method refresh (line 38) | public void refresh() { method build (line 47) | protected void build() { method buildTabs (line 67) | protected JTabbedPane buildTabs() { method buildPendingTab (line 77) | protected JPanel buildPendingTab() { method buildEquipTab (line 101) | protected JPanel buildEquipTab() { method buildAddTab (line 125) | protected JPanel buildAddTab() { method buildBookingsTab (line 150) | protected JPanel buildBookingsTab() { method refreshEquip (line 169) | protected void refreshEquip() { method refreshPending (line 179) | protected void refreshPending() { method refreshAllBookings (line 197) | protected void refreshAllBookings() { method approve (line 209) | private void approve() { method reject (line 223) | private void reject() { method changeStatus (line 237) | protected void changeStatus(String newStatus) { method addEquipment (line 269) | private void addEquipment() { method addField (line 284) | protected JTextField addField(JPanel form, String labelText) { FILE: D2/src/gui/UI.java class UI (line 9) | public class UI { method button (line 36) | public static JButton button(String text, Color bg) { method primary (line 50) | public static JButton primary(String t) { return button(t, YORKU_RED... method secondary (line 51) | public static JButton secondary(String t) { return button(t, SECONDARY... method success (line 52) | public static JButton success(String t) { return button(t, SUCCESS); } method danger (line 53) | public static JButton danger(String t) { return button(t, DANGER); } method warning (line 54) | public static JButton warning(String t) { return button(t, WARNING); } method info (line 55) | public static JButton info(String t) { return button(t, INFO); } method field (line 57) | public static JTextField field(String placeholder) { method password (line 61) | public static JPasswordField password() { method combo (line 65) | public static JComboBox combo(String... items) { method styleInput (line 73) | private static void styleInput(JTextField f) { method inputBorder (line 87) | private static Border inputBorder() { method heading (line 93) | public static JLabel heading(String t) { method label (line 96) | public static JLabel label(String t) { method navBar (line 102) | public static JPanel navBar(String appTitle, String userInfo, JButton.... method card (line 128) | public static JPanel card(String title) { method statusBar (line 145) | public static JLabel statusBar() { method setStatus (line 151) | public static void setStatus(JLabel bar, String msg, boolean error) { method tableModel (line 156) | public static DefaultTableModel tableModel(String... cols) { method styledTable (line 161) | public static JTable styledTable(DefaultTableModel model) { method scroll (line 182) | public static JScrollPane scroll(JTable t) { method tabs (line 187) | public static JTabbedPane tabs() { method formField (line 191) | public static JTextField formField(JPanel form, String lbl) { method formPassword (line 196) | public static JPasswordField formPassword(JPanel form, String lbl) { method formCombo (line 201) | public static JComboBox formCombo(JPanel form, String lbl, Str... method tabContent (line 206) | public static JPanel tabContent() { method buttonRow (line 210) | public static JPanel buttonRow(JButton... buttons) { FILE: D2/src/gui/UserDashboardPanel.java class UserDashboardPanel (line 12) | public class UserDashboardPanel extends JPanel { method UserDashboardPanel (line 28) | public UserDashboardPanel(MainFrame frame) { method setCurrentUser (line 33) | public void setCurrentUser(User u) { this.currentUser = u; } method refresh (line 35) | public void refresh() { method build (line 44) | private void build() { method buildBrowseTab (line 71) | private JPanel buildBrowseTab() { method buildBookingsTab (line 118) | private JPanel buildBookingsTab() { method refreshEquip (line 158) | private void refreshEquip() { method refreshBookings (line 168) | private void refreshBookings() { method reserve (line 180) | private void reserve() { method cancelBooking (line 210) | private void cancelBooking() { method extend (line 223) | private void extend() { method forfeit (line 240) | private void forfeit() { method payStrategy (line 253) | private PaymentStrategy payStrategy(String m) { FILE: D2/src/model/Deposit.java class Deposit (line 3) | public class Deposit { method Deposit (line 8) | public Deposit() {} method Deposit (line 10) | public Deposit(double amount) { method forfeit (line 17) | public void forfeit() { method getAmount (line 21) | public double getAmount() { return amount; } method setAmount (line 22) | public void setAmount(double amount) { this.amount = amount; } method isForfeited (line 24) | public boolean isForfeited() { return isForfeited; } method setForfeited (line 25) | public void setForfeited(boolean forfeited) { isForfeited = forfeited; } method isDeductedFromTotal (line 27) | public boolean isDeductedFromTotal() { return deductedFromTotal; } method setDeductedFromTotal (line 28) | public void setDeductedFromTotal(boolean deductedFromTotal) { FILE: D2/src/model/Equipment.java class Equipment (line 3) | public class Equipment { method Equipment (line 12) | public Equipment() {} method Equipment (line 14) | public Equipment(String equipmentID, String name, String description, method getLabLocation (line 25) | public LabLocation getLabLocation() { method isAvailable (line 29) | public boolean isAvailable() { method getEquipmentID (line 34) | public String getEquipmentID() { return equipmentID; } method setEquipmentID (line 35) | public void setEquipmentID(String equipmentID) { this.equipmentID = eq... method getName (line 37) | public String getName() { return name; } method setName (line 38) | public void setName(String name) { this.name = name; } method getDescription (line 40) | public String getDescription() { return description; } method setDescription (line 41) | public void setDescription(String description) { this.description = de... method getType (line 43) | public String getType() { return type; } method setType (line 44) | public void setType(String type) { this.type = type; } method getStatus (line 46) | public String getStatus() { return status; } method setStatus (line 47) | public void setStatus(String status) { this.status = status; } method getBuildingName (line 49) | public String getBuildingName() { return buildingName; } method setBuildingName (line 50) | public void setBuildingName(String buildingName) { this.buildingName =... method getRoomNumber (line 52) | public String getRoomNumber() { return roomNumber; } method setRoomNumber (line 53) | public void setRoomNumber(String roomNumber) { this.roomNumber = roomN... method toString (line 55) | @Override FILE: D2/src/model/Faculty.java class Faculty (line 3) | public class Faculty extends User { method Faculty (line 6) | public Faculty() {} method Faculty (line 8) | public Faculty(String userID, String name, String email, String password, method getFeeRate (line 13) | @Override FILE: D2/src/model/Guest.java class Guest (line 3) | public class Guest extends User { method Guest (line 7) | public Guest() {} method Guest (line 9) | public Guest(String userID, String name, String email, String password, method getFeeRate (line 15) | @Override method getCertificationNumber (line 20) | public String getCertificationNumber() { return certificationNumber; } method setCertificationNumber (line 21) | public void setCertificationNumber(String certificationNumber) { FILE: D2/src/model/HeadLabCoordinator.java class HeadLabCoordinator (line 3) | public class HeadLabCoordinator extends User { method HeadLabCoordinator (line 6) | public HeadLabCoordinator() {} method HeadLabCoordinator (line 8) | public HeadLabCoordinator(String userID, String name, String email, method getFeeRate (line 13) | @Override method generateManagerAccount (line 17) | public LabManager generateManagerAccount(String managerID, String name, FILE: D2/src/model/LabLocation.java class LabLocation (line 3) | public class LabLocation { method LabLocation (line 7) | public LabLocation() {} method LabLocation (line 9) | public LabLocation(String buildingName, String roomNumber) { method getLocationDetails (line 14) | public String getLocationDetails() { method getBuildingName (line 18) | public String getBuildingName() { return buildingName; } method setBuildingName (line 19) | public void setBuildingName(String buildingName) { this.buildingName =... method getRoomNumber (line 21) | public String getRoomNumber() { return roomNumber; } method setRoomNumber (line 22) | public void setRoomNumber(String roomNumber) { this.roomNumber = roomN... method toString (line 24) | @Override FILE: D2/src/model/LabManager.java class LabManager (line 3) | public class LabManager extends User { method LabManager (line 7) | public LabManager() {} method LabManager (line 9) | public LabManager(String userID, String name, String email, String pas... method getFeeRate (line 15) | @Override method getManagerID (line 18) | public String getManagerID() { return managerID; } method setManagerID (line 19) | public void setManagerID(String managerID) { this.managerID = managerI... FILE: D2/src/model/PaymentTransaction.java class PaymentTransaction (line 3) | public class PaymentTransaction { method PaymentTransaction (line 10) | public PaymentTransaction() {} method PaymentTransaction (line 12) | public PaymentTransaction(String transactionID, String bookingID, method getTransactionID (line 22) | public String getTransactionID() { return transactionID; } method setTransactionID (line 23) | public void setTransactionID(String transactionID) { this.transactionI... method getBookingID (line 25) | public String getBookingID() { return bookingID; } method setBookingID (line 26) | public void setBookingID(String bookingID) { this.bookingID = bookingI... method getTotalAmount (line 28) | public double getTotalAmount() { return totalAmount; } method setTotalAmount (line 29) | public void setTotalAmount(double totalAmount) { this.totalAmount = to... method getPaymentStatus (line 31) | public String getPaymentStatus() { return paymentStatus; } method setPaymentStatus (line 32) | public void setPaymentStatus(String paymentStatus) { this.paymentStatu... method getPaymentMethod (line 34) | public String getPaymentMethod() { return paymentMethod; } method setPaymentMethod (line 35) | public void setPaymentMethod(String paymentMethod) { this.paymentMetho... FILE: D2/src/model/Researcher.java class Researcher (line 3) | public class Researcher extends User { method Researcher (line 6) | public Researcher() {} method Researcher (line 8) | public Researcher(String userID, String name, String email, String pas... method getFeeRate (line 13) | @Override FILE: D2/src/model/Reservation.java class Reservation (line 3) | public class Reservation { method Reservation (line 15) | public Reservation() {} method Reservation (line 17) | public Reservation(String bookingID, String userID, String equipmentID, method cancel (line 31) | public void cancel() { this.status = "CANCELLED"; } method forfeitDeposit (line 32) | public void forfeitDeposit() { this.depositForfeited = true; this.stat... method extend (line 33) | public void extend(String newEndTime) { this.endTime = newEndTime; thi... method getBookingID (line 36) | public String getBookingID() { return bookingID; } method setBookingID (line 37) | public void setBookingID(String bookingID) { this.bookingID = bookingI... method getUserID (line 39) | public String getUserID() { return userID; } method setUserID (line 40) | public void setUserID(String userID) { this.userID = userID; } method getEquipmentID (line 42) | public String getEquipmentID() { return equipmentID; } method setEquipmentID (line 43) | public void setEquipmentID(String equipmentID) { this.equipmentID = eq... method getStartTime (line 45) | public String getStartTime() { return startTime; } method setStartTime (line 46) | public void setStartTime(String startTime) { this.startTime = startTim... method getEndTime (line 48) | public String getEndTime() { return endTime; } method setEndTime (line 49) | public void setEndTime(String endTime) { this.endTime = endTime; } method isExtended (line 51) | public boolean isExtended() { return isExtended; } method setExtended (line 52) | public void setExtended(boolean extended) { isExtended = extended; } method getStatus (line 54) | public String getStatus() { return status; } method setStatus (line 55) | public void setStatus(String status) { this.status = status; } method getDepositAmount (line 57) | public double getDepositAmount() { return depositAmount; } method setDepositAmount (line 58) | public void setDepositAmount(double depositAmount) { this.depositAmoun... method isDepositForfeited (line 60) | public boolean isDepositForfeited() { return depositForfeited; } method setDepositForfeited (line 61) | public void setDepositForfeited(boolean depositForfeited) { this.depos... method getPaymentMethod (line 63) | public String getPaymentMethod() { return paymentMethod; } method setPaymentMethod (line 64) | public void setPaymentMethod(String paymentMethod) { this.paymentMetho... method toString (line 66) | @Override FILE: D2/src/model/Student.java class Student (line 3) | public class Student extends User { method Student (line 6) | public Student() {} method Student (line 8) | public Student(String userID, String name, String email, String password, method getFeeRate (line 13) | @Override FILE: D2/src/model/User.java class User (line 3) | public abstract class User { method User (line 13) | public User() {} method User (line 15) | public User(String userID, String name, String email, String password, method getFeeRate (line 28) | public abstract double getFeeRate(); method getUserID (line 31) | public String getUserID() { return userID; } method setUserID (line 32) | public void setUserID(String userID) { this.userID = userID; } method getName (line 34) | public String getName() { return name; } method setName (line 35) | public void setName(String name) { this.name = name; } method getEmail (line 37) | public String getEmail() { return email; } method setEmail (line 38) | public void setEmail(String email) { this.email = email; } method getPassword (line 40) | public String getPassword() { return password; } method setPassword (line 41) | public void setPassword(String password) { this.password = password; } method getUserType (line 43) | public String getUserType() { return userType; } method setUserType (line 44) | public void setUserType(String userType) { this.userType = userType; } method getStaffID (line 46) | public String getStaffID() { return staffID; } method setStaffID (line 47) | public void setStaffID(String staffID) { this.staffID = staffID; } method getStatus (line 49) | public String getStatus() { return status; } method setStatus (line 50) | public void setStatus(String status) { this.status = status; } method getDepartment (line 52) | public String getDepartment() { return department; } method setDepartment (line 53) | public void setDepartment(String department) { this.department = depar... method toString (line 55) | @Override FILE: D2/src/pattern/command/CancelCommand.java class CancelCommand (line 5) | public class CancelCommand implements Command { method CancelCommand (line 10) | public CancelCommand(ReservationService reservationService, Reservatio... method execute (line 15) | @Override FILE: D2/src/pattern/command/Command.java type Command (line 3) | public interface Command { method execute (line 4) | void execute(); FILE: D2/src/pattern/command/ExtendCommand.java class ExtendCommand (line 5) | public class ExtendCommand implements Command { method ExtendCommand (line 11) | public ExtendCommand(ReservationService reservationService, Reservatio... method execute (line 17) | @Override FILE: D2/src/pattern/command/ForfeitDepositCommand.java class ForfeitDepositCommand (line 5) | public class ForfeitDepositCommand implements Command { method ForfeitDepositCommand (line 10) | public ForfeitDepositCommand(ReservationService reservationService, Re... method execute (line 15) | @Override FILE: D2/src/pattern/command/ModifyCommand.java class ModifyCommand (line 5) | public class ModifyCommand implements Command { method ModifyCommand (line 12) | public ModifyCommand(ReservationService reservationService, Reservatio... method execute (line 19) | @Override FILE: D2/src/pattern/command/ReservationService.java class ReservationService (line 5) | public class ReservationService { method reserve (line 7) | public void reserve(Reservation reservation) { method cancel (line 12) | public void cancel(Reservation reservation) { method modify (line 17) | public void modify(Reservation reservation, String newStartTime, Strin... method extend (line 23) | public void extend(Reservation reservation, String newEndTime) { method forfeitDeposit (line 28) | public void forfeitDeposit(Reservation reservation) { FILE: D2/src/pattern/command/ReserveCommand.java class ReserveCommand (line 5) | public class ReserveCommand implements Command { method ReserveCommand (line 10) | public ReserveCommand(ReservationService reservationService, Reservati... method execute (line 15) | @Override FILE: D2/src/pattern/factory/UserFactory.java class UserFactory (line 10) | public class UserFactory { method UserFactory (line 12) | public UserFactory () {} method getUserType (line 14) | public User getUserType(String userType) { FILE: D2/src/pattern/observer/EquipmentObserver.java type EquipmentObserver (line 7) | public interface EquipmentObserver { method update (line 8) | void update(String equipmentID, String newStatus); FILE: D2/src/pattern/observer/EquipmentSubject.java type EquipmentSubject (line 7) | public interface EquipmentSubject { method registerObserver (line 8) | void registerObserver(EquipmentObserver observer); method removeObserver (line 9) | void removeObserver(EquipmentObserver observer); method notifyObservers (line 10) | void notifyObservers(String equipmentID, String newStatus); FILE: D2/src/pattern/observer/UserNotificationObserver.java class UserNotificationObserver (line 12) | public class UserNotificationObserver implements EquipmentObserver { method UserNotificationObserver (line 17) | public UserNotificationObserver(List affectedUsers) { method update (line 21) | @Override method getNotificationLog (line 35) | public String getNotificationLog() { method setAffectedUsers (line 39) | public void setAffectedUsers(List affectedUsers) { FILE: D2/src/pattern/singleton/BookingSystem.java class BookingSystem (line 7) | public class BookingSystem { method getInstance (line 11) | public static BookingSystem getInstance() { return bsInstance; } method BookingSystem (line 16) | private BookingSystem() { method getReservations (line 20) | public List getReservations() { return bsInstance.reserva... method addBooking (line 22) | public void addBooking(Reservation booking) { method checkActiveBookings (line 26) | public boolean checkActiveBookings(String equipmentID) { method cancelFutureBookings (line 39) | public void cancelFutureBookings(String id) { FILE: D2/src/pattern/singleton/HeadLabCoordinatorSingleton.java class HeadLabCoordinatorSingleton (line 10) | public class HeadLabCoordinatorSingleton { method HeadLabCoordinatorSingleton (line 20) | private HeadLabCoordinatorSingleton() { method getInstance (line 28) | public static HeadLabCoordinatorSingleton getInstance() { method generateManagerAccount (line 39) | public LabManager generateManagerAccount(String managerID, String name, method getCoordinatorID (line 47) | public String getCoordinatorID() { return coordinatorID; } method getName (line 48) | public String getName() { return name; } method getEmail (line 49) | public String getEmail() { return email; } method getDepartment (line 50) | public String getDepartment() { return department; } method toString (line 52) | @Override FILE: D2/src/pattern/state/AvailableState.java class AvailableState (line 3) | public class AvailableState implements EquipmentState { method enable (line 5) | @Override method disable (line 10) | @Override method markUnderMaintenance (line 16) | @Override method getStatus (line 22) | @Override FILE: D2/src/pattern/state/DisabledState.java class DisabledState (line 3) | public class DisabledState implements EquipmentState { method enable (line 5) | @Override method disable (line 11) | @Override method markUnderMaintenance (line 16) | @Override method getStatus (line 22) | @Override FILE: D2/src/pattern/state/EquipmentContext.java class EquipmentContext (line 14) | public class EquipmentContext implements EquipmentSubject { method EquipmentContext (line 22) | public EquipmentContext(String equipmentID, String initialStatus) { method enable (line 29) | public void enable() { method disable (line 33) | public void disable() { method markUnderMaintenance (line 37) | public void markUnderMaintenance() { method setState (line 41) | public void setState(EquipmentState newState) { method getCurrentState (line 46) | public EquipmentState getCurrentState() { method getStatusString (line 50) | public String getStatusString() { method getEquipmentID (line 57) | public String getEquipmentID() { method registerObserver (line 63) | @Override method removeObserver (line 68) | @Override method notifyObservers (line 73) | @Override method getStateFromString (line 81) | private EquipmentState getStateFromString(String status) { FILE: D2/src/pattern/state/EquipmentState.java type EquipmentState (line 3) | public interface EquipmentState { method enable (line 4) | void enable(EquipmentContext context); method disable (line 5) | void disable(EquipmentContext context); method markUnderMaintenance (line 6) | void markUnderMaintenance(EquipmentContext context); method getStatus (line 7) | String getStatus(); FILE: D2/src/pattern/state/MaintenanceState.java class MaintenanceState (line 3) | public class MaintenanceState implements EquipmentState { method enable (line 5) | @Override method disable (line 11) | @Override method markUnderMaintenance (line 17) | @Override method getStatus (line 22) | @Override FILE: D2/src/pattern/strategy/CreditCardPayment.java class CreditCardPayment (line 5) | public class CreditCardPayment implements PaymentStrategy { method pay (line 7) | @Override FILE: D2/src/pattern/strategy/DebitPayment.java class DebitPayment (line 5) | public class DebitPayment implements PaymentStrategy { method pay (line 7) | @Override FILE: D2/src/pattern/strategy/GrantPayment.java class GrantPayment (line 5) | public class GrantPayment implements PaymentStrategy { method pay (line 7) | @Override FILE: D2/src/pattern/strategy/InstitutionalPayment.java class InstitutionalPayment (line 5) | public class InstitutionalPayment implements PaymentStrategy { method pay (line 7) | @Override FILE: D2/src/pattern/strategy/PaymentProcessor.java class PaymentProcessor (line 5) | public class PaymentProcessor { method PaymentProcessor (line 8) | public PaymentProcessor(PaymentStrategy paymentStrategy) { method setPaymentStrategy (line 12) | public void setPaymentStrategy(PaymentStrategy paymentStrategy) { method processPayment (line 16) | public boolean processPayment(PaymentTransaction transaction) { FILE: D2/src/pattern/strategy/PaymentStrategy.java type PaymentStrategy (line 5) | public interface PaymentStrategy { method pay (line 6) | boolean pay(PaymentTransaction transaction);