// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/Packet.java
// public class Packet {
// 
//     private boolean mReadable;
//     private boolean mWritable;
//     private int mLen;
//     private int mChannel;
//     private byte[] mData;
//     private ByteArrayOutputStream mBuff;
//     private DataOutputStream mBuffOS;
//     private DataOutputStream mOS;
//     private DataInputStream mBuffIS;
//     private DataInputStream mIS;
//     private boolean mSent;
// 
//     public Packet(int channel, DataInputStream is, DataOutputStream os) {
//         mReadable = false;
//         mWritable = true;
//         mChannel = channel;
//         mBuff = new ByteArrayOutputStream();
//         mBuffOS = new DataOutputStream(mBuff);
//         mIS = is;
//         mOS = os;
//     }
// 
//     /**
//      * Create an incomming packet
//      */
//     /* package */ Packet(DataInputStream is, DataOutputStream os) throws IOException {
//         mReadable = true;
//         mWritable = false;
//         // Read packet size
//         mLen = is.readInt();
//         // Read channel
//         mChannel = is.readInt();
//         // Read data
//         mData = new byte[mLen];
//         is.readFully(mData);
//         mBuffIS = new DataInputStream(new ByteArrayInputStream(mData));
//         // Store the output stream for reference
//         mOS = os;
//     }
// 
//     /* package */ void send(DataOutputStream os) throws IOException {
//         if (mSent) {
//             throw new RuntimeException("Packet already sent, refusing to send again!");
//         }
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         byte data[] = mBuff.toByteArray();
//         // Write packet size
//         os.writeInt(data.length);
//         // Write channel
//         os.writeInt(mChannel);
//         // Write data
//         os.write(data);
//         // Make sure the data is sent
//         os.flush();
//         mSent = true;
//     }
// 
//     public int getChannel() {
//         return mChannel;
//     }
// 
//     public Packet createReply() {
//         return new Packet(mChannel, null, mOS);
//     }
// 
//     private Packet getReply() throws IOException {
//         return new Packet(mIS, mOS);
//     }
// 
//     public void send() throws IOException {
//         send(mOS);
//     }
// 
//     public Packet sendAndReceive(String cmd) throws IOException {
//         mOS.writeUTF(cmd);
//         send(mOS);
//         return getReply();
//     }
// 
//     public int readInt() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readInt();
//     }
// 
//     public float readFloat() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readFloat();
//     }
// 
//     public boolean readBoolean() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readBoolean();
//     }
// 
//     public String readUTF() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readUTF();
//     }
// 
//     public void writeInt(int value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeInt(value);
//     }
// 
//     public void writeFloat(float value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeFloat(value);
//     }
// 
//     public void writeBoolean(boolean value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeBoolean(value);
//     }
// 
//     public void writeUTF(String value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeUTF(value);
//     }
// 
// }
// 
// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/XAppDbgCmdIDs.java
// public class XAppDbgCmdIDs {
// 
//     public static final String CMD_LIST_PROP = "XAppDbg.C.ListProp";
// 
//     public static final String CMD_WRITE_PROP = "XAppDbg.C.WriteProp";
// 
//     public static final String CMD_READ_PROP = "XAppDbg.C.ReadProp";
// 
//     public static final String CMD_TREE = "XAppDbg.C.Tree";
// 
//     public static final String CMD_TREE_SELECT = "XAppDbg.C.TreeSelect";
// 
//     public static final String CMD_TREE_CMD = "XAppDbg.C.Do";
// 
//     public static final String CMD_TRIGGER = "XAppDbg.C.Trigger";
// }


import com.sonymobile.tools.xappdbg.Packet;
import com.sonymobile.tools.xappdbg.XAppDbgCmdIDs;
import java.io.IOException;
    public boolean isReadable() {
        return (mRW & 1) != 0;
    }

    protected void setWritable() {
        mRW |= 2;
    }

    public boolean isWritable() {
        return (mRW & 2) != 0;
    }

    public abstract int getIntValue(Object obj);

    public abstract boolean getBoolValue(Object obj);

    public abstract float getFloatValue(Object obj);

    public abstract String getStringValue(Object obj);

    public abstract boolean setIntValue(Object obj, int value);

    public abstract boolean setBoolValue(Object obj, boolean value);

    public abstract boolean setFloatValue(Object obj, float value);

    public abstract boolean setStringValue(Object obj, String value);

    public abstract boolean setVoidValue(Object obj);

// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/Packet.java
// public class Packet {
// 
//     private boolean mReadable;
//     private boolean mWritable;
//     private int mLen;
//     private int mChannel;
//     private byte[] mData;
//     private ByteArrayOutputStream mBuff;
//     private DataOutputStream mBuffOS;
//     private DataOutputStream mOS;
//     private DataInputStream mBuffIS;
//     private DataInputStream mIS;
//     private boolean mSent;
// 
//     public Packet(int channel, DataInputStream is, DataOutputStream os) {
//         mReadable = false;
//         mWritable = true;
//         mChannel = channel;
//         mBuff = new ByteArrayOutputStream();
//         mBuffOS = new DataOutputStream(mBuff);
//         mIS = is;
//         mOS = os;
//     }
// 
//     /**
//      * Create an incomming packet
//      */
//     /* package */ Packet(DataInputStream is, DataOutputStream os) throws IOException {
//         mReadable = true;
//         mWritable = false;
//         // Read packet size
//         mLen = is.readInt();
//         // Read channel
//         mChannel = is.readInt();
//         // Read data
//         mData = new byte[mLen];
//         is.readFully(mData);
//         mBuffIS = new DataInputStream(new ByteArrayInputStream(mData));
//         // Store the output stream for reference
//         mOS = os;
//     }
// 
//     /* package */ void send(DataOutputStream os) throws IOException {
//         if (mSent) {
//             throw new RuntimeException("Packet already sent, refusing to send again!");
//         }
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         byte data[] = mBuff.toByteArray();
//         // Write packet size
//         os.writeInt(data.length);
//         // Write channel
//         os.writeInt(mChannel);
//         // Write data
//         os.write(data);
//         // Make sure the data is sent
//         os.flush();
//         mSent = true;
//     }
// 
//     public int getChannel() {
//         return mChannel;
//     }
// 
//     public Packet createReply() {
//         return new Packet(mChannel, null, mOS);
//     }
// 
//     private Packet getReply() throws IOException {
//         return new Packet(mIS, mOS);
//     }
// 
//     public void send() throws IOException {
//         send(mOS);
//     }
// 
//     public Packet sendAndReceive(String cmd) throws IOException {
//         mOS.writeUTF(cmd);
//         send(mOS);
//         return getReply();
//     }
// 
//     public int readInt() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readInt();
//     }
// 
//     public float readFloat() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readFloat();
//     }
// 
//     public boolean readBoolean() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readBoolean();
//     }
// 
//     public String readUTF() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readUTF();
//     }
// 
//     public void writeInt(int value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeInt(value);
//     }
// 
//     public void writeFloat(float value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeFloat(value);
//     }
// 
//     public void writeBoolean(boolean value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeBoolean(value);
//     }
// 
//     public void writeUTF(String value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeUTF(value);
//     }
// 
// }
// 
// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/XAppDbgCmdIDs.java
// public class XAppDbgCmdIDs {
// 
//     public static final String CMD_LIST_PROP = "XAppDbg.C.ListProp";
// 
//     public static final String CMD_WRITE_PROP = "XAppDbg.C.WriteProp";
// 
//     public static final String CMD_READ_PROP = "XAppDbg.C.ReadProp";
// 
//     public static final String CMD_TREE = "XAppDbg.C.Tree";
// 
//     public static final String CMD_TREE_SELECT = "XAppDbg.C.TreeSelect";
// 
//     public static final String CMD_TREE_CMD = "XAppDbg.C.Do";
// 
//     public static final String CMD_TRIGGER = "XAppDbg.C.Trigger";
// }


// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/properties/Item.java
import com.sonymobile.tools.xappdbg.Packet;
import com.sonymobile.tools.xappdbg.XAppDbgCmdIDs;
import java.io.IOException;

    public boolean isReadable() {
        return (mRW & 1) != 0;
    }

    protected void setWritable() {
        mRW |= 2;
    }

    public boolean isWritable() {
        return (mRW & 2) != 0;
    }

    public abstract int getIntValue(Object obj);

    public abstract boolean getBoolValue(Object obj);

    public abstract float getFloatValue(Object obj);

    public abstract String getStringValue(Object obj);

    public abstract boolean setIntValue(Object obj, int value);

    public abstract boolean setBoolValue(Object obj, boolean value);

    public abstract boolean setFloatValue(Object obj, float value);

    public abstract boolean setStringValue(Object obj, String value);

    public abstract boolean setVoidValue(Object obj);

    public void sendToClient(Packet out) throws IOException {