# Global Metrics

path: .metrics.halstead.n1
old: 19.0
new: 20.0
path: .metrics.halstead.volume
old: 52843.87140175083
new: 3488.6399617499583
path: .metrics.halstead.bugs
old: 2.916674543419937
new: 0.5613819771700606
path: .metrics.halstead.difficulty
old: 15.488851351351352
new: 19.81132075471698
path: .metrics.halstead.level
old: 0.06456256679826379
new: 0.05047619047619048
path: .metrics.halstead.N1
old: 2596.0
new: 290.0
path: .metrics.halstead.purity_ratio
old: 3.1278009950727834
new: 1.5991962601628926
path: .metrics.halstead.effort
old: 818490.8689716455
new: 69114.565279952
path: .metrics.halstead.time
old: 45471.71494286919
new: 3839.6980711084448
path: .metrics.halstead.vocabulary
old: 1499.0
new: 126.0
path: .metrics.halstead.n2
old: 1480.0
new: 106.0
path: .metrics.halstead.length
old: 5009.0
new: 500.0
path: .metrics.halstead.N2
old: 2413.0
new: 210.0
path: .metrics.halstead.estimated_program_length
old: 15667.155184319572
new: 799.5981300814464
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 17.93037090322618
path: .metrics.mi.mi_sei
old: -69.61195665889596
new: 4.399605426958921
path: .metrics.mi.mi_original
old: -31.062091871646444
new: 30.660934244516767
path: .metrics.nom.functions
old: 0.0
new: 12.0
path: .metrics.nom.total
old: 0.0
new: 12.0
path: .metrics.nargs.average
old: null
new: 0.75
path: .metrics.nargs.sum
old: 0.0
new: 9.0
path: .metrics.cyclomatic.average
old: 2.1818181818181817
new: 1.0434782608695652
path: .metrics.cyclomatic.sum
old: 72.0
new: 24.0
path: .metrics.cognitive.sum
old: 37.0
new: 1.0
path: .metrics.cognitive.average
old: null
new: 0.08333333333333333
path: .metrics.loc.cloc
old: 1336.0
new: 67.0
path: .metrics.loc.sloc
old: 2864.0
new: 300.0
path: .metrics.loc.lloc
old: 3.0
new: 18.0
path: .metrics.loc.ploc
old: 1308.0
new: 138.0
path: .metrics.loc.blank
old: 220.0
new: 95.0
path: .metrics.nexits.sum
old: 0.0
new: 6.0
path: .metrics.nexits.average
old: null
new: 0.5

# Spaces Data

## Minimal test - lines (141, 246)

path: .spaces[5].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[5].metrics.cognitive.average
old: null
new: 0.125
path: .spaces[5].metrics.mi.mi_original
old: 113.96941655574688
new: 57.441802830837176
path: .spaces[5].metrics.mi.mi_sei
old: 127.9184323240276
new: 30.000216682361724
path: .spaces[5].metrics.mi.mi_visual_studio
old: 66.64878161154789
new: 33.591697561893085
path: .spaces[5].metrics.nargs.average
old: null
new: 0.375
path: .spaces[5].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[5].metrics.cyclomatic.sum
old: 2.0
new: 10.0
path: .spaces[5].metrics.cyclomatic.average
old: 1.0
new: 1.1111111111111112
path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 4.0
path: .spaces[5].metrics.nexits.average
old: null
new: 0.5
path: .spaces[5].metrics.halstead.time
old: 4.70606480109043
new: 1421.4643151417615
path: .spaces[5].metrics.halstead.volume
old: 56.47277761308516
new: 960.4488615822712
path: .spaces[5].metrics.halstead.estimated_program_length
old: 24.406371956566694
new: 191.15505477032977
path: .spaces[5].metrics.halstead.N1
old: 10.0
new: 103.0
path: .spaces[5].metrics.halstead.difficulty
old: 1.5
new: 26.64
path: .spaces[5].metrics.halstead.level
old: 0.6666666666666666
new: 0.03753753753753754
path: .spaces[5].metrics.halstead.n2
old: 7.0
new: 25.0
path: .spaces[5].metrics.halstead.N2
old: 7.0
new: 74.0
path: .spaces[5].metrics.halstead.effort
old: 84.70916641962773
new: 25586.35767255171
path: .spaces[5].metrics.halstead.bugs
old: 0.006429329504347988
new: 0.28943500614866496
path: .spaces[5].metrics.halstead.n1
old: 3.0
new: 18.0
path: .spaces[5].metrics.halstead.vocabulary
old: 10.0
new: 43.0
path: .spaces[5].metrics.halstead.length
old: 17.0
new: 177.0
path: .spaces[5].metrics.halstead.purity_ratio
old: 1.4356689386215702
new: 1.0799720608493206
path: .spaces[5].metrics.loc.sloc
old: 9.0
new: 106.0
path: .spaces[5].metrics.loc.lloc
old: 0.0
new: 11.0
path: .spaces[5].metrics.loc.ploc
old: 7.0
new: 46.0
path: .spaces[5].metrics.loc.blank
old: 0.0
new: 51.0
path: .spaces[5].metrics.loc.cloc
old: 3.0
new: 9.0
path: .spaces[5].metrics.nom.functions
old: 0.0
new: 8.0
path: .spaces[5].metrics.nom.total
old: 0.0
new: 8.0

