docs: function instanceOf(Class) {
          var primitive;
          var typeString;
  
          if (typeof Class === "string") {
              typeString = Class.toLowerCase();
              if (typeStrings.indexOf(typeString) !== -1) {
                  Class = types[typeString];
              }
          }
          if (context.isSet === false) {
              return context.subject === Class;
          }
          // Check if the given Class is a valid type.
          // Unfortunately there are host objects in some browsers which behave like
          // Functions but return typeof object.
          if (!Class || (typeof Class !== "function" && typeof Class !== "object")) {
              throw new TypeError("The given type must be typeof function or string");
          }
          if (Class === Object) {
              return context.subjectType === "Object";
          }
          if (context.subject instanceof Class) {
              return true;
          }
  
          primitive = primitives[context.subjectType];
          if (typeof primitive === "function") {
              if (primitive === Class) {
                  if (Class === Number) {
                      // Returns false for NaN and Infinity
                      return isFinite(context.subject);
                  } else {
                      return true;
                  }
              }
          }
  
          return false;
      }