public Object[] createTestWeaponStructure()
    {
        GameObject testGameObject = new GameObject();

        testGameObject.name = "TESTGAMEOBJECT";
        GameObject testGameObject1 = new GameObject();

        testGameObject1.name = "TESTGAMEOBJECT";
        GameObject testGameObject2 = new GameObject();

        testGameObject2.name = "TESTGAMEOBJECT";
        GameObject testGameObject3 = new GameObject();

        testGameObject3.name = "TESTGAMEOBJECT";
        GameObject testGameObject4 = new GameObject();

        testGameObject4.name = "TESTGAMEOBJECT";


        WeaponPart notSearchedPart  = testGameObject1.AddComponent <WeaponPart>();
        WeaponPart notSearchedPart2 = testGameObject2.AddComponent <WeaponPart>();
        WeaponPart notSearchedPart3 = testGameObject3.AddComponent <WeaponPart>();
        WeaponPart searchedPart     = testGameObject4.AddComponent <WeaponPart>();

        Adaptor adaptorLoadingMechanism  = testGameObject1.AddComponent <Adaptor>();
        Adaptor adaptorLoadingMechnaism2 = testGameObject1.AddComponent <Adaptor>();
        Adaptor adaptorFiringMechanism   = testGameObject2.AddComponent <Adaptor>();
        Adaptor adaptorBarrel            = testGameObject4.AddComponent <Adaptor>();

        adaptorFiringMechanism.ChildPartTransform   = adaptorFiringMechanism.transform;
        adaptorLoadingMechanism.ChildPartTransform  = adaptorLoadingMechanism.transform;
        adaptorLoadingMechnaism2.ChildPartTransform = adaptorLoadingMechanism.transform;
        adaptorBarrel.ChildPartTransform            = adaptorBarrel.transform;

        adaptorFiringMechanism.WeaponTypeOfAdaptor   = WeaponPartType.FiringMechanism;
        adaptorLoadingMechanism.WeaponTypeOfAdaptor  = WeaponPartType.LoadingMechanism;
        adaptorLoadingMechnaism2.WeaponTypeOfAdaptor = WeaponPartType.LoadingMechanism;
        adaptorBarrel.WeaponTypeOfAdaptor            = WeaponPartType.Barrel;


        notSearchedPart.Adaptors = new List <Adaptor> {
            adaptorLoadingMechanism, adaptorLoadingMechnaism2
        };
        notSearchedPart2.Adaptors = new List <Adaptor> {
            adaptorFiringMechanism
        };
        searchedPart.Adaptors = new List <Adaptor> {
            adaptorBarrel
        };

        notSearchedPart.TestSetup("NotSearchedPart", WeaponPartType.Trigger, null);
        notSearchedPart2.TestSetup("NotSearchedPart2", WeaponPartType.LoadingMechanism, notSearchedPart);
        notSearchedPart3.TestSetup("NotSearchedPart3", WeaponPartType.LoadingMechanism, notSearchedPart);
        searchedPart.TestSetup("searchedPart", WeaponPartType.FiringMechanism, notSearchedPart2);



        notSearchedPart.AddChild(notSearchedPart2);
        notSearchedPart.AddChild(notSearchedPart3);
        notSearchedPart2.AddChild(searchedPart);



        notSearchedPart.ConnectChildToAdaptor(adaptorLoadingMechanism, notSearchedPart2);
        notSearchedPart.ConnectChildToAdaptor(adaptorLoadingMechnaism2, notSearchedPart3);
        notSearchedPart2.ConnectChildToAdaptor(adaptorFiringMechanism, searchedPart);

        WeaponStructure weaponStructure = testGameObject.AddComponent <WeaponStructure>();

        weaponStructure.trigger = notSearchedPart;

        testGameObject1.transform.parent = testGameObject.transform;
        testGameObject2.transform.parent = testGameObject1.transform;
        testGameObject3.transform.parent = testGameObject1.transform;
        testGameObject4.transform.parent = testGameObject2.transform;

        Object[] result = new Object[5];
        result[0] = weaponStructure;
        result[1] = searchedPart;
        result[2] = notSearchedPart;
        result[3] = notSearchedPart2;
        result[4] = notSearchedPart3;

        return(result);
    }