whole_func_string: function StringRaw(callSite) {
    "use strict";
    var numberOfSubstitutions = arguments.length;
    var cooked = TO_OBJECT(callSite);
    var raw = TO_OBJECT(cooked.raw);
    var literalSegments = TO_LENGTH(raw.length);
    if (literalSegments <= 0) return "";
  
    var result = TO_STRING(raw[0]);
  
    for (var i = 1; i < literalSegments; ++i) {
      if (i < numberOfSubstitutions) {
        result += TO_STRING(arguments[i]);
      }
      result += TO_STRING(raw[i]);
    }
  
    return result;
  }
func_code_string: function StringRaw(callSite) {
    "use strict";
    var numberOfSubstitutions = arguments.length;
    var cooked = TO_OBJECT(callSite);
    var raw = TO_OBJECT(cooked.raw);
    var literalSegments = TO_LENGTH(raw.length);
    if (literalSegments <= 0) return "";
  
    var result = TO_STRING(raw[0]);
  
    for (var i = 1; i < literalSegments; ++i) {
      if (i < numberOfSubstitutions) {
        result += TO_STRING(arguments[i]);
      }
      result += TO_STRING(raw[i]);
    }
  
    return result;
  }
func_documentation_string: ------------------------------------------------------------------- String methods related to templates ES6 Draft 03-17-2015, section 21.1.2.4