whole_func_string: function wrapContext(context) {
    var retObj = {},
        reservedRegexp = /^(topic|beforeEach|afterEach)$/,
        key,
        subcontext,
        beforeFn = context.beforeEach,
        afterFn = context.afterEach;
  
    // Iterate the keys in the context
    for (key in context) {
      if (context.hasOwnProperty(key) && !reservedRegexp.test(key)) {
        subcontext = context[key];
  
        // If the subcontext is a function, wrap it
        if (typeof subcontext === 'function') {
          retObj[key] = wrap(subcontext, beforeFn, afterFn);
        } else {
        // Otherwise, copy it
          retObj[key] = subcontext;
        }
      }
    }
  
    // Copy over the topic
    retObj.topic = context.topic;
  
    // Return the copied context
    return retObj;
  }
func_code_string: function wrapContext(context) {
    var retObj = {},
        reservedRegexp = /^(topic|beforeEach|afterEach)$/,
        key,
        subcontext,
        beforeFn = context.beforeEach,
        afterFn = context.afterEach;
  
    // Iterate the keys in the context
    for (key in context) {
      if (context.hasOwnProperty(key) && !reservedRegexp.test(key)) {
        subcontext = context[key];
  
        // If the subcontext is a function, wrap it
        if (typeof subcontext === 'function') {
          retObj[key] = wrap(subcontext, beforeFn, afterFn);
        } else {
        // Otherwise, copy it
          retObj[key] = subcontext;
        }
      }
    }
  
    // Copy over the topic
    retObj.topic = context.topic;
  
    // Return the copied context
    return retObj;
  }
func_documentation_string: Helper/sugar method for wrap
  @param {Object} context Context to wrap all functions of (except topic, beforeEach, afterEach)
  @returns {Object} Duplicate context object with removed .beforeEach, .afterEach and all replaced functions (except topic)
   TODO: Test if I begin using