code: final boolean setPrototype(ObjectType prototype, Node propertyNode) {
      if (prototype == null) {
        return false;
      }
      // getInstanceType fails if the function is not a constructor
      if (isConstructor() && prototype == getInstanceType()) {
        return false;
      }
      return setPrototypeNoCheck(prototype, propertyNode);
    }
docs: Sets the prototype.
  
  @param prototype the prototype. If this value is {@code null} it will silently be discarded.