Map<String, String> generateManifestEntryPropertyMap(String pFilePath, ConfigFileEntry pConfigEntry, ManifestEntry pForManifestEntry){
    
    Map<String, String> lResult = new TreeMap<String, String>();
        
    //1) Start off with properties specified in the config entry for this file
    lResult.putAll(pConfigEntry.getPropertyMap());
    
    //2) check for entries in additional properties
    ManifestEntry lAdditionalPropertiesEntry = mAddtionalPropertiesMap.get(pFilePath);
    if(lAdditionalPropertiesEntry != null){
      lResult.putAll(lAdditionalPropertiesEntry.getPropertyMap());
    }
    
    //3) check for augmentation entries in manifest override
    ManifestEntry lAugmentationEntry = mManifestOverrideAugmentationMap.get(pFilePath);
    if(lAugmentationEntry != null){
      lResult.putAll(lAugmentationEntry.getPropertyMap());
    }
    
    //4) If this is an override entry, take the overriden properties from that entry
    if(pForManifestEntry != null){
      lResult.putAll(pForManifestEntry.getPropertyMap());
    }
    
    //5) Add default properties which all files have
    //   There should be no overloading here as assertions should have been made elsewhere that these properties were not already specified.
    populateDefaultProperties(lResult, pFilePath);
    
    return lResult;
  }