public bool Read(BinaryPSDReader r)
                {
                    this.ID = "";
                    while (true)
                    {
                        char c = r.ReadChar();
                        if (c == 0x0a)
                        {
                            break;
                        }
                        this.ID += c;
                    }
                    byte[] buffer     = new byte[255];
                    int    bufPos     = 0;
                    int    nearEndCnt = 0;

                    while (true)
                    {
                        byte b = r.ReadByte();
                        buffer[bufPos++] = b;
                        if (b == 0x2f)
                        {
                            break;
                        }
                        if (b <= 0x00)
                        {
                            nearEndCnt++;
                            if (nearEndCnt == 12)
                            {
                                break;
                            }
                        }
                        else
                        {
                            nearEndCnt = 0;
                        }
                    }

                    if (this.ID.Contains(" "))
                    {
                        int index = this.ID.IndexOf(" ");
                        this.Value = this.ID.Substring(index + 1);
                        this.ID    = this.ID.Remove(index);
                    }

                    int endPos = bufPos - nearEndCnt - 1;

                    //See if it's only 0x09's:
                    for (int i = 0; i < endPos; i++)
                    {
                        if (buffer[i] != 0x09)
                        {
                            this.Data = Endogine.Serialization.ReadableBinary.CreateHexEditorString(buffer, 0, endPos);
                            break;
                        }
                    }

                    return(nearEndCnt == 0);
                }
                public bool Read(BinaryPSDReader r)
                {
                    this.ID = "";
                    while (true)
                    {
                        char c = r.ReadChar();
                        if (c == 0x0a)
                            break;
                        this.ID += c;
                    }
                    byte[] buffer = new byte[255];
                    int bufPos = 0;
                    int nearEndCnt = 0;
                    while (true)
                    {
                        byte b = r.ReadByte();
                        buffer[bufPos++] = b;
                        if (b == 0x2f)
                            break;
                        if (b <= 0x00)
                        {
                            nearEndCnt++;
                            if (nearEndCnt == 12)
                                break;
                        }
                        else
                            nearEndCnt = 0;
                    }

                    if (this.ID.Contains(" "))
                    {
                        int index = this.ID.IndexOf(" ");
                        this.Value = this.ID.Substring(index + 1);
                        this.ID = this.ID.Remove(index);
                    }

                    int endPos = bufPos - nearEndCnt - 1;
                    //See if it's only 0x09's:
                    for (int i = 0; i < endPos; i++)
                    {
                        if (buffer[i] != 0x09)
                        {
                            this.Data = Endogine.Serialization.ReadableBinary.CreateHexEditorString(buffer, 0, endPos);
                            break;
                        }
                    }

                    return (nearEndCnt == 0);
                }