void removeComponents(GameObject target)
        {
            var comEnumerator = FilterableComponent.GetEnumerator();

            if (isForNavMesh && CustomEditorGUI.IsMaskedLayer(layerMask, target))
            {
                var col = target.GetComponent <Collider>();
                if (col && col.enabled && !col.isTrigger)
                {
                    var meshObj = MeshForNavmesh.Bake(col);
                    meshObj.transform.parent = RootForNavMesh;
                    meshObj.isStatic         = true;
                    IsoTile tile = target.GetComponentInParent <IsoTile>();
                    if (tile != null)
                    {
                        meshObj.name = tile.name;
                    }
                }
            }

            while (comEnumerator.MoveNext())
            {
                var type = comEnumerator.Current.Key;
                if ((type.IsSubclassOf(typeof(Component)) || type.IsSubclassOf(typeof(MonoBehaviour)) || type.IsInterface) &&
                    !FilteredComponent.Contains(type))
                {
                    var com = target.GetComponent(type);
                    if (com)
                    {
                        DestroyImmediate(com);
                    }
                }
            }
        }