if ( sink instanceof AlphaNode ) {
final AlphaNode alphaNode = (AlphaNode) sink;
final AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
if ( fieldConstraint instanceof IndexableConstraint) {
final IndexableConstraint indexableConstraint = (IndexableConstraint) fieldConstraint;
if ( indexableConstraint.isIndexable() && indexableConstraint.getField() != null &&
indexableConstraint.getFieldExtractor().getValueType() != ValueType.OBJECT_TYPE &&
// our current implementation does not support hashing of deeply nested properties
!( indexableConstraint.getFieldExtractor() instanceof MVELClassFieldReader )) {
final InternalReadAccessor readAccessor = indexableConstraint.getFieldExtractor();
final int index = readAccessor.getIndex();
final FieldIndex fieldIndex = registerFieldIndex( index,
readAccessor );
if ( fieldIndex.getCount() >= this.alphaNodeHashingThreshold && this.alphaNodeHashingThreshold != 0 ) {
if ( !fieldIndex.isHashed() ) {
hashSinks( fieldIndex );
}
final FieldValue value = indexableConstraint.getField();
// no need to check, we know the sink does not exist
this.hashedSinkMap.put( new HashKey( index,
value,
fieldIndex.getFieldExtractor() ),
alphaNode,