private ClassMetaData inspectType(Class<?> type) {
    boolean isConventionAware = type.getAnnotation(NoConventionMapping.class) == null;
    boolean extensible = JavaReflectionUtil.getAnnotation(type, NonExtensible.class) == null;

    ClassMetaData classMetaData = new ClassMetaData(extensible, isConventionAware);
    inspectType(type, classMetaData);
    attachSetMethods(classMetaData);
    findMissingClosureOverloads(classMetaData);
    classMetaData.complete();
    return classMetaData;
  }