// Path: ChatUILib/src/main/java/com/simon816/chatui/lib/PlayerChatView.java
// public interface PlayerChatView {
// 
//     public Player getPlayer();
// 
//     public TopWindow getWindow();
// 
//     public boolean showWindow(TopWindow window);
// 
//     public boolean removeShownWindow();
// 
//     public void update();
// 
//     public boolean handleIncoming(Text message);
// 
//     public Optional<Text> transformOutgoing(CommandSource sender, Text originalOutgoing, ChatType type);
// 
//     public boolean handleCommand(String[] args);
// 
//     public void onRemove();
// 
//     public void initialize();
// 
// }
// 
// Path: ChatUILib/src/main/java/com/simon816/chatui/lib/TopWindow.java
// public interface TopWindow extends ITextDrawable {
// 
//     void onClose();
// 
//     void onTextInput(PlayerChatView view, Text input);
// 
//     boolean onCommand(PlayerChatView view, String[] args);
// 
// }


import com.simon816.chatui.lib.PlayerChatView;
import com.simon816.chatui.lib.TopWindow;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.chat.ChatType;
import java.util.Optional;

package com.simon816.chatui;



// A wrapper class to enclose both ActivePlayerChatView and DisabledChatView
class ChatUIView implements PlayerChatView {

    private PlayerChatView actualView;

    public ChatUIView(PlayerChatView actualView) {
        this.actualView = actualView;
    }

    public PlayerChatView getActualView() {
        return this.actualView;
    }

    @Override
    public Player getPlayer() {
        return this.actualView.getPlayer();
    }

    @Override

// Path: ChatUILib/src/main/java/com/simon816/chatui/lib/PlayerChatView.java
// public interface PlayerChatView {
// 
//     public Player getPlayer();
// 
//     public TopWindow getWindow();
// 
//     public boolean showWindow(TopWindow window);
// 
//     public boolean removeShownWindow();
// 
//     public void update();
// 
//     public boolean handleIncoming(Text message);
// 
//     public Optional<Text> transformOutgoing(CommandSource sender, Text originalOutgoing, ChatType type);
// 
//     public boolean handleCommand(String[] args);
// 
//     public void onRemove();
// 
//     public void initialize();
// 
// }
// 
// Path: ChatUILib/src/main/java/com/simon816/chatui/lib/TopWindow.java
// public interface TopWindow extends ITextDrawable {
// 
//     void onClose();
// 
//     void onTextInput(PlayerChatView view, Text input);
// 
//     boolean onCommand(PlayerChatView view, String[] args);
// 
// }


// Path: src/main/java/com/simon816/chatui/ChatUIView.java
import com.simon816.chatui.lib.PlayerChatView;
import com.simon816.chatui.lib.TopWindow;
import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.text.chat.ChatType;
import java.util.Optional;

package com.simon816.chatui;



// A wrapper class to enclose both ActivePlayerChatView and DisabledChatView
class ChatUIView implements PlayerChatView {

    private PlayerChatView actualView;

    public ChatUIView(PlayerChatView actualView) {
        this.actualView = actualView;
    }

    public PlayerChatView getActualView() {
        return this.actualView;
    }

    @Override
    public Player getPlayer() {
        return this.actualView.getPlayer();
    }

    @Override

    public TopWindow getWindow() {
