AssetTechSpecInterface aset_ts
AssetTechSpecInterface asset_ts
    ThreatVariationModel addThreatVariationModel            ( ThreatModelInterface threat_mi )            throws BelievabilityException    {        if ( threat_mi == null )            throw new BelievabilityException                    ( "AssetTypeModel.addThreatVariationModel()",                      "Cannot add null ThreatModelInterface model" );                // Need to first check if common threat information        // (ThreatRootModel) exists.  If not, we create it.        //        ThreatRootModel threat_root_model                 = (ThreatRootModel) _threat_model_set.get( threat_mi.getName());                if ( threat_root_model == null )        {            logDebug( "Creating new ThreatRootModel: "                       + threat_mi.getName());            threat_root_model = new ThreatRootModel                    ( threat_mi.getThreatDescription(),                       this );            _threat_model_set.put( threat_mi.getName(),                                   threat_root_model );        } // if didn't have threat root model        // Now we can add this variation safely to the root.        //        ThreatVariationModel threat_var                = new ThreatVariationModel( threat_root_model,                                            threat_mi );        // Finally, if this Threat involves assets we already have        // built up a set of threat variations for, then we will need        // to invalidate (by deleting) that set.  Note that we could        // alternatively add this to the existing set, but prefer to        // allow our lazy reconstruction to rebuild this set when it        // odes not exist.  The performance impact of this will likely        // not mater given the infrequency of adding threat models.        //        Vector asset_list = threat_var.getAssetList();        if ( asset_list == null )            throw new BelievabilityException                    ( "AssetTypeModel.addThreatVariationModel()",                      "Found null asset list." );                    Enumeration asset_enum = asset_list.elements();        while( asset_enum.hasMoreElements() )        {            AssetTechSpecInterface aset_ts                    = (AssetTechSpecInterface) asset_enum.nextElement();            // Because we build the threat variation set on the fly, it is            // very possible that we may try to remove things that were            // never created. In this case, we will do nothing silently.            //            _asset_threat_var_table.remove( aset_ts.getAssetID() );        } // while enum */        return threat_var;    } // method addThreatVariationModel