// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/ClientException.java
// public class ClientException extends Exception {
//   private static final long serialVersionUID = -7032182229500031385L;
// 
//   public ClientException() {
//     super();
//   }
// 
//   public ClientException(Throwable cause) {
//     super(cause);
//   }
// 
//   public ClientException(String reason) {
//     super(reason);
//   }
// 
//   public ClientException(String reason, Throwable cause) {
//     super(reason, cause);
//   }
// }


import java.io.IOException;
import jp.co.rakuten.rit.roma.client.ClientException;

package jp.co.rakuten.rit.roma.client.commands;



public abstract class AbstractCommand implements Command, CommandID {
  protected Command next;

  protected AbstractCommand() {
    this(null);
  }

  protected AbstractCommand(Command next) {
    this.next = next;
  }


// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/ClientException.java
// public class ClientException extends Exception {
//   private static final long serialVersionUID = -7032182229500031385L;
// 
//   public ClientException() {
//     super();
//   }
// 
//   public ClientException(Throwable cause) {
//     super(cause);
//   }
// 
//   public ClientException(String reason) {
//     super(reason);
//   }
// 
//   public ClientException(String reason, Throwable cause) {
//     super(reason, cause);
//   }
// }


// Path: java/client/src/main/java/jp/co/rakuten/rit/roma/client/commands/AbstractCommand.java
import java.io.IOException;
import jp.co.rakuten.rit.roma.client.ClientException;

package jp.co.rakuten.rit.roma.client.commands;



public abstract class AbstractCommand implements Command, CommandID {
  protected Command next;

  protected AbstractCommand() {
    this(null);
  }

  protected AbstractCommand(Command next) {
    this.next = next;
  }


  public boolean execute(CommandContext context) throws ClientException {
