setOptions(options) {
    const currentShape = this.options.shape;

    if (!options) {
      return; // Note that the return value will be 'undefined'! This is OK.
    }

    // Save the color for later.
    // This is necessary in order to prevent local color from being overwritten by group color.
    // TODO: To prevent such workarounds the way options are handled should be rewritten from scratch.
    // This is not the only problem with current options handling.
    if (typeof options.color !== "undefined") {
      this._localColor = options.color;
    }

    // basic options
    if (options.id !== undefined) {
      this.id = options.id;
    }

    if (this.id === undefined) {
      throw new Error("Node must have an id");
    }

    Node.checkMass(options, this.id);

    // set these options locally
    // clear x and y positions
    if (options.x !== undefined) {
      if (options.x === null) {
        this.x = undefined;
        this.predefinedPosition = false;
      } else {
        this.x = parseInt(options.x);
        this.predefinedPosition = true;
      }
    }
    if (options.y !== undefined) {
      if (options.y === null) {
        this.y = undefined;
        this.predefinedPosition = false;
      } else {
        this.y = parseInt(options.y);
        this.predefinedPosition = true;
      }
    }
    if (options.size !== undefined) {
      this.baseSize = options.size;
    }
    if (options.value !== undefined) {
      options.value = parseFloat(options.value);
    }

    // this transforms all shorthands into fully defined options
    Node.parseOptions(
      this.options,
      options,
      true,
      this.globalOptions,
      this.grouplist
    );

    const pile = [options, this.options, this.defaultOptions];
    this.chooser = choosify("node", pile);

    this._load_images();
    this.updateLabelModule(options);

    // Need to set local opacity after `this.updateLabelModule(options);` because `this.updateLabelModule(options);` overrites local opacity with group opacity
    if (options.opacity !== undefined && Node.checkOpacity(options.opacity)) {
      this.options.opacity = options.opacity;
    }

    this.updateShape(currentShape);

    return options.hidden !== undefined || options.physics !== undefined;
  }
Set or overwrite options for the node
@param {object} options an object with options
@returns {null|boolean}