// Path: src/main/java/com/stackify/api/ErrorItem.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class ErrorItem {
// 
//     /**
//      * The error message
//      */
//     @Setter
//     @JsonProperty("Message")
//     private String message;
// 
//     /**
//      * The error's class name
//      */
//     @JsonProperty("ErrorType")
//     private String errorType;
// 
//     /**
//      * The error type code
//      */
//     @JsonProperty("ErrorTypeCode")
//     private String errorTypeCode;
// 
//     /**
//      * Custom data for the error
//      */
//     @JsonProperty("Data")
//     private Map<String, String> data;
// 
//     /**
//      * The method name
//      */
//     @JsonProperty("SourceMethod")
//     private String sourceMethod;
// 
//     /**
//      * The stack trace
//      */
//     @JsonProperty("StackTrace")
//     private List<TraceFrame> stackTrace;
// 
//     /**
//      * The cause of this error
//      */
//     @JsonProperty("InnerError")
//     private ErrorItem innerError;
// 
// }
// 
// Path: src/main/java/com/stackify/api/TraceFrame.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class TraceFrame {
// 
//     /**
//      * The file name
//      */
//     @JsonProperty("CodeFileName")
//     private String codeFileName;
// 
//     /**
//      * The line number
//      */
//     @JsonProperty("LineNum")
//     private Integer lineNum;
// 
//     /**
//      * The method name
//      */
//     @JsonProperty("Method")
//     private String method;
// 
// }


import java.util.ArrayList;
import java.util.List;
import com.stackify.api.ErrorItem;
import com.stackify.api.TraceFrame;
	 */
	private static String toErrorItemMessage(final String logMessage, final String throwableMessage) {
		
		StringBuilder sb = new StringBuilder();
				
		if ((throwableMessage != null) && (!throwableMessage.isEmpty())) {
			sb.append(throwableMessage);
			
			if ((logMessage != null) && (!logMessage.isEmpty())) {
				sb.append(" (");
				sb.append(logMessage);
				sb.append(")");
			}			
		} else {
			sb.append(logMessage);
		}

		return sb.toString();
	}
	
	/**
	 * Create an error item from a simple log message (without an explicit exception)
	 * @param logMessage The log message
	 * @param className The class that logged the message
	 * @param methodName The method that logged the message
	 * @param lineNumber The line number that logged the message
	 * @return The error item
	 */
	public static ErrorItem toErrorItem(final String logMessage, final String className, final String methodName, final int lineNumber) {
		
// Path: src/main/java/com/stackify/api/ErrorItem.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class ErrorItem {
// 
//     /**
//      * The error message
//      */
//     @Setter
//     @JsonProperty("Message")
//     private String message;
// 
//     /**
//      * The error's class name
//      */
//     @JsonProperty("ErrorType")
//     private String errorType;
// 
//     /**
//      * The error type code
//      */
//     @JsonProperty("ErrorTypeCode")
//     private String errorTypeCode;
// 
//     /**
//      * Custom data for the error
//      */
//     @JsonProperty("Data")
//     private Map<String, String> data;
// 
//     /**
//      * The method name
//      */
//     @JsonProperty("SourceMethod")
//     private String sourceMethod;
// 
//     /**
//      * The stack trace
//      */
//     @JsonProperty("StackTrace")
//     private List<TraceFrame> stackTrace;
// 
//     /**
//      * The cause of this error
//      */
//     @JsonProperty("InnerError")
//     private ErrorItem innerError;
// 
// }
// 
// Path: src/main/java/com/stackify/api/TraceFrame.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class TraceFrame {
// 
//     /**
//      * The file name
//      */
//     @JsonProperty("CodeFileName")
//     private String codeFileName;
// 
//     /**
//      * The line number
//      */
//     @JsonProperty("LineNum")
//     private Integer lineNum;
// 
//     /**
//      * The method name
//      */
//     @JsonProperty("Method")
//     private String method;
// 
// }


// Path: src/main/java/com/stackify/api/common/lang/Throwables.java
import java.util.ArrayList;
import java.util.List;
import com.stackify.api.ErrorItem;
import com.stackify.api.TraceFrame;

	 */
	private static String toErrorItemMessage(final String logMessage, final String throwableMessage) {
		
		StringBuilder sb = new StringBuilder();
				
		if ((throwableMessage != null) && (!throwableMessage.isEmpty())) {
			sb.append(throwableMessage);
			
			if ((logMessage != null) && (!logMessage.isEmpty())) {
				sb.append(" (");
				sb.append(logMessage);
				sb.append(")");
			}			
		} else {
			sb.append(logMessage);
		}

		return sb.toString();
	}
	
	/**
	 * Create an error item from a simple log message (without an explicit exception)
	 * @param logMessage The log message
	 * @param className The class that logged the message
	 * @param methodName The method that logged the message
	 * @param lineNumber The line number that logged the message
	 * @return The error item
	 */
	public static ErrorItem toErrorItem(final String logMessage, final String className, final String methodName, final int lineNumber) {
		
		ErrorItem.Builder builder = ErrorItem.newBuilder();