boolean isAnotherPreconditionAvailable = AnnotationUtils.getAnnotationNodeInHierarchyWithMetaAnnotation(type.getSuperClass(), methodNode, ClassHelper.makeWithoutCaching(Precondition.class)).size() > 0;
if (!isAnotherPreconditionAvailable) return;
// if there is another preconditio up the inheritance path, we need a default precondition with FALSE
// e.g. C1 <no precondition> : C2 <item != null> == false || item != null
BooleanExpression preconditionBooleanExpression = new BooleanExpression(ConstantExpression.FALSE);
preconditionBooleanExpression = addCallsToSuperMethodNodeAnnotationClosure(type, methodNode, Precondition.class, preconditionBooleanExpression, false);
// if precondition could not be found in parent class, let's return
if (preconditionBooleanExpression.getExpression() == ConstantExpression.FALSE)
return;
final BlockStatement blockStatement = wrapAssertionBooleanExpression(type, methodNode, preconditionBooleanExpression, "precondition");
addPrecondition(methodNode, blockStatement);