/** * Resolves the type tokens of all bridge methods that are required to be implemented for this entry. * * @return A set of type tokens representing the bridge methods required for implementing this type. */ protected Set<MethodDescription.TypeToken> resolveBridgeTypes() { HashSet<MethodDescription.TypeToken> typeTokens = new HashSet<MethodDescription.TypeToken>(this.typeTokens); typeTokens.remove(methodDescription.asTypeToken()); return typeTokens; }
/** * {@inheritDoc} */ public MethodGraph.Node asNode(Merger merger) { Iterator<MethodDescription> iterator = methodDescriptions.iterator(); MethodDescription methodDescription = iterator.next(); while (iterator.hasNext()) { methodDescription = merger.merge(methodDescription, iterator.next()); } return new Node(key.detach(methodDescription.asTypeToken()), methodDescription, visibility); }
/** * {@inheritDoc} */ public MethodGraph.Node asNode(Merger merger) { return new Node(key.detach(methodDescription.asTypeToken()), methodDescription, visibility, madeVisible); }
/** * Transforms this store into a method graph by applying the given merger. * * @param merger The merger to apply for resolving the representative for ambiguous resolutions. * @return The method graph that represents this key store. */ protected MethodGraph asGraph(Merger merger) { LinkedHashMap<Key<MethodDescription.TypeToken>, Node> entries = new LinkedHashMap<Key<MethodDescription.TypeToken>, Node>(); for (Entry<V> entry : this.entries.values()) { Node node = entry.asNode(merger); entries.put(entry.getKey().detach(node.getRepresentative().asTypeToken()), node); } return new Graph(entries); }
/** * Creates a new harmonized key for the given method description. * * @param methodDescription The method description to represent as a harmonized key. * @param harmonizer The harmonizer to use. * @param <Q> The type of the token yielded by a harmonizer. * @return A harmonized key representing the provided method. */ protected static <Q> Harmonized<Q> of(MethodDescription methodDescription, Harmonizer<Q> harmonizer) { MethodDescription.TypeToken typeToken = methodDescription.asTypeToken(); return new Harmonized<Q>(methodDescription.getInternalName(), methodDescription.getParameters().size(), Collections.singletonMap(harmonizer.harmonize(typeToken), Collections.<MethodDescription.TypeToken>emptySet())); }