// Path: tracing-api/src/main/java/net/dubboclub/tracing/api/Span.java
// public class Span implements Serializable {
//     private String id;
//     private String parentId;
//     private String traceId;
//     private String name;
//     private String serviceName;
//     private List<Annotation> annotationList;
//     private List<BinaryAnnotation> binaryAnnotationList;
// 
//     public Span() {
//         this.annotationList = new LinkedList<Annotation>();
//         this.binaryAnnotationList = new LinkedList<BinaryAnnotation>();
//     }
// 
//     public void addAnnotation(Annotation annotation) {
//         annotationList.add(annotation);
//     }
// 
//     public void addAnnotation(BinaryAnnotation binaryAnnotation) {
//         binaryAnnotationList.add(binaryAnnotation);
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getParentId() {
//         return parentId;
//     }
// 
//     public void setParentId(String parentId) {
//         this.parentId = parentId;
//     }
// 
//     public String getTraceId() {
//         return traceId;
//     }
// 
//     public void setTraceId(String traceId) {
//         this.traceId = traceId;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getServiceName() {
//         return serviceName;
//     }
// 
//     public void setServiceName(String serviceName) {
//         this.serviceName = serviceName;
//     }
// 
//     public List<Annotation> getAnnotationList() {
//         return annotationList;
//     }
// 
//     public void setAnnotationList(List<Annotation> annotationList) {
//         this.annotationList = annotationList;
//     }
// 
//     public List<BinaryAnnotation> getBinaryAnnotationList() {
//         return binaryAnnotationList;
//     }
// 
//     public void setBinaryAnnotationList(List<BinaryAnnotation> binaryAnnotationList) {
//         this.binaryAnnotationList = binaryAnnotationList;
//     }
// 
//     @Override
//     public String toString() {
//         return "Span{" +
//                 "id='" + id + '\'' +
//                 ", parentId='" + parentId + '\'' +
//                 ", traceId='" + traceId + '\'' +
//                 ", name='" + name + '\'' +
//                 ", serviceName='" + serviceName + '\'' +
//                 ", annotationList=" + annotationList +
//                 ", binaryAnnotationList=" + binaryAnnotationList +
//                 '}';
//     }
// }


import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import net.dubboclub.tracing.api.Span;
import java.util.EmptyStackException;
import java.util.Stack;
    };

    static String getTraceId(){
       return localTraceId.get();
    }

    static void setTraceId(String traceId){
        localTraceId.set(traceId);
    }

    static void removeTraceId(){
        localTraceId.remove();
    }

    static boolean isSample(){
        return localSample.get();
    }

    static void setLocalSample(boolean isSample){
        localSample.set(isSample);
    }

    static void removeSample(){
        localSample.remove();
    }

    static void setSpan(Span span) {
        ContextHolder.localSpan.get().push(span);
    }

// Path: tracing-api/src/main/java/net/dubboclub/tracing/api/Span.java
// public class Span implements Serializable {
//     private String id;
//     private String parentId;
//     private String traceId;
//     private String name;
//     private String serviceName;
//     private List<Annotation> annotationList;
//     private List<BinaryAnnotation> binaryAnnotationList;
// 
//     public Span() {
//         this.annotationList = new LinkedList<Annotation>();
//         this.binaryAnnotationList = new LinkedList<BinaryAnnotation>();
//     }
// 
//     public void addAnnotation(Annotation annotation) {
//         annotationList.add(annotation);
//     }
// 
//     public void addAnnotation(BinaryAnnotation binaryAnnotation) {
//         binaryAnnotationList.add(binaryAnnotation);
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getParentId() {
//         return parentId;
//     }
// 
//     public void setParentId(String parentId) {
//         this.parentId = parentId;
//     }
// 
//     public String getTraceId() {
//         return traceId;
//     }
// 
//     public void setTraceId(String traceId) {
//         this.traceId = traceId;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getServiceName() {
//         return serviceName;
//     }
// 
//     public void setServiceName(String serviceName) {
//         this.serviceName = serviceName;
//     }
// 
//     public List<Annotation> getAnnotationList() {
//         return annotationList;
//     }
// 
//     public void setAnnotationList(List<Annotation> annotationList) {
//         this.annotationList = annotationList;
//     }
// 
//     public List<BinaryAnnotation> getBinaryAnnotationList() {
//         return binaryAnnotationList;
//     }
// 
//     public void setBinaryAnnotationList(List<BinaryAnnotation> binaryAnnotationList) {
//         this.binaryAnnotationList = binaryAnnotationList;
//     }
// 
//     @Override
//     public String toString() {
//         return "Span{" +
//                 "id='" + id + '\'' +
//                 ", parentId='" + parentId + '\'' +
//                 ", traceId='" + traceId + '\'' +
//                 ", name='" + name + '\'' +
//                 ", serviceName='" + serviceName + '\'' +
//                 ", annotationList=" + annotationList +
//                 ", binaryAnnotationList=" + binaryAnnotationList +
//                 '}';
//     }
// }


// Path: tracing-client/src/main/java/net/dubboclub/tracing/client/ContextHolder.java
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import net.dubboclub.tracing.api.Span;
import java.util.EmptyStackException;
import java.util.Stack;

    };

    static String getTraceId(){
       return localTraceId.get();
    }

    static void setTraceId(String traceId){
        localTraceId.set(traceId);
    }

    static void removeTraceId(){
        localTraceId.remove();
    }

    static boolean isSample(){
        return localSample.get();
    }

    static void setLocalSample(boolean isSample){
        localSample.set(isSample);
    }

    static void removeSample(){
        localSample.remove();
    }

    static void setSpan(Span span) {
        ContextHolder.localSpan.get().push(span);
    }

    static Span getSpan() {