protected boolean checkImplementedTypes ( XtendTypeDeclaration element , EReference feature , List < ? extends JvmTypeReference > implementedTypes , Class < ? > expectedType , int mandatoryNumberOfTypes , boolean onlySubTypes ) { boolean success = true ; int nb = 0 ; int index = 0 ; for ( final JvmTypeReference superType : implementedTypes ) { final LightweightTypeReference ref = toLightweightTypeReference ( superType ) ; if ( ref != null && ( ! ref . isInterfaceType ( ) || ! ref . isSubtypeOf ( expectedType ) || ( onlySubTypes && ref . isType ( expectedType ) ) ) ) { final String msg ; if ( onlySubTypes ) { msg = Messages . SARLValidator_72 ; } else { msg = Messages . SARLValidator_73 ; } error ( MessageFormat . format ( msg , superType . getQualifiedName ( ) , expectedType . getName ( ) , element . getName ( ) ) , element , feature , index , INVALID_IMPLEMENTED_TYPE , superType . getSimpleName ( ) ) ; success = false ; } else { ++ nb ; } ++ index ; } if ( nb < mandatoryNumberOfTypes ) { error ( MessageFormat . format ( Messages . SARLValidator_74 , expectedType . getName ( ) , element . getName ( ) ) , element , feature , ValidationMessageAcceptor . INSIGNIFICANT_INDEX , MISSING_TYPE ) ; success = false ; } return success ; }
Check the implemeted type .