protected Collection<org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal>
     handleEnumAttribute(
         org.emftext.language.xpath3.resource.xpath3.mopp.Xpath3ExpectedTerminal expectedTerminal,
         org.emftext.language.xpath3.resource.xpath3.mopp.Xpath3ExpectedStructuralFeature
             expectedFeature,
         EEnum enumType,
         String prefix,
         EObject container) {
   Collection<EEnumLiteral> enumLiterals = enumType.getELiterals();
   Collection<org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal> result =
       new LinkedHashSet<
           org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal>();
   for (EEnumLiteral literal : enumLiterals) {
     String unResolvedLiteral = literal.getLiteral();
     // use token resolver to get de-resolved value of the literal
     org.emftext.language.xpath3.resource.xpath3.IXpath3TokenResolverFactory tokenResolverFactory =
         metaInformation.getTokenResolverFactory();
     org.emftext.language.xpath3.resource.xpath3.IXpath3TokenResolver tokenResolver =
         tokenResolverFactory.createTokenResolver(expectedFeature.getTokenName());
     String resolvedLiteral =
         tokenResolver.deResolve(unResolvedLiteral, expectedFeature.getFeature(), container);
     boolean matchesPrefix = matches(resolvedLiteral, prefix);
     result.add(
         new org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal(
             expectedTerminal,
             resolvedLiteral,
             prefix,
             matchesPrefix,
             expectedFeature.getFeature(),
             container));
   }
   return result;
 }
 protected Collection<org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal>
     handleAttribute(
         org.emftext.language.xpath3.resource.xpath3.mopp.Xpath3ExpectedTerminal expectedTerminal,
         org.emftext.language.xpath3.resource.xpath3.mopp.Xpath3ExpectedStructuralFeature
             expectedFeature,
         EObject container,
         EAttribute attribute,
         String prefix) {
   Collection<org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal> resultSet =
       new LinkedHashSet<
           org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal>();
   Object[] defaultValues = attributeValueProvider.getDefaultValues(attribute);
   if (defaultValues != null) {
     for (Object defaultValue : defaultValues) {
       if (defaultValue != null) {
         org.emftext.language.xpath3.resource.xpath3.IXpath3TokenResolverFactory
             tokenResolverFactory = metaInformation.getTokenResolverFactory();
         String tokenName = expectedFeature.getTokenName();
         if (tokenName != null) {
           org.emftext.language.xpath3.resource.xpath3.IXpath3TokenResolver tokenResolver =
               tokenResolverFactory.createTokenResolver(tokenName);
           if (tokenResolver != null) {
             String defaultValueAsString =
                 tokenResolver.deResolve(defaultValue, attribute, container);
             boolean matchesPrefix = matches(defaultValueAsString, prefix);
             resultSet.add(
                 new org.emftext.language.xpath3.resource.xpath3.ui.Xpath3CompletionProposal(
                     expectedTerminal,
                     defaultValueAsString,
                     prefix,
                     matchesPrefix,
                     expectedFeature.getFeature(),
                     container));
           }
         }
       }
     }
   }
   return resultSet;
 }