public static MethodDeclaration mergeMethod(MethodDeclaration one, MethodDeclaration two) {
if (isAllNull(one, two)) return null;
MethodDeclaration md = null;
if (isAllNotNull(one, two)) {
md = new MethodDeclaration();
md.setName(one.getName());
md.setType(mergeSelective(one.getType(), two.getType()));
md.setParameters(mergeParameters(one.getParameters(), two.getParameters()));
md.setTypeParameters(findFirstNotNull(one.getTypeParameters(), two.getTypeParameters()));
md.setThrows(mergeListNoDuplicate(one.getThrows(), two.getThrows()));
md.setAnnotations(mergeListNoDuplicate(one.getAnnotations(), two.getAnnotations()));
md.setArrayCount(one.getArrayCount());
md.setModifiers(mergeModifiers(one.getModifiers(), two.getModifiers()));
md.setBody(mergeBlock(one.getBody(), two.getBody()));
md.setJavaDoc(mergeSelective(one.getJavaDoc(), two.getJavaDoc()));
LOG.info("merge MethodDeclaration --> {}", md.getName());
} else {
md = findFirstNotNull(one, two);
LOG.info("add MethodDeclaration --> {}", md.getName());
}
return md;
}