text: class ChristmasMovies {
      constructor() {
          this.movieCollection = [];
          this.watched = {};
          this.actors = [];
      }
  
      buyMovie(movieName, actors) {
          let movie = this.movieCollection.find(m => movieName === m.name);
          let uniqueActors = new Set(actors);
  
          if (movie === undefined) {
              this.movieCollection.push({ name: movieName, actors: [...uniqueActors] });
              let output = [];
              [...uniqueActors].map(actor => output.push(actor));
              return `You just got ${movieName} to your collection in which ${output.join(', ')} are taking part!`;
          } else {
              throw new Error(`You already own ${movieName} in your collection!`);
          }
      }
  
      discardMovie(movieName) {
          let filtered = this.movieCollection.filter(x => x.name === movieName)
  
          if (filtered.length === 0) {
              throw new Error(`${movieName} is not at your collection!`);
          }
          let index = this.movieCollection.findIndex(m => m.name === movieName);
          this.movieCollection.splice(index, 1);
          let { name, _ } = filtered[0];
  
          if (this.watched.hasOwnProperty(name)) {
              delete this.watched[name];
              return `You just threw away ${name}!`;
          } else {
              throw new Error(`${movieName} is not watched!`);
          }
  
      }
  
      watchMovie(movieName) {
          let movie = this.movieCollection.find(m => movieName === m.name);
          if (movie) {
              if (!this.watched.hasOwnProperty(movie.name)) {
                  this.watched[movie.name] = 1;
              } else {
                  this.watched[movie.name]++;
              }
          } else {
              throw new Error('No such movie in your collection!');
          }
      }
  
      favouriteMovie() {
          let favourite = Object.entries(this.watched).sort((a, b) => b[1] - a[1]);
          if (favourite.length > 0) {
              return `Your favourite movie is ${favourite[0][0]} and you have watched it ${favourite[0][1]} times!`;
          } else {
              throw new Error('You have not watched a movie yet this year!');
          }
      }
  
      mostStarredActor() {
          let mostStarred = {};
          if (this.movieCollection.length > 0) {
              this.movieCollection.forEach(el => {
                  let { _, actors } = el;
                  actors.forEach(actor => {
                      if (mostStarred.hasOwnProperty(actor)) {
                          mostStarred[actor]++;
                      } else {
                          mostStarred[actor] = 1;
                      }
                  })
              });
              let theActor = Object.entries(mostStarred).sort((a, b) => b[1] - a[1]);
              return `The most starred actor is ${theActor[0][0]} and starred in ${theActor[0][1]} movies!`;
          } else {
              throw new Error('You have not watched a movie yet this year!')
          }
      }
  }
  
  let christmas = new ChristmasMovies();
  christmas.buyMovie('Home Alone', ['Macaulay Culkin', 'Joe Pesci', 'Daniel Stern'], 1);
  christmas.buyMovie('Home Alone 2', ['Macaulay Culkin']);
  christmas.buyMovie('Last Christmas', ['Emilia Clarke', 'Henry Golding']);
  christmas.buyMovie('The Grinch', ['Benedict Cumberbatch', 'Pharrell Williams']);
  christmas.watchMovie('Home Alone');
  christmas.watchMovie('Home Alone');
  christmas.watchMovie('Home Alone');
  christmas.watchMovie('Home Alone 2');
  christmas.watchMovie('The Grinch');
  christmas.watchMovie('Last Christmas');
  christmas.watchMovie('Home Alone 2');
  christmas.watchMovie('Last Christmas');
  christmas.discardMovie('The Grinch');
  christmas.favouriteMovie();
  christmas.mostStarredActor();
  
  module.exports = ChristmasMovies;