### Code

    class RunningTimes {
     public:
      constexpr RunningTimes() = default;

      // Constructor with only a timestamp, useful when no measurements will be
      // taken.
      constexpr explicit RunningTimes(const mozilla::TimeStamp& aTimeStamp)
          : mPostMeasurementTimeStamp(aTimeStamp) {}

      constexpr void Clear() { *this = RunningTimes{}; }

      constexpr bool IsEmpty() const { return mKnownBits == 0; }

      // This should be called right after CPU measurements have been taken.
      void SetPostMeasurementTimeStamp(const mozilla::TimeStamp& aTimeStamp) {
        mPostMeasurementTimeStamp = aTimeStamp;
      }

      const mozilla::TimeStamp& PostMeasurementTimeStamp() const {
        return mPostMeasurementTimeStamp;
      }

      // Should be filled for any registered thread.

    #define RUNNING_TIME_MEMBER(index, name, unit, jsonProperty)          \
      constexpr bool Is##name##unit##Known() const {                      \
        return (mKnownBits & mGot##name##unit) != 0;                      \
      }                                                                   \
                                                                          \
      constexpr void Clear##name##unit() {                                \
        m##name##unit = 0;                                                \
        mKnownBits &= ~mGot##name##unit;                                  \
      }                                                                   \
                                                                          \
      constexpr void Reset##name##unit(uint64_t a##name##unit) {          \
        m##name##unit = a##name##unit;                                    \
        mKnownBits |= mGot##name##unit;                                   \
      }                                                                   \
                                                                          \
      constexpr void Set##name##unit(uint64_t a##name##unit) {            \
        MOZ_ASSERT(!Is##name##unit##Known(), #name #unit " already set"); \
        Reset##name##unit(a##name##unit);                                 \
      }                                                                   \
                                                                          \
      constexpr mozilla::Maybe Get##name##unit() const {        \
        if (Is##name##unit##Known()) {                                    \
          return mozilla::Some(m##name##unit);                            \
        }                                                                 \
        return mozilla::Nothing{};                                        \
      }

      PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_MEMBER)

    #undef RUNNING_TIME_MEMBER

      // Take values from another RunningTimes.
      RunningTimes& TakeFrom(RunningTimes& aOther) {
        if (!aOther.IsEmpty()) {
    #define RUNNING_TIME_TAKE(index, name, unit, jsonProperty)   \
      if (aOther.Is##name##unit##Known()) {                      \
        Set##name##unit(std::exchange(aOther.m##name##unit, 0)); \
      }

          PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_TAKE)

    #undef RUNNING_TIME_TAKE

          aOther.mKnownBits = 0;
        }
        return *this;
      }

      // Difference from `aBefore` to `this`. Any unknown makes the result unknown.
      // PostMeasurementTimeStamp set to `this` PostMeasurementTimeStamp, to keep
      // the most recent timestamp associated with the end of the interval over
      // which the difference applies.
      RunningTimes operator-(const RunningTimes& aBefore) const {
        RunningTimes diff;
        diff.mPostMeasurementTimeStamp = mPostMeasurementTimeStamp;
    #define RUNNING_TIME_SUB(index, name, unit, jsonProperty)           \
      if (Is##name##unit##Known() && aBefore.Is##name##unit##Known()) { \
        diff.Set##name##unit(m##name##unit - aBefore.m##name##unit);    \
      }

        PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_SUB)

    #undef RUNNING_TIME_SUB
        return diff;
      }

     private:
      friend mozilla::ProfileBufferEntryWriter::Serializer;
      friend mozilla::ProfileBufferEntryReader::Deserializer;

      mozilla::TimeStamp mPostMeasurementTimeStamp;

      uint32_t mKnownBits = 0u;

    #define RUNNING_TIME_MEMBER(index, name, unit, jsonProperty) \
      static constexpr uint32_t mGot##name##unit = 1u << index;  \
      uint64_t m##name##unit = 0;

      PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_MEMBER)

    #undef RUNNING_TIME_MEMBER
    };

## Minimal test - lines (249, 269)

path: .spaces[6].metrics.nargs.average
old: null
new: 1.5
path: .spaces[6].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[6].metrics.halstead.volume
old: 0.0
new: 320.0
path: .spaces[6].metrics.halstead.n1
old: 0.0
new: 14.0
path: .spaces[6].metrics.halstead.purity_ratio
old: null
new: 2.005650295855751
path: .spaces[6].metrics.halstead.N1
old: 0.0
new: 36.0
path: .spaces[6].metrics.halstead.time
old: 0.0
new: 193.58024691358025
path: .spaces[6].metrics.halstead.difficulty
old: 0.0
new: 10.88888888888889
path: .spaces[6].metrics.halstead.n2
old: 1.0
new: 18.0
path: .spaces[6].metrics.halstead.vocabulary
old: 1.0
new: 32.0
path: .spaces[6].metrics.halstead.effort
old: 0.0
new: 3484.4444444444443
path: .spaces[6].metrics.halstead.length
old: 1.0
new: 64.0
path: .spaces[6].metrics.halstead.estimated_program_length
old: null
new: 128.36161893476807
path: .spaces[6].metrics.halstead.N2
old: 1.0
new: 28.0
path: .spaces[6].metrics.halstead.bugs
old: 0.0
new: 0.07661276001857677
path: .spaces[6].metrics.halstead.level
old: null
new: 0.09183673469387754
path: .spaces[6].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[6].metrics.nexits.average
old: null
new: 0.5
path: .spaces[6].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[6].metrics.loc.lloc
old: 0.0
new: 3.0
path: .spaces[6].metrics.loc.blank
old: 0.0
new: 6.0
path: .spaces[6].metrics.loc.sloc
old: 1.0
new: 21.0
path: .spaces[6].metrics.loc.ploc
old: 1.0
new: 15.0
path: .spaces[6].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[6].metrics.nom.total
old: 0.0
new: 2.0
path: .spaces[6].metrics.nom.functions
old: 0.0
new: 2.0
path: .spaces[6].metrics.mi.mi_original
old: null
new: 90.99346733075294
path: .spaces[6].metrics.mi.mi_sei
old: null
new: 55.8804316575698
path: .spaces[6].metrics.mi.mi_visual_studio
old: null
new: 53.21255399459236

### Code

    struct mozilla::ProfileBufferEntryWriter::Serializer {
      static Length Bytes(const RunningTimes& aRunningTimes) {
        return ULEB128Size(aRunningTimes.mKnownBits) +
               mozilla::CountPopulation32(aRunningTimes.mKnownBits) *
                   sizeof(uint64_t);
      }

      static void Write(ProfileBufferEntryWriter& aEW,
                        const RunningTimes& aRunningTimes) {
        aEW.WriteULEB128(aRunningTimes.mKnownBits);

    #define RUNNING_TIME_SERIALIZE(index, name, unit, jsonProperty) \
      if (aRunningTimes.Is##name##unit##Known()) {                  \
        aEW.WriteObject(aRunningTimes.m##name##unit);               \
      }

        PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_SERIALIZE)

    #undef RUNNING_TIME_SERIALIZE
      }
    };

## Minimal test - lines (272, 298)

