// at top level), so to avoid breaking things, go find the compilation unit element.
aliasElement.setEnclosingElement(element.getAncestor(CompilationUnitElement.class));
FunctionTypeImpl type = new FunctionTypeImpl(aliasElement);
ClassElement definingClass = element.getAncestor(ClassElement.class);
if (definingClass != null) {
aliasElement.shareTypeParameters(definingClass.getTypeParameters());
type.setTypeArguments(definingClass.getType().getTypeArguments());
} else {
FunctionTypeAliasElement alias = element.getAncestor(FunctionTypeAliasElement.class);
while (alias != null && alias.isSynthetic()) {
alias = alias.getAncestor(FunctionTypeAliasElement.class);