code: function(parent, value) {
              if(_.isPlainObject(value)) {
                  // Unwind the object
                  return _this._unwind(value);
              }
              else if(_.isArray(value)) {
                  // Iterate over the array
                  return _.map(value, function(val) {
                      return _this._parseValue(parent, val);
                  });
              }
              else if(_.isString(value) && value.indexOf('=') === 0) {
                  // Evaluate the expression
                  try {
                      // Assign the object to the _this property
                      var base = {
                         '_this': parent
                      };
  
                      // Create a new combined context
                      var ctx = vm.createContext(objectAssign(base, _this.sandbox));
  
                      // Run in the new context
                      return vm.runInContext(value.substr(1).replace(/this\./g, '_this.'), ctx);
                  }
                  catch(e) {
                      return value;
                  }
              }
              else if(_.isString(value) && value.indexOf('->') === 0) {
                  // Find the reference to the object
                  return _this._findReference(value.substr(2));
              }
  
              return value;
          }
docs: This method parses every value. If the value is an object it will unwind
  that object as well. If the value is a reference (value starting with ->),
  then it will find the reference to that object.
  
  @param  {Object} parent  The object for which the value should be parsed.
  @param  {*}      value   The value that should be parsed.
  @return {*}              The parsed value.