protected function ParseBody()
 {
     $pp = $this->pawnParser;
     $body = '';
     $braceLevel = 0;
     $inString = false;
     $stringType = 0;
     // " = 1, ' = 2
     while (($char = $pp->ReadChar(false)) !== false) {
         if (PawnComment::IsPawnElement($pp)) {
             $pp->Jump(-1);
             $comment = new PawnComment($pp);
             $comment->Parse();
             $body .= $comment->GetRaw();
             continue;
         }
         if ($braceLevel == 0) {
             if ($char == ';') {
                 break;
             }
         }
         if ($char == '"') {
             if ($inString) {
                 if ($stringType == 1) {
                     $inString = false;
                 }
             } else {
                 $inString = true;
                 $stringType = 1;
             }
         } else {
             if ($char == '\'') {
                 if ($inString) {
                     if ($stringType == 2) {
                         $inString = false;
                     }
                 } else {
                     $inString = true;
                     $stringType = 2;
                 }
             }
         }
         if ($char == '{' && !$inString) {
             if ($braceLevel == 0) {
                 $braceLevel++;
                 $body = '';
                 $this->bodyLineStart = $pp->GetLine();
                 continue;
             }
             $braceLevel++;
         } else {
             if ($char == '}' && !$inString) {
                 $braceLevel--;
                 if ($braceLevel === 0) {
                     break;
                 }
             }
         }
         $body .= $char;
     }
     $this->body = $body;
     $this->lineEnd = $pp->GetLine();
 }