code: function () {
  			var bIterateAnnotations,
  				sResolvedPath = this.oModel.resolve(this.sPath, this.oContext),
  				that = this;
  
  			if (!sResolvedPath) {
  				return SyncPromise.resolve([]);
  			}
  			bIterateAnnotations = sResolvedPath.slice(-1) === "@";
  			if (!bIterateAnnotations && !sResolvedPath.endsWith("/")) {
  				sResolvedPath += "/";
  			}
  			return this.oModel.fetchObject(sResolvedPath).then(function (oResult) {
  				if (!oResult) {
  					return [];
  				}
  				if (bIterateAnnotations) {
  					// strip off the trailing "@"
  					sResolvedPath = sResolvedPath.slice(0, -1);
  				}
  				return Object.keys(oResult).filter(function (sKey) {
  					// always filter technical properties;
  					// filter annotations iff not iterating them
  					return sKey[0] !== "$" &&  bIterateAnnotations !== (sKey[0] !== "@");
  				}).map(function (sKey) {
  					return new BaseContext(that.oModel, sResolvedPath + sKey);
  				});
  			});
  		}
docs: Returns the contexts that result from iterating over the binding's path/context.
  @returns {sap.ui.base.SyncPromise} A promise that is resolved with an array of contexts
  
  @private