@Override
  public void filter() {

    // Filter and rename Model Fields based on package name and imports
    filteredModelFields =
        new TreeMap<String, ModelField[]>(SortHelper.ALPHABETICAL_ORDER_COMPARATOR);
    filteredModelFields.putAll(
        AsyncPackageDataModelOracleUtilities.filterModelFields(
            packageName, imports, projectModelFields, factNameToFQCNHandleRegistry));

    // For filling the factNameToFQCNHandleRegistry
    AsyncPackageDataModelOracleUtilities.visitMethodInformation(
        projectMethodInformation, factNameToFQCNHandleRegistry);

    // Filter and rename Global Types based on package name and imports
    filteredGlobalTypes = new TreeMap<String, String>(SortHelper.ALPHABETICAL_ORDER_COMPARATOR);
    filteredGlobalTypes.putAll(
        AsyncPackageDataModelOracleUtilities.filterGlobalTypes(
            packageName, imports, packageGlobalTypes));

    // Filter and rename Collection Types based on package name and imports
    filteredCollectionTypes = new HashMap<String, Boolean>();
    filteredCollectionTypes.putAll(
        AsyncPackageDataModelOracleUtilities.filterCollectionTypes(
            packageName, imports, projectCollectionTypes));

    // Filter and rename Event Types based on package name and imports
    filteredEventTypes = new HashMap<String, Boolean>();
    filteredEventTypes.putAll(
        AsyncPackageDataModelOracleUtilities.filterEventTypes(
            packageName, imports, projectEventTypes));

    // Filter and rename TypeSources based on package name and imports
    filteredTypeSources = new HashMap<String, TypeSource>();
    filteredTypeSources.putAll(
        AsyncPackageDataModelOracleUtilities.filterTypeSources(
            packageName, imports, projectTypeSources));

    // Filter and rename Declared Types based on package name and imports
    filteredSuperTypes = new HashMap<String, List<String>>();
    filteredSuperTypes.putAll(
        AsyncPackageDataModelOracleUtilities.filterSuperTypes(
            packageName, imports, projectSuperTypes));

    // Filter and rename Type Annotations based on package name and imports
    filteredTypeAnnotations = new HashMap<String, Set<Annotation>>();
    filteredTypeAnnotations.putAll(
        AsyncPackageDataModelOracleUtilities.filterTypeAnnotations(
            packageName, imports, projectTypeAnnotations));

    // Filter and rename Type Field Annotations based on package name and imports
    filteredTypeFieldsAnnotations = new HashMap<String, Map<String, Set<Annotation>>>();
    filteredTypeFieldsAnnotations.putAll(
        AsyncPackageDataModelOracleUtilities.filterTypeFieldsAnnotations(
            packageName, imports, projectTypeFieldsAnnotations));

    // Filter and rename Enum definitions based on package name and imports
    filteredEnumLists = new FilteredEnumLists();
    filteredEnumLists.putAll(packageWorkbenchEnumLists);
    filteredEnumLists.putAll(
        AsyncPackageDataModelOracleUtilities.filterEnumDefinitions(
            packageName, imports, projectJavaEnumLists));

    // Filter and rename based on package name and imports
    filteredFieldParametersType = new HashMap<String, String>();
    filteredFieldParametersType.putAll(
        AsyncPackageDataModelOracleUtilities.filterFieldParametersTypes(
            packageName, imports, projectFieldParametersType));
  }
 @Override
 public boolean hasEnums(final String qualifiedFactField) {
   return filteredEnumLists.hasEnums(qualifiedFactField);
 }
 /**
  * Check whether the childField is related to the parentField through a chain of enumeration
  * dependencies. Both fields belong to the same Fact Type. Furthermore code consuming this
  * function should ensure both parentField and childField relate to the same Fact Pattern
  *
  * @param factType
  * @param parentField
  * @param childField
  * @return
  */
 @Override
 public boolean isDependentEnum(
     final String factType, final String parentField, final String childField) {
   return filteredEnumLists.isDependentEnum(factType, parentField, childField);
 }
 @Override
 public String[] getEnumValues(String factType, String factField) {
   return filteredEnumLists.getEnumValues(factType, factField);
 }