code: def test_struct_ops(self):
      s = Struct(a=1, b=2, c=3)
  
      self.assertEqual(s.drop("c"), Struct(b=2, a=1))
      self.assertEqual(s.drop("b", "c"), Struct(a=1))
  
      self.assertEqual(s.select("b", "a"), Struct(b=2, a=1))
      self.assertEqual(s.select("a", b=5), Struct(a=1, b=5))
  
      self.assertEqual(s.annotate(), s)
      self.assertEqual(s.annotate(x=5), Struct(a=1, b=2, c=3, x=5))
      self.assertEqual(
          s.annotate(**{"a": 5, "x": 10, "y": 15}),
          Struct(a=5, b=2, c=3, x=10, y=15),
      )
  
imports: import json
  import unittest
  import hail
  from hail.utils import *
  from hail.utils.misc import escape_str, escape_id
  from hail.utils.java import FatalError
  from hail.utils.linkedlist import LinkedList
  from ..helpers import *
label_desc: Use image node_id 18 for calling the Tests obj's underlying member method code with example usage: obj.test_struct_ops() without return types