package io.grpc.contrib.perfmark;

final class Marker {

    static final Marker NONE = new Marker(null, -1, null, null);

    private final String fileName;
    private final int lineNumber;
    private final String className;
    private final String functionName;

    private Marker(String fileName, int lineNumber, String className, String functionName) {
        this.fileName = fileName;
        this.lineNumber = lineNumber;
        this.className = className;
        this.functionName = functionName;
    }

    static Marker create() {
        // TODO(carl-mastrangelo): implement
        StackTraceElement[] st = new RuntimeException().fillInStackTrace().getStackTrace();
        if (st.length > 1) {
            return new Marker(st[1].getFileName(), st[1].getLineNumber(), st[1].getClassName(), st[1].getMethodName());
        } else {
            return NONE;
        }
    }
}

@@ -50,18 +50,16 @@
 rker %7B%0A%0A
-  
   static
@@ -114,18 +114,16 @@
 null);%0A%0A
-  
   privat
@@ -143,26 +143,24 @@
 g fileName;%0A
-  
   private fi
@@ -179,18 +179,16 @@
 Number;%0A
-  
   privat
@@ -213,18 +213,16 @@
 ssName;%0A
-  
   privat
@@ -251,18 +251,16 @@
 nName;%0A%0A
-  
   privat
@@ -338,28 +338,24 @@
 tionName) %7B%0A
-    
     this.fil
@@ -372,28 +372,24 @@
 leName;%0A    
-  
-  
 this.lineNum
@@ -406,28 +406,24 @@
 Number;%0A    
-   
- 
 this.classNa
@@ -438,20 +438,16 @@
 ssName;%0A
-    
     this
@@ -482,15 +482,11 @@
 ;%0A  
- 
- 
 %7D%0A%0A
-  
   st
@@ -512,20 +512,16 @@
 ) %7B%0A    
-  
-  
 // TODO(
@@ -549,20 +549,16 @@
 plement%0A
-    
     Stac
@@ -637,20 +637,16 @@
 race();%0A
-    
     if (
@@ -664,30 +664,24 @@
  1) %7B%0A      
- 
-     
 return new M
@@ -780,20 +780,16 @@
 ));%0A    
-    
 %7D else %7B
@@ -791,24 +791,113 @@
 lse %7B%0A      
+return NONE;%0A    %7D%0A  %7D%0A%0A  @Override%0A  public String toString() %7B%0A    if (this == NONE) %7B%0A
       return
@@ -901,26 +901,58 @@
 urn 
+%22Marker.
 NONE
+%22
 ;%0A    
+%7D%0A
     
-%7D%0A  
+return super.toString();%0A
   %7D%0A

add a dummy Marker tostring