public class org.terracotta.statistics.registry.Statistic<T extends java.io.Serializable> implements java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.terracotta.statistics.registry.Statistic
  super_class: java.lang.Object
{
  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private final org.terracotta.statistics.StatisticType type;
    descriptor: Lorg/terracotta/statistics/StatisticType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.terracotta.statistics.Sample<T>> samples;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/terracotta/statistics/Sample<TT;>;>;

  public void <init>(org.terracotta.statistics.StatisticType);
    descriptor: (Lorg/terracotta/statistics/StatisticType;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.terracotta.statistics.registry.Statistic this
        start local 1 // org.terracotta.statistics.StatisticType type
         0: .line 42
            aload 0 /* this */
            aload 1 /* type */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            invokespecial org.terracotta.statistics.registry.Statistic.<init>:(Lorg/terracotta/statistics/StatisticType;Ljava/util/List;)V
         1: .line 43
            return
        end local 1 // org.terracotta.statistics.StatisticType type
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
            0    2     1  type  Lorg/terracotta/statistics/StatisticType;
    MethodParameters:
      Name  Flags
      type  

  public void <init>(org.terracotta.statistics.StatisticType, org.terracotta.statistics.Sample<T>);
    descriptor: (Lorg/terracotta/statistics/StatisticType;Lorg/terracotta/statistics/Sample;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.terracotta.statistics.registry.Statistic this
        start local 1 // org.terracotta.statistics.StatisticType type
        start local 2 // org.terracotta.statistics.Sample sample
         0: .line 46
            aload 0 /* this */
            aload 1 /* type */
            aload 2 /* sample */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokespecial org.terracotta.statistics.registry.Statistic.<init>:(Lorg/terracotta/statistics/StatisticType;Ljava/util/List;)V
         1: .line 47
            return
        end local 2 // org.terracotta.statistics.Sample sample
        end local 1 // org.terracotta.statistics.StatisticType type
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
            0    2     1    type  Lorg/terracotta/statistics/StatisticType;
            0    2     2  sample  Lorg/terracotta/statistics/Sample<TT;>;
    Signature: (Lorg/terracotta/statistics/StatisticType;Lorg/terracotta/statistics/Sample<TT;>;)V
    MethodParameters:
        Name  Flags
      type    
      sample  

  public void <init>(org.terracotta.statistics.StatisticType, java.util.List<org.terracotta.statistics.Sample<T>>);
    descriptor: (Lorg/terracotta/statistics/StatisticType;Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.terracotta.statistics.registry.Statistic this
        start local 1 // org.terracotta.statistics.StatisticType type
        start local 2 // java.util.List samples
         0: .line 49
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 50
            aload 0 /* this */
            aload 1 /* type */
            putfield org.terracotta.statistics.registry.Statistic.type:Lorg/terracotta/statistics/StatisticType;
         2: .line 51
            aload 0 /* this */
            aload 2 /* samples */
            putfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
         3: .line 52
            return
        end local 2 // java.util.List samples
        end local 1 // org.terracotta.statistics.StatisticType type
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
            0    4     1     type  Lorg/terracotta/statistics/StatisticType;
            0    4     2  samples  Ljava/util/List<Lorg/terracotta/statistics/Sample<TT;>;>;
    Signature: (Lorg/terracotta/statistics/StatisticType;Ljava/util/List<Lorg/terracotta/statistics/Sample<TT;>;>;)V
    MethodParameters:
         Name  Flags
      type     
      samples  

  public org.terracotta.statistics.StatisticType getType();
    descriptor: ()Lorg/terracotta/statistics/StatisticType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 55
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.type:Lorg/terracotta/statistics/StatisticType;
            areturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;

  public boolean isEmpty();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 59
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ireturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;

  public java.util.List<org.terracotta.statistics.Sample<T>> getSamples();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 63
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            areturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
    Signature: ()Ljava/util/List<Lorg/terracotta/statistics/Sample<TT;>;>;

  public java.util.Optional<T> getLatestSampleValue();
    descriptor: ()Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 67
            aload 0 /* this */
            invokevirtual org.terracotta.statistics.registry.Statistic.getLatestSample:()Ljava/util/Optional;
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/terracotta/statistics/Sample.getSample()Ljava/io/Serializable; (5)
                  (Lorg/terracotta/statistics/Sample;)Ljava/io/Serializable;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
            areturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
    Signature: ()Ljava/util/Optional<TT;>;

  public java.util.Optional<org.terracotta.statistics.Sample<T>> getLatestSample();
    descriptor: ()Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 71
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 1
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.terracotta.statistics.Sample
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
      StackMap locals:
      StackMap stack: java.util.Optional
         2: areturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;
    Signature: ()Ljava/util/Optional<Lorg/terracotta/statistics/Sample<TT;>;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.registry.Statistic this
         0: .line 76
            new java.lang.StringBuilder
            dup
            ldc "Statistic{type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 77
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.type:Lorg/terracotta/statistics/StatisticType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         2: .line 78
            ldc ", samples="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.terracotta.statistics.registry.Statistic.samples:Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 79
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         4: .line 76
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.terracotta.statistics.registry.Statistic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/terracotta/statistics/registry/Statistic<TT;>;

  static <T extends java.io.Serializable> org.terracotta.statistics.registry.Statistic<T> extract(org.terracotta.statistics.ValueStatistic<T>, long, long);
    descriptor: (Lorg/terracotta/statistics/ValueStatistic;JJ)Lorg/terracotta/statistics/registry/Statistic;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=6, args_size=3
        start local 0 // org.terracotta.statistics.ValueStatistic valueStatistic
        start local 1 // long sinceMillis
        start local 3 // long now
         0: .line 84
            aload 0 /* valueStatistic */
            instanceof org.terracotta.statistics.SampledStatistic
            ifeq 8
         1: .line 85
            new org.terracotta.statistics.registry.Statistic
            dup
         2: .line 86
            aload 0 /* valueStatistic */
            invokeinterface org.terracotta.statistics.ValueStatistic.type:()Lorg/terracotta/statistics/StatisticType;
         3: .line 87
            aload 0 /* valueStatistic */
            checkcast org.terracotta.statistics.SampledStatistic
            lload 1 /* sinceMillis */
            invokeinterface org.terracotta.statistics.SampledStatistic.history:(J)Ljava/util/List;
         4: .line 88
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         5: .line 89
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/terracotta/statistics/registry/Statistic.lambda$1(Lorg/terracotta/statistics/Sample;)Z (6)
                  (Lorg/terracotta/statistics/Sample;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         6: .line 90
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
         7: .line 85
            invokespecial org.terracotta.statistics.registry.Statistic.<init>:(Lorg/terracotta/statistics/StatisticType;Ljava/util/List;)V
            areturn
         8: .line 93
      StackMap locals:
      StackMap stack:
            lload 1 /* sinceMillis */
            lload 3 /* now */
            lcmp
            ifgt 12
         9: .line 94
            aload 0 /* valueStatistic */
            invokeinterface org.terracotta.statistics.ValueStatistic.value:()Ljava/io/Serializable;
            astore 5 /* value */
        start local 5 // java.io.Serializable value
        10: .line 95
            aload 5 /* value */
            invokestatic org.terracotta.statistics.registry.Statistic.accepted:(Ljava/io/Serializable;)Z
            ifeq 12
        11: .line 96
            new org.terracotta.statistics.registry.Statistic
            dup
            aload 0 /* valueStatistic */
            invokeinterface org.terracotta.statistics.ValueStatistic.type:()Lorg/terracotta/statistics/StatisticType;
            new org.terracotta.statistics.Sample
            dup
            lload 3 /* now */
            aload 5 /* value */
            invokespecial org.terracotta.statistics.Sample.<init>:(JLjava/io/Serializable;)V
            invokespecial org.terracotta.statistics.registry.Statistic.<init>:(Lorg/terracotta/statistics/StatisticType;Lorg/terracotta/statistics/Sample;)V
            areturn
        end local 5 // java.io.Serializable value
        12: .line 100
      StackMap locals:
      StackMap stack:
            new org.terracotta.statistics.registry.Statistic
            dup
            aload 0 /* valueStatistic */
            invokeinterface org.terracotta.statistics.ValueStatistic.type:()Lorg/terracotta/statistics/StatisticType;
            invokespecial org.terracotta.statistics.registry.Statistic.<init>:(Lorg/terracotta/statistics/StatisticType;)V
            areturn
        end local 3 // long now
        end local 1 // long sinceMillis
        end local 0 // org.terracotta.statistics.ValueStatistic valueStatistic
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0  valueStatistic  Lorg/terracotta/statistics/ValueStatistic<TT;>;
            0   13     1     sinceMillis  J
            0   13     3             now  J
           10   12     5           value  TT;
    Signature: <T::Ljava/io/Serializable;>(Lorg/terracotta/statistics/ValueStatistic<TT;>;JJ)Lorg/terracotta/statistics/registry/Statistic<TT;>;
    MethodParameters:
                Name  Flags
      valueStatistic  
      sinceMillis     
      now             

  private static <T extends java.io.Serializable> boolean accepted();
    descriptor: (Ljava/io/Serializable;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.Serializable sample
         0: .line 106
            aload 0 /* sample */
            ifnull 2
            aload 0 /* sample */
            instanceof org.terracotta.statistics.Table
            ifeq 1
            aload 0 /* sample */
            checkcast org.terracotta.statistics.Table
            invokevirtual org.terracotta.statistics.Table.isEmpty:()Z
            ifne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.io.Serializable sample
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  sample  TT;
    Signature: <T::Ljava/io/Serializable;>(TT;)Z
    MethodParameters:
        Name  Flags
      sample  

  private static boolean lambda$1(org.terracotta.statistics.Sample);
    descriptor: (Lorg/terracotta/statistics/Sample;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.terracotta.statistics.Sample s
         0: .line 89
            aload 0 /* s */
            invokevirtual org.terracotta.statistics.Sample.getSample:()Ljava/io/Serializable;
            invokestatic org.terracotta.statistics.registry.Statistic.accepted:(Ljava/io/Serializable;)Z
            ireturn
        end local 0 // org.terracotta.statistics.Sample s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Lorg/terracotta/statistics/Sample<TT;>;
}
Signature: <T::Ljava/io/Serializable;>Ljava/lang/Object;Ljava/io/Serializable;
SourceFile: "Statistic.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles