Buggy code:
public class TypeStore { private static final Type NODE_TYPE = TypeFactory . getInstance ( ) . nodeType ( ) ; private final TypeFactory factory = TypeFactory . getInstance ( ) ; private final Map < String , Type > fAliases = new HashMap < > ( ) ; private final Map < String , Type > fADTs = new HashMap < > ( ) ; private final Map < Type , Set < Type > > fConstructors = new HashMap < > ( ) ; private final Map < Type , Map < String , Type > > fAnnotations = new HashMap < > ( ) ; private final Map < Type , Map < String , Type > > fkeywordParameters = new HashMap < > ( ) ; private final Set < TypeStore > fImports = new HashSet < > ( ) ; public TypeStore ( TypeStore ... imports ) { } public Collection < Type > getAbstractDataTypes ( ) { } public Collection < Type > getAliases ( ) { } public Map < Type , Map < String , Type > > getAnnotations ( ) { } public Map < Type , Map < String , Type > > getKeywordParameters ( ) { } public Collection < Type > getConstructors ( ) { } public Collection < TypeStore > getImports ( ) { } public void importStore ( TypeStore ... stores ) { } public void unimportStores ( TypeStore ... stores ) { } private void doImport ( TypeStore s ) { } public void extendStore ( TypeStore other ) { } private void checkConstructorOverloading ( TypeStore s ) { } private void checkOverlappingAliases ( TypeStore s ) { } public TypeFactory getFactory ( ) { } public void declareAlias ( Type alias ) throws FactTypeDeclarationException { } public void declareAbstractDataType ( Type adt ) throws FactTypeDeclarationException { } public void declareConstructor ( Type constructor ) throws FactTypeDeclarationException { } private void checkFieldNames ( Set < Type > signature , Type tupleType ) { } private void checkOverloading ( Set < Type > signature , String name , Type tupleType ) throws FactTypeDeclarationException { } public Type lookupAlias ( final String name ) { } public Set < Type > lookupAlternatives ( Type adt ) { } public Set < Type > lookupConstructor ( Type adt , String constructorName ) throws FactTypeUseException { } public Type lookupFirstConstructor ( final String cons , final Type args ) { } private Set < Type > allAbstractDataTypes ( ) { } public Type lookupConstructor ( Type adt , String cons , Type args ) { } public Set < Type > lookupConstructors ( String constructorName ) { } public Type lookupAbstractDataType ( String name ) { } public void declareAnnotation ( Type onType , String key , Type valueType ) { } public void declareKeywordParameter ( Type onType , String key , Type valueType ) { <START_BUG> if ( ( ! ( onType . isConstructor ( ) ) ) && ( onType . isAbstractData ( ) ) ) { <END_BUG> throw new org . eclipse . imp . pdb . facts . exceptions . IllegalKeywordParameterDeclarationException ( onType ) ; } synchronized ( fkeywordParameters ) { Map < String , Type > kwParamsForType = fkeywordParameters . get ( onType ) ; if ( ! ( factory . isIdentifier ( key ) ) ) { throw new IllegalIdentifierException ( key ) ; } if ( kwParamsForType == null ) { kwParamsForType = new HashMap ( ) ; fkeywordParameters . put ( onType , kwParamsForType ) ; } Map < String , Type > declaredEarlier = getKeywordParameters ( onType ) ; if ( ! ( declaredEarlier . containsKey ( key ) ) ) { kwParamsForType . put ( key , valueType ) ; } else if ( ! ( declaredEarlier . get ( key ) . equivalent ( valueType ) ) ) { throw new org . eclipse . imp . pdb . facts . exceptions . RedeclaredKeywordParameterException ( key , declaredEarlier . get ( key ) ) ; } } } public Map < String , Type > getAnnotations ( Type onType ) { } public Map < String , Type > getKeywordParameters ( Type onType ) { } public Type getAnnotationType ( Type onType , String key ) { } public Type getKeywordParameterType ( Type onType , String key ) { } public boolean hasKeywordParameters ( Type onType ) { } public Type getAlias ( String name ) { } }

Fix:
if ( ( ! ( onType . isConstructor ( ) ) ) && ( ! ( onType . isAbstractData ( ) ) ) ) {