      /*      * Important: Return a reference here so passing a Rooted<T> to      * something that takes a |const T&| is not a GC hazard.      */     operator const T&() const { return ptr; }     T operator->() const { return ptr; }     T *address() { return &ptr; }     const T *address() const { return &ptr; }     T &get() { return ptr; }     const T &get() const { return ptr; }      T &operator=(T value) {         MOZ_ASSERT(!js::GCMethods<T>::poisoned(value));         ptr = value;         return ptr;     }      T &operator=(const Rooted &value) {         ptr = value;         return ptr;     }      void set(T value) {         MOZ_ASSERT(!js::GCMethods<T>::poisoned(value));         ptr = value;     }      bool operator!=(const T &other) const { return ptr != other; }     bool operator==(const T &other) const { return ptr == other; }    private: 