// Path: src/main/java/com/codereligion/bugsnag/logback/model/MetaDataVO.java
// public class MetaDataVO {
// 
//     private Map<String, TabVO> tabsByName = new HashMap<String, TabVO>();
// 
//     /**
//      * Adds the given {@code key}/{@code value} pair to the specified {@code tabName}.
//      *
//      * @param tabName the name of the tab to add the key/value pair
//      * @param key the key to map the {@code value} to
//      * @param value the value for the given {@code key}
//      * @return a reference of this object
//      */
//     public MetaDataVO addToTab(final String tabName, final String key, final Object value) {
//         getAndEnsureTabExistence(tabName).add(key, value);
//         return this;
//     }
// 
//     /**
//      * The underlying data structure of this object.
//      *
//      * @return a map of string to {@link TabVO}
//      */
//     public Map<String, TabVO> getTabsByName() {
//         return tabsByName;
//     }
// 
//     private TabVO getAndEnsureTabExistence(final String tabName) {
//         final TabVO tab = tabsByName.get(tabName);
//         final boolean tabDoesNotExist = tab == null;
//         if (tabDoesNotExist) {
//             final TabVO newTab = new TabVO();
//             tabsByName.put(tabName, newTab);
//             return newTab;
//         }
// 
//         return tab;
//     }
// }


import ch.qos.logback.classic.spi.ILoggingEvent;
import com.codereligion.bugsnag.logback.model.MetaDataVO;
import java.util.Map;
package com.codereligion.bugsnag.logback;


public class ExampleMetaDataProvider implements MetaDataProvider {

    @Override
// Path: src/main/java/com/codereligion/bugsnag/logback/model/MetaDataVO.java
// public class MetaDataVO {
// 
//     private Map<String, TabVO> tabsByName = new HashMap<String, TabVO>();
// 
//     /**
//      * Adds the given {@code key}/{@code value} pair to the specified {@code tabName}.
//      *
//      * @param tabName the name of the tab to add the key/value pair
//      * @param key the key to map the {@code value} to
//      * @param value the value for the given {@code key}
//      * @return a reference of this object
//      */
//     public MetaDataVO addToTab(final String tabName, final String key, final Object value) {
//         getAndEnsureTabExistence(tabName).add(key, value);
//         return this;
//     }
// 
//     /**
//      * The underlying data structure of this object.
//      *
//      * @return a map of string to {@link TabVO}
//      */
//     public Map<String, TabVO> getTabsByName() {
//         return tabsByName;
//     }
// 
//     private TabVO getAndEnsureTabExistence(final String tabName) {
//         final TabVO tab = tabsByName.get(tabName);
//         final boolean tabDoesNotExist = tab == null;
//         if (tabDoesNotExist) {
//             final TabVO newTab = new TabVO();
//             tabsByName.put(tabName, newTab);
//             return newTab;
//         }
// 
//         return tab;
//     }
// }


// Path: src/example/java/com/codereligion/bugsnag/logback/ExampleMetaDataProvider.java
import ch.qos.logback.classic.spi.ILoggingEvent;
import com.codereligion.bugsnag.logback.model.MetaDataVO;
import java.util.Map;

package com.codereligion.bugsnag.logback;


public class ExampleMetaDataProvider implements MetaDataProvider {

    @Override
    public MetaDataVO provide(ILoggingEvent loggingEvent) {