class ClassMetadata {

    public boolean hasDefaultConstructor() {
        if (constructors.isEmpty()) {
            return true;
        }
        return constructors.stream()
                .anyMatch(constructor -> {
                    final Set<Modifier> modifiers = constructor.getModifiers();
                    if (!modifiers.contains(Modifier.PUBLIC) || modifiers.contains(Modifier.ABSTRACT)) {
                        return false;
                    }
                    return constructor.getParameters().isEmpty();
                });
    }

      ClassMetadata(@Nonnull TypeElement element);

}