code: function InstanaSpan(name) {
    // properties that part of our span model
    this.t = undefined;
    this.s = undefined;
    this.p = undefined;
    this.n = name;
    this.k = undefined;
    if (processIdentityProvider && typeof processIdentityProvider.getFrom === 'function') {
      this.f = processIdentityProvider.getFrom();
    }
    this.async = false;
    this.error = false;
    this.ec = 0;
    this.ts = Date.now();
    this.ta = 'node';
    this.d = 0;
    this.stack = [];
    this.data = undefined;
  
    // properties used within the collector that should not be transmitted to the agent/backend
    // NOTE: If you add a new property, make sure that it is not enumerable, as it may otherwise be transmitted
    // to the backend!
    Object.defineProperty(this, 'cleanupFunctions', {
      value: [],
      writable: false,
      enumerable: false
    });
    Object.defineProperty(this, 'transmitted', {
      value: false,
      writable: true,
      enumerable: false
    });
    Object.defineProperty(this, 'manualEndMode', {
      value: false,
      writable: true,
      enumerable: false
    });
  }
docs: /*
  Instead of creating a span object via {}, we use new InstanaSpan().
  This will support better debugging, especially in cases where we need
  to analyse heap dumps.
  
  Furthermore, it allows us to add CLS cleanup logic to the span and to
  manipulate JSON serialization logic.