text: 'use strict';
  
  function resolveEnd(end, offset, reqSpace, onError) {
      let comment = '';
      if (end) {
          let hasSpace = false;
          let sep = '';
          for (const token of end) {
              const { source, type } = token;
              switch (type) {
                  case 'space':
                      hasSpace = true;
                      break;
                  case 'comment': {
                      if (reqSpace && !hasSpace)
                          onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
                      const cb = source.substring(1) || ' ';
                      if (!comment)
                          comment = cb;
                      else
                          comment += sep + cb;
                      sep = '';
                      break;
                  }
                  case 'newline':
                      if (comment)
                          sep += source;
                      hasSpace = true;
                      break;
                  default:
                      onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);
              }
              offset += source.length;
          }
      }
      return { comment, offset };
  }
  
  exports.resolveEnd = resolveEnd;
  