public Set<ResolvedMethod> getMethodsToImplement(final MemberDeclaration delegate) {
final Function1<TypeReference, Iterable<? extends ResolvedMethod>> _function = (TypeReference it) -> {
return it.getDeclaredResolvedMethods();
};
final Function1<ResolvedMethod, Boolean> _function_1 = (ResolvedMethod it) -> {
final Function1<ResolvedParameter, TypeReference> _function_2 = (ResolvedParameter it_1) -> {
return it_1.getResolvedType();
};
MethodDeclaration _findDeclaredMethod = delegate.getDeclaringType().findDeclaredMethod(it.getDeclaration().getSimpleName(), ((TypeReference[])Conversions.unwrapArray(IterableExtensions.map(it.getResolvedParameters(), _function_2), TypeReference.class)));
return Boolean.valueOf((_findDeclaredMethod == null));
};
final Function1<ResolvedMethod, Boolean> _function_2 = (ResolvedMethod it) -> {
boolean _isObjectMethod = this.isObjectMethod(it);
return Boolean.valueOf((!_isObjectMethod));
};
final Function1<ResolvedMethod, String> _function_3 = (ResolvedMethod it) -> {
return it.getSimpleSignature();
};
final Function1<List<ResolvedMethod>, ResolvedMethod> _function_4 = (List<ResolvedMethod> it) -> {
return IterableExtensions.<ResolvedMethod>head(it);
};
return IterableExtensions.<ResolvedMethod>toSet(IterableExtensions.<List<ResolvedMethod>, ResolvedMethod>map(IterableExtensions.<String, ResolvedMethod>groupBy(IterableExtensions.<ResolvedMethod>filter(IterableExtensions.<ResolvedMethod>filter(Iterables.<ResolvedMethod>concat(IterableExtensions.<TypeReference, Iterable<? extends ResolvedMethod>>map(this.getDelegatedInterfaces(delegate), _function)), _function_1), _function_2), _function_3).values(), _function_4));
}