path: .spaces[7].metrics.nexits.average
old: null
new: 0.5
path: .spaces[7].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[7].metrics.nom.total
old: 0.0
new: 2.0
path: .spaces[7].metrics.nom.functions
old: 0.0
new: 2.0
path: .spaces[7].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[7].metrics.cyclomatic.sum
old: 1.0
new: 3.0
path: .spaces[7].metrics.halstead.length
old: 12.0
new: 62.0
path: .spaces[7].metrics.halstead.difficulty
old: 2.0
new: 10.5
path: .spaces[7].metrics.halstead.estimated_program_length
old: 19.60964047443681
new: 107.01955000865388
path: .spaces[7].metrics.halstead.purity_ratio
old: 1.6341367062030674
new: 1.7261217743331272
path: .spaces[7].metrics.halstead.time
old: 4.22656666858975
new: 173.86600301441666
path: .spaces[7].metrics.halstead.vocabulary
old: 9.0
new: 28.0
path: .spaces[7].metrics.halstead.volume
old: 38.039100017307746
new: 298.0560051675714
path: .spaces[7].metrics.halstead.effort
old: 76.07820003461549
new: 3129.5880542595
path: .spaces[7].metrics.halstead.N1
old: 7.0
new: 34.0
path: .spaces[7].metrics.halstead.n1
old: 4.0
new: 12.0
path: .spaces[7].metrics.halstead.n2
old: 5.0
new: 16.0
path: .spaces[7].metrics.halstead.bugs
old: 0.0059848356844364944
new: 0.07131871816861657
path: .spaces[7].metrics.halstead.level
old: 0.5
new: 0.09523809523809525
path: .spaces[7].metrics.halstead.N2
old: 5.0
new: 28.0
path: .spaces[7].metrics.nargs.average
old: null
new: 1.5
path: .spaces[7].metrics.nargs.sum
old: 0.0
new: 3.0
path: .spaces[7].metrics.loc.cloc
old: 2.0
new: 4.0
path: .spaces[7].metrics.loc.lloc
old: 0.0
new: 4.0
path: .spaces[7].metrics.loc.sloc
old: 6.0
new: 27.0
path: .spaces[7].metrics.loc.blank
old: 0.0
new: 8.0
path: .spaces[7].metrics.loc.ploc
old: 5.0
new: 15.0
path: .spaces[7].metrics.mi.mi_sei
old: 140.5892017250539
new: 78.61835097713342
path: .spaces[7].metrics.mi.mi_visual_studio
old: 71.82614081290335
new: 51.04770728733476
path: .spaces[7].metrics.mi.mi_original
old: 122.82270079006472
new: 87.29157946134245

