whole_func_string: function() {
      // @fixme : check if out of text limits
      if (
        this._input.substring(
          this.offset - 1,
          this.offset - 1 + this.heredoc_label.length
        ) === this.heredoc_label
      ) {
        const ch = this._input[this.offset - 1 + this.heredoc_label.length];
        if (ch === "\n" || ch === "\r" || ch === ";") {
          return true;
        }
      }
      return false;
    }
func_code_string: function() {
      // @fixme : check if out of text limits
      if (
        this._input.substring(
          this.offset - 1,
          this.offset - 1 + this.heredoc_label.length
        ) === this.heredoc_label
      ) {
        const ch = this._input[this.offset - 1 + this.heredoc_label.length];
        if (ch === "\n" || ch === "\r" || ch === ";") {
          return true;
        }
      }
      return false;
    }
func_documentation_string: check if its a DOC end sequence