BCE0004: Ambiguous reference 'gameObject': TrainingDummyPart.gameObject, UnityEngine.Component.gameObject.

The title says it all. What does it mean?

I get the error when ever dp is called but i have it listed as a variable..any clues?

function Destruct(target : int)
    {
        var dp : TrainingDummyPart = dummyParts[target];

        if(dp.gameObject == null) return;

        dp.shootsTaken = shootsToDestroyPart;

        var go : GameObject;

        if(dp.gameObject.transform.parent != null)
        {
            if(dp.gameObject.name.Contains("head") || dp.gameObject.name.Contains("neck"))
            {
                if(!dead)
                {
                    dead = true;
                    TrainingStatistics.dummies++;
                    GunEffects(false);

                    //audio.PlayOneShot(dieSound);

                    Destruct(4);

                    //animation.CrossFade("dum_death");
                }
            }

            if(dp.gameObject != weapon)
            {
                dp.gameObject.transform.parent = null;
                dp.gameObject.active = false;

                for(var i : int = 0; i < dp.brokeParts.length; i++)
                {
                    go = dp.brokeParts*;*
 *if(go.transform.parent == null) continue;*
 *InitializeMeshCollider(go);*
 *DestroyPart(go, false);*
 *}*
 *for(var j : int = 0; j < dp.siblings.length; j++)*
 *{*
 *go = dp.siblings[j];*
 *if(go == null) continue;*
 *if(go.transform.parent == null) continue;*
 *if(go.name.Contains("head"))*
 *{*
 *dead = true;*
 *TrainingStatistics.dummies++;*
 *//audio.PlayOneShot(dieSound);*
 *GunEffects(false);*
 *}*
 *if(go == weapon)* 
 *{*
 *canShoot = false;*
 *GunEffects(false);*
 *}*
 *DestroyPart(go, false);*
 *}*
 *Destroy(dp.gameObject);*
 *}*
 *else*
 *{*
 *canShoot = false;*
 *GunEffects(false);*
 *if(weapon.transform.parent != null)*
 *{*
 *DestroyPart(weapon, false);*
 *}*
 *}*
 *}*
 *else*
 *{*
 *if(dp.gameObject != weapon)*
 *{*
 *dp.gameObject.active = false;*
 *for(i = 0; i < dp.brokeParts.length; i++)*
 *{*
 _go = dp.brokeParts*;*_
 _*InitializeMeshCollider(go);*_
 _*DestroyPart(go, false);*_
 _*}*_
 _*Destroy(dp.gameObject);*_
 _*}*_
 _*}*_
 _*}*_
 _*function Hit(hit : RaycastHit, target : int, damage : int)*_
 _*{*_
 _*if(!running)*_ 
 _*{*_
 _*running = true;*_
 _*}*_
 _*var dp : TrainingDummyPart = dummyParts[target];*_
 _*if(dp.gameObject == null) return;*_
 _*dp.shootsTaken += damage;*_
 _*var go : GameObject;*_
 _*if(dp.gameObject.transform.parent != null)*_
 _*{*_
 _*if(!dead)*_ 
 _*{*_
 _*if(dp.dummyPart == DummyPart.CHEST)*_
 _*{*_
 _*var dir : Vector3 = hit.point - transform.position;*_
 _*if(Vector3.Dot(dir, transform.right) > 0)*_
 _*{*_
 _*TrainingStatistics.Register(dp.dummyPart);*_
 _*}*_
 _*else*_
 _*{*_
 _*TrainingStatistics.Register(DummyPart.HEART);*_
 _*}*_
 _*}*_
 _*else*_
 _*{*_
 _*TrainingStatistics.Register(dp.dummyPart);*_
 _*}*_
 _*}*_
 _*if(dp.shootsTaken == shootsToDestroyPart - 1)*_
 _*{*_
 _*if(dp.gameObject != weapon)*_
 _*{*_
 _*enableFailEffect = true;*_
 _*}*_
 _*}*_
 _*else if(dp.shootsTaken >= shootsToDestroyPart)*_
 _*{*_
 _*if(dp.gameObject.name.Contains("head") || dp.gameObject.name.Contains("neck"))*_
 _*{*_
 _*if(!dead)*_
 _*{*_
 _*dead = true;*_
 _*TrainingStatistics.headShoot++;*_
 _*TrainingStatistics.dummies++;*_
 _*//audio.PlayOneShot(dieSound);*_
 _*GunEffects(false);*_
 _*if(state != 0)*_
 _*{*_
 _*Hit(hit, 4, shootsToDestroyPart);*_
 _*}*_
 <em>*//animation.CrossFade("dum_death");*</em>
 _*}*_
 _*}*_
 _*if(dp.gameObject != weapon)*_
 _*{*_
 _*dp.gameObject.transform.parent = null;*_
 _*dp.gameObject.active = false;*_
 _*for(var i : int = 0; i < dp.brokeParts.length; i++)*_
 _*{*_
 <em>_go = dp.brokeParts*;*_</em>
 <em>_*if(go.transform.parent == null) continue;*_</em>
 <em>_*InitializeMeshCollider(go);*_</em>
 <em>_*DestroyPart(go, true);*_</em>
 <em>_*}*_</em>
 <em>_*for(var j : int = 0; j < dp.siblings.length; j++)*_</em>
 <em>_*{*_</em>
 <em>_*go = dp.siblings[j];*_</em>
 <em>_*if(go == null) continue;*_</em>
 <em>_*if(go.transform.parent == null) continue;*_</em>
 <em>_*if(go.name.Contains("head"))*_</em>
 <em>_*{*_</em>
 <em>_*dead = true;*_</em>
 <em>_*TrainingStatistics.dummies++;*_</em>
 <em>_*//audio.PlayOneShot(dieSound);*_</em>
 <em>_*GunEffects(false);*_</em>
 <em>_*}*_</em>
 <em>_*if(go == weapon)*_</em> 
 <em>_*{*_</em>
 <em>_*canShoot = false;*_</em>
 <em>_*GunEffects(false);*_</em>
 <em>_*}*_</em>
 <em>_*DestroyPart(go, true);*_</em>
 <em>_*}*_</em>
 <em>_*GameObject.Instantiate(explosionEffectPrefab, hit.point, Quaternion.identity);*_</em>
 <em>_*Destroy(dp.gameObject);*_</em>
 <em>_*}*_</em>
 <em>_*else*_</em>
 <em>_*{*_</em>
 <em>_*canShoot = false;*_</em>
 <em>_*GunEffects(false);*_</em>
 <em>_*if(weapon.transform.parent != null)*_</em>
 <em>_*{*_</em>
 <em>_*DestroyPart(weapon, true);*_</em>
 <em>_*}*_</em>
 <em>_*}*_</em>
 <em>_*}*_</em>
 <em>_*}*_</em>
 <em>_*else*_</em>
 <em>_*{*_</em>
 <em>_*if(dp.gameObject != weapon)*_</em>
 <em>_*{*_</em>
 <em>_*dp.gameObject.active = false;*_</em>
 <em>_*for(i = 0; i < dp.brokeParts.length; i++)*_</em>
 <em>_*{*_</em>
 <em><em>_go = dp.brokeParts*;*_</em></em>
 <em><em>_*InitializeMeshCollider(go);*_</em></em>
 <em><em>_*DestroyPart(go, true);*_</em></em>
 <em><em>_*}*_</em></em>
 <em><em>_*Destroy(dp.gameObject);*_</em></em>
<em><em>_*```*_</em></em>

What does your TrainingDummyPart script look like? Because the error is saying that it defines a .gameObject member, and so does UnityEngine.Component, and it doesn't know which one you mean to use. You shouldn't need to define a .gameObject member, but if you do, call it something else, would be the easiest thing. Or you can specify UnityEngine.Component.gameObject each time which gets messy.