lib/classes/Variables.js/Variables/overwrite
class Variables:  overwrite(variableStrings, propertyString) {
    const variableValues = variableStrings.map(variableString =>
      this.getValueFromSource(variableString, propertyString));
    const validValue = value => (
      value !== null &&
      typeof value !== 'undefined' &&
      !(typeof value === 'object' && _.isEmpty(value))
    );
    return BbPromise.all(variableValues)
      .then(values => {
        let deepPropertyString = propertyString;
        let deepProperties = 0;
        values.forEach((value, index) => {
          if (_.isString(value) && value.match(this.deepRefSyntax)) {
            deepProperties += 1;
            deepPropertyString = deepPropertyString.replace(
              variableStrings[index],
              this.cleanVariable(value));
          }
        });
        return deepProperties > 0 ?
          BbPromise.resolve(deepPropertyString) : // return deep variable replacement of original
          BbPromise.resolve(values.find(validValue));// resolve first valid value, else undefined
      });
  }