docs: function (text, scope, attrKey, bindingDefinitions) {
              if (!_.isString(text)) {
                  return text;
              }
  
              bindingDefinitions = bindingDefinitions || this.parse(text);
  
              var binding,
                  bindings = [],
                  ret = [];
  
              for (var i = 0; i < bindingDefinitions.length; i++) {
                  var bindingDef = bindingDefinitions[i];
                  if (bindingDef.length) {
                      ret.push(bindingDef);
                  } else {
                      try {
                          binding = this.create(bindingDef, scope, attrKey, ret);
                      } catch (e) {
                          throw new Error("Create binding for '" + text + "'. " + e.message);
                      }
  
                      if (binding instanceof Binding) {
                          bindings.push(binding);
                          scope.$bindings[attrKey] = scope.$bindings[attrKey] || [];
                          scope.$bindings[attrKey].push(binding);
                      }
                      ret.push(binding);
                  }
  
              }
  
              if (bindings.length > 0) {
                  return bindings[0].getContextValue();
              } else if (ret.length > 0) {
                  if (ret.length === 1) {
                      return ret[0];
                  }
                  return Binding.contextToString(ret);
              } else {
                  return text;
              }
  
          }