code: function pushTypeResolution(target, propertyName) {
              var resolutionCycleStartIndex = findResolutionCycleStartIndex(target, propertyName);
              if (resolutionCycleStartIndex >= 0) {
                  // A cycle was found
                  var length_2 = resolutionTargets.length;
                  for (var i = resolutionCycleStartIndex; i < length_2; i++) {
                      resolutionResults[i] = false;
                  }
                  return false;
              }
              resolutionTargets.push(target);
              resolutionResults.push(/*items*/ true);
              resolutionPropertyNames.push(propertyName);
              return true;
          }
docs: Push an entry on the type resolution stack. If an entry with the given target and the given property name
  is already on the stack, and no entries in between already have a type, then a circularity has occurred.
  In this case, the result values of the existing entry and all entries pushed after it are changed to false,
  and the value false is returned. Otherwise, the new entry is just pushed onto the stack, and true is returned.
  In order to see if the same query has already been done before, the target object and the propertyName both
  must match the one passed in.
  
  @param target The symbol, type, or signature whose type is being queried
  @param propertyName The property name that should be used to query the target for its type