Source:
protected void computeAttributeValues ( java.util.List < org.eclipse.jface.text.contentassist.ICompletionProposal > proposals , int offset , java.lang.String parentTagName , java.lang.String attributeName , org.w3c.dom.Node node , java.lang.String wordPrefix , boolean skipEndTag , int replaceLength ) { if ( attributeName.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.INTERPOLATOR_PROPERTY_NAME ) ) { if ( ! ( wordPrefix.startsWith ( "@android:anim/" ) ) ) { com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData data = mEditor.getTargetData ( ) ; com.android.ide.common.resources.ResourceRepository repository = data.getFrameworkResources ( ) ; java.util.List < java.lang.String > interpolators = new java.util.ArrayList < java.lang.String > ( ) ; java.lang.String base = ( ( ( '@' + ( com.android.SdkConstants.ANDROID_PKG ) ) + ':' ) + ( ResourceType.ANIM.getName ( ) ) ) + '/' ; for ( com.android.ide.common.resources.ResourceItem item : repository.getResourceItemsOfType ( ResourceType.ANIM ) ) { java.lang.String name = item.getName ( ) ; if ( name.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.INTERPOLATOR_NAME_SUFFIX ) ) { interpolators.add ( ( base + ( item.getName ( ) ) ) ) ; } } addMatchingProposals ( proposals , interpolators.toArray ( ) , offset , node , wordPrefix , ( ( char ) ( 0 ) ) , true , false , skipEndTag , replaceLength ) ; } super . computeAttributeValues ( proposals , offset , parentTagName , attributeName , node , wordPrefix , skipEndTag , replaceLength ) ; } else if ( ( parentTagName.equals ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.OBJECT_ANIMATOR ) ) && ( attributeName.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.PROPERTY_NAME ) ) ) { java.lang.String attributePrefix = wordPrefix ; if ( startsWith ( attributePrefix , com.android.SdkConstants.ANDROID_NS_NAME_PREFIX ) ) { attributePrefix = attributePrefix.substring ( com.android.SdkConstants.ANDROID_NS_NAME_PREFIX.length ( ) ) ; } com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData data = mEditor.getTargetData ( ) ; if ( data != null ) { com.android.ide.eclipse.adt.internal.editors.descriptors.IDescriptorProvider descriptorProvider = data.getDescriptorProvider ( AndroidTargetData.DESCRIPTOR_LAYOUT ) ; if ( descriptorProvider != null ) { com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor [ ] rootElementDescriptors = descriptorProvider.getRootElementDescriptors ( ) ; java.util.Map < java.lang.String , com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > matches = new java.util.HashMap < java.lang.String , com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > ( 180 ) ; for ( com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor elementDesc : rootElementDescriptors ) { for ( com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor desc : elementDesc.getAttributes ( ) ) { if ( desc instanceof com.android.ide.eclipse.adt.internal.editors.descriptors.SeparatorAttributeDescriptor ) { continue ; } java.lang.String name = desc.getXmlLocalName ( ) ; if ( startsWith ( name , attributePrefix ) ) { java.util.EnumSet < com.android.ide.common.api.IAttributeInfo.Format > formats = desc.getAttributeInfo ( ) . getFormats ( ) ; if ( ( formats.contains ( Format.INTEGER ) ) || ( formats.contains ( Format.FLOAT ) ) ) { matches.put ( name , desc ) ; } } } } java.util.List < com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > sorted = new java.util.ArrayList < com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > ( matches.size ( ) ) ; sorted.addAll ( matches.values ( ) ) ; java.util.Collections.sort ( sorted ) ; java.util.List < com.android.utils.Pair < java.lang.String , java.lang.String > > pairs = new java.util.ArrayList < com.android.utils.Pair < java.lang.String , java.lang.String > > ( sorted.size ( ) ) ; for ( com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor d : sorted ) { pairs.add ( com.android.utils.Pair.of ( d.getXmlLocalName ( ) , d.getAttributeInfo ( ) . getJavaDoc ( ) ) ) ; } addMatchingProposals ( proposals , pairs.toArray ( ) , offset , node , wordPrefix , ( ( char ) ( 0 ) ) , true , false , skipEndTag , replaceLength ) ; return ; } } } else { super . computeAttributeValues ( proposals , offset , parentTagName , attributeName , node , wordPrefix , skipEndTag , replaceLength ) ; } }

