constructor({ source, tokens }) {
    Object.defineProperties(this, {
      source: { value: source },
      tokens: { value: tokens, writable: true },
      parent: { value: null, writable: true },
      this: { value: this }, // useful when escaping from proxy
    });
  }
@param {object} initializer
@param {Base["source"]} initializer.source
@param {Base["tokens"]} initializer.tokens