class Piece {

    private boolean unicode;
    private int charPosStart;
    private int charPosLimit;
    private int filePos;
    
    public Piece(int filePos, int start, int end, boolean unicode) {
        this.filePos = filePos;
        this.charPosStart = start;
        this.charPosLimit = end;
        this.unicode = unicode;
    }

    public int getFilePos() {
        return filePos;
    }

    public int getCharPosLimit() {
        return charPosLimit;
    }

    public int getCharPosStart() {
        return charPosStart;
    }

    public boolean isUnicode() {
        return unicode;
    }

    public String toString() {<FILL_FUNCTION_BODY>}
    
    public boolean contains(int charPos) {
        return (charPos >= charPosStart) && (charPos < charPosLimit);
    }
}

        StringBuilder sb = new StringBuilder();
        sb.append("Piece{filePos=").append(filePos);
        sb.append(" start=").append(charPosStart);
        sb.append(" end=").append(charPosLimit);
        sb.append(" unicode=").append(unicode);
        sb.append("}");
        return sb.toString();
    
<no_super_class>