Target:
protected boolean computeAttributeValues ( java.util.List < org.eclipse.jface.text.contentassist.ICompletionProposal > proposals , int offset , java.lang.String parentTagName , java.lang.String attributeName , org.w3c.dom.Node node , java.lang.String wordPrefix , boolean skipEndTag , int replaceLength ) { if ( attributeName.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.INTERPOLATOR_PROPERTY_NAME ) ) { if ( ! ( wordPrefix.startsWith ( "@android:anim/" ) ) ) { com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData data = mEditor.getTargetData ( ) ; com.android.ide.common.resources.ResourceRepository repository = data.getFrameworkResources ( ) ; java.util.List < java.lang.String > interpolators = new java.util.ArrayList < java.lang.String > ( ) ; java.lang.String base = ( ( ( '@' + ( com.android.SdkConstants.ANDROID_PKG ) ) + ':' ) + ( ResourceType.ANIM.getName ( ) ) ) + '/' ; for ( com.android.ide.common.resources.ResourceItem item : repository.getResourceItemsOfType ( ResourceType.ANIM ) ) { java.lang.String name = item.getName ( ) ; if ( name.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.INTERPOLATOR_NAME_SUFFIX ) ) { interpolators.add ( ( base + ( item.getName ( ) ) ) ) ; } } addMatchingProposals ( proposals , interpolators.toArray ( ) , offset , node , wordPrefix , ( ( char ) ( 0 ) ) , true , false , skipEndTag , replaceLength ) ; } return super . computeAttributeValues ( proposals , offset , parentTagName , attributeName , node , wordPrefix , skipEndTag , replaceLength ) ; } else if ( ( parentTagName.equals ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.OBJECT_ANIMATOR ) ) && ( attributeName.endsWith ( com.android.ide.eclipse.adt.internal.editors.animator.AnimationContentAssist.PROPERTY_NAME ) ) ) { java.lang.String attributePrefix = wordPrefix ; if ( startsWith ( attributePrefix , com.android.SdkConstants.ANDROID_NS_NAME_PREFIX ) ) { attributePrefix = attributePrefix.substring ( com.android.SdkConstants.ANDROID_NS_NAME_PREFIX.length ( ) ) ; } com.android.ide.eclipse.adt.internal.sdk.AndroidTargetData data = mEditor.getTargetData ( ) ; if ( data != null ) { com.android.ide.eclipse.adt.internal.editors.descriptors.IDescriptorProvider descriptorProvider = data.getDescriptorProvider ( AndroidTargetData.DESCRIPTOR_LAYOUT ) ; if ( descriptorProvider != null ) { com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor [ ] rootElementDescriptors = descriptorProvider.getRootElementDescriptors ( ) ; java.util.Map < java.lang.String , com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > matches = new java.util.HashMap < java.lang.String , com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > ( 180 ) ; for ( com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor elementDesc : rootElementDescriptors ) { for ( com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor desc : elementDesc.getAttributes ( ) ) { if ( desc instanceof com.android.ide.eclipse.adt.internal.editors.descriptors.SeparatorAttributeDescriptor ) { continue ; } java.lang.String name = desc.getXmlLocalName ( ) ; if ( startsWith ( name , attributePrefix ) ) { java.util.EnumSet < com.android.ide.common.api.IAttributeInfo.Format > formats = desc.getAttributeInfo ( ) . getFormats ( ) ; if ( ( formats.contains ( Format.INTEGER ) ) || ( formats.contains ( Format.FLOAT ) ) ) { matches.put ( name , desc ) ; } } } } java.util.List < com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > sorted = new java.util.ArrayList < com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor > ( matches.size ( ) ) ; sorted.addAll ( matches.values ( ) ) ; java.util.Collections.sort ( sorted ) ; java.util.List < com.android.utils.Pair < java.lang.String , java.lang.String > > pairs = new java.util.ArrayList < com.android.utils.Pair < java.lang.String , java.lang.String > > ( sorted.size ( ) ) ; for ( com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor d : sorted ) { pairs.add ( com.android.utils.Pair.of ( d.getXmlLocalName ( ) , d.getAttributeInfo ( ) . getJavaDoc ( ) ) ) ; } addMatchingProposals ( proposals , pairs.toArray ( ) , offset , node , wordPrefix , ( ( char ) ( 0 ) ) , true , false , skipEndTag , replaceLength ) ; } } return false ; } else { return super . computeAttributeValues ( proposals , offset , parentTagName , attributeName , node , wordPrefix , skipEndTag , replaceLength ) ; } }