def METHOD_NAME(self):
    types = [
        (MySimpleInputType, False),
        (MyInputType, False),
        (MyDeclaredPropertiesInputType, True),
    ]
    for typ, has_doc in types:
        t = typ(first_value="hello", second_value=42)
        self.assertEqual("hello", t.first_value)
        self.assertEqual(42, t.second_value)
        t.first_value = "world"
        self.assertEqual("world", t.first_value)
        t.second_value = 500
        self.assertEqual(500, t.second_value)
        first = typ.first_value
        self.assertIsInstance(first, property)
        self.assertTrue(callable(first.fget))
        self.assertEqual("first_value", first.fget.__name__)
        self.assertEqual({"return": pulumi.Input[str]}, first.fget.__annotations__)
        if has_doc:
            self.assertEqual("First value docstring.", first.fget.__doc__)
        self.assertEqual("firstValue", first.fget._pulumi_name)
        self.assertTrue(callable(first.fset))
        self.assertEqual("first_value", first.fset.__name__)
        self.assertEqual({"value": pulumi.Input[str]}, first.fset.__annotations__)
        second = typ.second_value
        self.assertIsInstance(second, property)
        self.assertTrue(callable(second.fget))
        self.assertEqual("second_value", second.fget.__name__)
        self.assertEqual({"return": Optional[pulumi.Input[float]]}, second.fget.__annotations__)
        if has_doc:
            self.assertEqual("Second value docstring.", second.fget.__doc__)
        self.assertEqual("secondValue", second.fget._pulumi_name)
        self.assertTrue(callable(second.fset))
        self.assertEqual("second_value", second.fset.__name__)
        self.assertEqual({"value": Optional[pulumi.Input[float]]}, second.fset.__annotations__)
        self.assertEqual({
            "firstValue": "world",
            "secondValue": 500,
        }, _types.input_type_to_dict(t))
        self.assertTrue(hasattr(t, "__eq__"))
        self.assertTrue(t.__eq__(t))
        self.assertTrue(t == t)
        self.assertFalse(t != t)
        self.assertFalse(t == "not equal")
        t2 = typ(first_value="world", second_value=500)
        self.assertTrue(t.__eq__(t2))
        self.assertTrue(t == t2)
        self.assertFalse(t != t2)
        self.assertEqual({
            "firstValue": "world",
            "secondValue": 500,
        }, _types.input_type_to_dict(t2))
        t3 = typ(first_value="foo", second_value=1)
        self.assertFalse(t.__eq__(t3))
        self.assertFalse(t == t3)
        self.assertTrue(t != t3)
        self.assertEqual({
            "firstValue": "foo",
            "secondValue": 1,
        }, _types.input_type_to_dict(t3))