### Code

    struct mozilla::ProfileBufferEntryReader::Deserializer {
      static void ReadInto(ProfileBufferEntryReader& aER,
                           RunningTimes& aRunningTimes) {
        aRunningTimes = Read(aER);
      }

      static RunningTimes Read(ProfileBufferEntryReader& aER) {
        // Start with empty running times, everything is cleared.
        RunningTimes times;

        // This sets all the bits into mKnownBits, we don't need to modify it
        // further.
        times.mKnownBits = aER.ReadULEB128();

        // For each member that should be known, read its value.
    #define RUNNING_TIME_DESERIALIZE(index, name, unit, jsonProperty) \
      if (times.Is##name##unit##Known()) {                            \
        aER.ReadIntoObject(times.m##name##unit);                      \
      }

        PROFILER_FOR_EACH_RUNNING_TIME(RUNNING_TIME_DESERIALIZE)

    #undef RUNNING_TIME_DESERIALIZE

        return times;
      }
    };

## Minimal test - lines (77, 79)

path: .spaces[3].metrics.mi.mi_visual_studio
old: 51.635128354665085
new: 80.40121985172942
path: .spaces[3].metrics.mi.mi_sei
old: 77.00114602066648
new: 122.75146225357946
path: .spaces[3].metrics.mi.mi_original
old: 88.29606948647731
new: 137.4860859464573
path: .spaces[3].metrics.loc.sloc
old: 26.0
new: 3.0
path: .spaces[3].metrics.loc.blank
old: 2.0
new: 0.0
path: .spaces[3].metrics.loc.ploc
old: 21.0
new: 3.0
path: .spaces[3].metrics.loc.cloc
old: 3.0
new: 0.0
path: .spaces[3].metrics.halstead.bugs
old: 0.02463833887226839
new: 0.004471319041702271
path: .spaces[3].metrics.halstead.volume
old: 288.85263754543286
new: 19.651484454403228
path: .spaces[3].metrics.halstead.vocabulary
old: 24.0
new: 7.0
path: .spaces[3].metrics.halstead.N1
old: 41.0
new: 5.0
path: .spaces[3].metrics.halstead.estimated_program_length
old: 94.43856189774723
new: 13.60964047443681
path: .spaces[3].metrics.halstead.length
old: 63.0
new: 7.0
path: .spaces[3].metrics.halstead.n1
old: 4.0
new: 5.0
path: .spaces[3].metrics.halstead.purity_ratio
old: 1.4990247920277342
new: 1.944234353490973
path: .spaces[3].metrics.halstead.effort
old: 635.4758025999523
new: 49.12871113600807
path: .spaces[3].metrics.halstead.time
old: 35.30421125555291
new: 2.7293728408893374
path: .spaces[3].metrics.halstead.n2
old: 20.0
new: 2.0
path: .spaces[3].metrics.halstead.difficulty
old: 2.2
new: 2.5
path: .spaces[3].metrics.halstead.level
old: 0.4545454545454546
new: 0.4
path: .spaces[3].metrics.halstead.N2
old: 22.0
new: 2.0
path: .spaces[3].metrics.cyclomatic.sum
old: 2.0
new: 1.0

### Code

    struct PlatformDataDestructor {
      void operator()(PlatformData*);
    };

## Minimal test - lines (85, 87)

path: .spaces[4].metrics.mi.mi_original
old: null
new: 141.92938490684145
path: .spaces[4].metrics.mi.mi_visual_studio
old: null
new: 82.99964029639851
path: .spaces[4].metrics.mi.mi_sei
old: null
new: 129.26360748831726
path: .spaces[4].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[4].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[4].metrics.cyclomatic.sum
old: 1.0
new: 2.0
path: .spaces[4].metrics.halstead.volume
old: 0.0
new: 8.0
path: .spaces[4].metrics.halstead.time
old: 0.0
new: 0.4444444444444444
path: .spaces[4].metrics.halstead.difficulty
old: 0.0
new: 1.0
path: .spaces[4].metrics.halstead.level
old: null
new: 1.0
path: .spaces[4].metrics.halstead.effort
old: 0.0
new: 8.0
path: .spaces[4].metrics.halstead.N2
old: 1.0
new: 2.0
path: .spaces[4].metrics.halstead.length
old: 1.0
new: 4.0
path: .spaces[4].metrics.halstead.vocabulary
old: 1.0
new: 4.0
path: .spaces[4].metrics.halstead.N1
old: 0.0
new: 2.0
path: .spaces[4].metrics.halstead.purity_ratio
old: null
new: 1.0
path: .spaces[4].metrics.halstead.estimated_program_length
old: null
new: 4.0
path: .spaces[4].metrics.halstead.bugs
old: 0.0
new: 0.0013333333333333333
path: .spaces[4].metrics.halstead.n1
old: 0.0
new: 2.0
path: .spaces[4].metrics.halstead.n2
old: 1.0
new: 2.0

### Code

    namespace mozilla {
    class JSONWriter;
    }

## Minimal test - lines (143, 143)

path: .spaces[5].spaces[0].metrics.nexits.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.nargs.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.cognitive.average
old: null
new: 0.0
path: .spaces[5].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 92.40962204246613
path: .spaces[5].spaces[0].metrics.mi.mi_sei
old: null
new: 152.37629276875444
path: .spaces[5].spaces[0].metrics.mi.mi_original
old: null
new: 158.02045369261705
path: .spaces[5].spaces[0].metrics.nom.functions
old: 0.0
new: 1.0
path: .spaces[5].spaces[0].metrics.nom.total
old: 0.0
new: 1.0
path: .spaces[5].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.6
path: .spaces[5].spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 5.0
path: .spaces[5].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.002712967490108627
path: .spaces[5].spaces[0].metrics.halstead.n1
old: 0.0
new: 4.0
path: .spaces[5].spaces[0].metrics.halstead.time
old: 0.0
new: 1.289960052715201
path: .spaces[5].spaces[0].metrics.halstead.difficulty
old: 0.0
new: 2.0
path: .spaces[5].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 8.0
path: .spaces[5].spaces[0].metrics.halstead.level
old: null
new: 0.5
path: .spaces[5].spaces[0].metrics.halstead.effort
old: 0.0
new: 23.21928094887362
path: .spaces[5].spaces[0].metrics.halstead.volume
old: 0.0
new: 11.60964047443681
path: .spaces[5].spaces[0].metrics.halstead.N1
old: 0.0
new: 4.0
path: .spaces[5].spaces[0].metrics.halstead.length
old: 1.0
new: 5.0

### Code

      constexpr RunningTimes() = default;

## Minimal test - lines (48, 50)

path: .spaces[1].metrics.mi.mi_original
old: null
new: 141.92938490684145
path: .spaces[1].metrics.mi.mi_visual_studio
old: null
new: 82.99964029639851
path: .spaces[1].metrics.mi.mi_sei
old: null
new: 129.26360748831726
path: .spaces[1].metrics.halstead.level
old: null
new: 1.0
path: .spaces[1].metrics.halstead.effort
old: 0.0
new: 8.0
path: .spaces[1].metrics.halstead.N1
old: 0.0
new: 2.0
path: .spaces[1].metrics.halstead.N2
old: 1.0
new: 2.0
path: .spaces[1].metrics.halstead.length
old: 1.0
new: 4.0
path: .spaces[1].metrics.halstead.n1
old: 0.0
new: 2.0
path: .spaces[1].metrics.halstead.vocabulary
old: 1.0
new: 4.0
path: .spaces[1].metrics.halstead.bugs
old: 0.0
new: 0.0013333333333333333
path: .spaces[1].metrics.halstead.difficulty
old: 0.0
new: 1.0
path: .spaces[1].metrics.halstead.n2
old: 1.0
new: 2.0
path: .spaces[1].metrics.halstead.volume
old: 0.0
new: 8.0
path: .spaces[1].metrics.halstead.estimated_program_length
old: null
new: 4.0
path: .spaces[1].metrics.halstead.purity_ratio
old: null
new: 1.0
path: .spaces[1].metrics.halstead.time
old: 0.0
new: 0.4444444444444444
path: .spaces[1].metrics.loc.sloc
old: 1.0
new: 3.0
path: .spaces[1].metrics.loc.ploc
old: 1.0
new: 3.0
path: .spaces[1].metrics.cyclomatic.sum
old: 1.0
new: 2.0

### Code

    namespace mozilla {
    struct SymbolTable;
    }

## Minimal test - lines (73, 73)

path: .spaces[2].metrics.mi.mi_sei
old: 88.3635755463951
new: null
path: .spaces[2].metrics.mi.mi_visual_studio
old: 46.72833471160905
new: null
path: .spaces[2].metrics.mi.mi_original
old: 79.90545235685147
new: null
path: .spaces[2].metrics.halstead.n2
old: 25.0
new: 1.0
path: .spaces[2].metrics.halstead.length
old: 57.0
new: 1.0
path: .spaces[2].metrics.halstead.volume
old: 276.9049167222716
new: 0.0
path: .spaces[2].metrics.halstead.n1
old: 4.0
new: 0.0
path: .spaces[2].metrics.halstead.time
old: 33.22859000667259
new: 0.0
path: .spaces[2].metrics.halstead.bugs
old: 0.023662921199721396
new: 0.0
path: .spaces[2].metrics.halstead.difficulty
old: 2.16
new: 0.0
path: .spaces[2].metrics.halstead.estimated_program_length
old: 124.09640474436812
new: null
path: .spaces[2].metrics.halstead.N1
old: 30.0
new: 0.0
path: .spaces[2].metrics.halstead.effort
old: 598.1146201201067
new: 0.0
path: .spaces[2].metrics.halstead.purity_ratio
old: 2.1771299077959316
new: null
path: .spaces[2].metrics.halstead.level
old: 0.4629629629629629
new: null
path: .spaces[2].metrics.halstead.vocabulary
old: 29.0
new: 1.0
path: .spaces[2].metrics.halstead.N2
old: 27.0
new: 1.0
path: .spaces[2].metrics.cyclomatic.sum
old: 4.0
new: 1.0
path: .spaces[2].metrics.loc.ploc
old: 24.0
new: 1.0
path: .spaces[2].metrics.loc.sloc
old: 43.0
new: 1.0
path: .spaces[2].metrics.loc.cloc
old: 31.0
new: 0.0

### Code

    class PlatformData;