docs: function getPathsForKey(key) {
  		//!steal-remove-start
  			if (process.env.NODE_ENV !== 'production') {
  			var paths = {};
  
  			var getKeyDefinition = function(obj, key) {
  				if (!obj || typeof obj !== "object") {
  					return {};
  				}
  
  				var keyExistsOnObj = key in obj;
  				var objHasKey = canReflect.hasKey(obj, key);
  
  				return {
  					isDefined: keyExistsOnObj || objHasKey,
  					isFunction: keyExistsOnObj && typeof obj[key] === "function"
  				};
  			};
  
  			// scope.foo@bar -> bar
  			var reads = stacheKey.reads(key);
  			var keyParts = reads.map(function(read) {
  				return read.key;
  			});
  			var scopeIndex = keyParts.indexOf("scope");
  
  			if (scopeIndex > -1) {
  				keyParts.splice(scopeIndex, 2);
  			}
  			var normalizedKey = keyParts.join(".");
  
  			// check scope.vm.<key>
  			var vm = this.getViewModel();
  			var vmKeyDefinition = getKeyDefinition(vm, normalizedKey);
  
  			if (vmKeyDefinition.isDefined) {
  				paths["scope.vm." + normalizedKey + (vmKeyDefinition.isFunction ? "()" : "")] = vm;
  			}
  
  			// check scope.top.<key>
  			var top = this.getTop();
  			var topKeyDefinition = getKeyDefinition(top, normalizedKey);
  
  			if (topKeyDefinition.isDefined) {
  				paths["scope.top." + normalizedKey + (topKeyDefinition.isFunction ? "()" : "")] = top;
  			}
  
  			// find specific paths (like ../key)
  			var cur = "";
  
  			this.getScope(function(scope) {
  				// `notContext` and `special` contexts can't be read using `../`
  				var canBeRead = !scope.isSpecial();
  
  				if (canBeRead) {
  					var contextKeyDefinition = getKeyDefinition(scope._context, normalizedKey);
  					if (contextKeyDefinition.isDefined) {
  						paths[cur + normalizedKey + (contextKeyDefinition.isFunction ? "()" : "")] = scope._context;
  					}
  
  					cur += "../";
  				}
  
  				// walk entire scope tree
  				return false;
  			});
  
  			return paths;
  		}
  		//!steal-remove-end
  	}