private boolean mergeTypeDescriptors( AbstractClassTypeDeclarationDescr prev, AbstractClassTypeDeclarationDescr descr) { boolean isDef1 = isDefinition(prev); boolean isDef2 = isDefinition(descr); if (isDef1 && isDef2) { return false; } if (!prev.getSuperTypes().isEmpty() && !descr.getSuperTypes().isEmpty() && prev.getSuperTypes().size() != descr.getSuperTypes().size()) { return false; } if (prev.getSuperTypes().isEmpty()) { for (QualifiedName qn : descr.getSuperTypes()) { ((TypeDeclarationDescr) prev).addSuperType(qn); } } if (prev.getFields().isEmpty()) { for (String fieldName : descr.getFields().keySet()) { prev.addField(descr.getFields().get(fieldName)); } } for (AnnotationDescr ad : descr.getAnnotations()) { prev.addQualifiedAnnotation(ad); } for (AnnotationDescr ad : prev.getAnnotations()) { if (!descr.getAnnotations().contains(ad)) { descr.addQualifiedAnnotation(ad); } } return true; }