columnMask() |  | 32% |   | 12% | 84 | 90 | 29 | 65 | 0 | 1 |
alterTableStatement() |   | 81% |   | 60% | 187 | 248 | 18 | 287 | 0 | 1 |
deleteStatement() |   | 58% |   | 34% | 134 | 159 | 15 | 81 | 0 | 1 |
updateStatement() |   | 49% |   | 21% | 88 | 100 | 15 | 86 | 0 | 1 |
describeStatement() |   | 76% |   | 51% | 137 | 163 | 27 | 166 | 0 | 1 |
alterTypeStatement() |   | 62% |   | 46% | 40 | 49 | 24 | 110 | 0 | 1 |
cqlStatement() |  | 87% |   | 60% | 88 | 132 | 0 | 269 | 0 | 1 |
functionResource() |  | 75% |   | 52% | 89 | 100 | 19 | 85 | 0 | 1 |
viewProperty(CreateViewStatement.Raw) | | 49% |   | 36% | 23 | 28 | 30 | 66 | 0 | 1 |
relation(WhereClause.Builder) |  | 86% |   | 51% | 66 | 83 | 16 | 197 | 0 | 1 |
createFunctionStatement() |  | 83% |   | 55% | 93 | 108 | 4 | 102 | 0 | 1 |
jsonInsertStatement(QualifiedName) | | 52% |   | 44% | 18 | 23 | 17 | 54 | 0 | 1 |
indexIdent(List) |  | 71% |   | 48% | 32 | 42 | 21 | 80 | 0 | 1 |
constant() |  | 70% |   | 69% | 24 | 54 | 13 | 68 | 0 | 1 |
selectionFunction() |  | 78% |   | 61% | 28 | 40 | 4 | 79 | 0 | 1 |
selectionMapOrSet() |  | 77% |   | 56% | 82 | 99 | 16 | 59 | 0 | 1 |
native_type() |  | 79% |   | 80% | 24 | 86 | 7 | 97 | 0 | 1 |
tableProperty(CreateTableStatement.Raw) | | 63% |   | 48% | 21 | 28 | 23 | 66 | 0 | 1 |
dataResource() |  | 65% |   | 54% | 21 | 30 | 15 | 63 | 0 | 1 |
jmxResource() | | 47% |   | 34% | 16 | 19 | 15 | 36 | 0 | 1 |
selectStatement() |  | 84% |   | 68% | 32 | 51 | 1 | 125 | 0 | 1 |
columnCondition(List) |  | 87% |   | 59% | 53 | 77 | 10 | 165 | 0 | 1 |
collectionLiteral() |  | 79% |   | 55% | 81 | 95 | 13 | 50 | 0 | 1 |
non_type_ident() | | 55% |   | 42% | 18 | 24 | 11 | 35 | 0 | 1 |
jsonValue() | | 42% |   | 34% | 13 | 16 | 15 | 31 | 0 | 1 |
collection_type() |  | 72% |   | 57% | 21 | 29 | 7 | 53 | 0 | 1 |
inMarker() | | 31% |  | 21% | 10 | 11 | 15 | 26 | 0 | 1 |
markerForTuple() | | 31% |  | 21% | 10 | 11 | 15 | 26 | 0 | 1 |
inMarkerForTuple() | | 31% |  | 21% | 10 | 11 | 15 | 26 | 0 | 1 |
createAggregateStatement() |  | 87% |   | 59% | 78 | 98 | 1 | 95 | 0 | 1 |
identity() | | 33% |  | 16% | 11 | 12 | 14 | 25 | 0 | 1 |
dropAggregateStatement() |  | 83% |   | 51% | 70 | 83 | 4 | 58 | 0 | 1 |
createMaterializedViewStatement() |  | 82% |   | 65% | 21 | 31 | 1 | 78 | 0 | 1 |
fident() | | 48% |   | 42% | 12 | 16 | 14 | 30 | 0 | 1 |
createIndexStatement() |  | 90% |   | 62% | 118 | 158 | 1 | 87 | 0 | 1 |
comparatorType() |  | 76% |   | 68% | 13 | 28 | 8 | 62 | 0 | 1 |
columnMaskArguments(List) |  | 83% |   | 51% | 86 | 94 | 13 | 49 | 0 | 1 |
propertyValue() |  | 77% |   | 48% | 67 | 77 | 7 | 29 | 0 | 1 |
normalColumnOperation(List, ColumnIdentifier) |  | 78% |   | 53% | 21 | 29 | 10 | 63 | 0 | 1 |
idxName(QualifiedName) | | 57% |   | 43% | 15 | 20 | 14 | 33 | 0 | 1 |
intValue() | | 57% |   | 42% | 12 | 16 | 9 | 31 | 0 | 1 |
cident() |  | 77% |   | 72% | 34 | 69 | 10 | 25 | 0 | 1 |
permissionOrAll() |  | 77% |   | 76% | 14 | 33 | 7 | 58 | 0 | 1 |
normalInsertStatement(QualifiedName) |  | 84% |   | 63% | 21 | 30 | 1 | 76 | 0 | 1 |
unreserved_keyword() |  | 83% |   | 91% | 11 | 82 | 10 | 33 | 0 | 1 |
roleName(RoleName) | | 67% |   | 47% | 18 | 25 | 11 | 38 | 0 | 1 |
insertStatement() | | 68% |   | 52% | 11 | 14 | 7 | 37 | 0 | 1 |
createUserStatement() |  | 81% |   | 66% | 17 | 27 | 5 | 54 | 0 | 1 |
allowedFunctionName() | | 70% |   | 68% | 11 | 24 | 7 | 38 | 0 | 1 |
roleOption(RoleOptions, DCPermissions.Builder, CIDRPermissions.Builder) |  | 91% |   | 56% | 52 | 65 | 4 | 88 | 0 | 1 |
createTypeStatement() |  | 87% |   | 54% | 71 | 79 | 4 | 49 | 0 | 1 |
collectionSubSelection(Selectable.Raw) |  | 91% |   | 54% | 151 | 169 | 7 | 51 | 0 | 1 |
selectionLiteral() | | 69% |   | 70% | 8 | 19 | 7 | 38 | 0 | 1 |
alterUserStatement() |  | 81% |   | 67% | 16 | 26 | 5 | 51 | 0 | 1 |
createTriggerStatement() | | 76% |   | 56% | 13 | 16 | 4 | 34 | 0 | 1 |
dropFunctionStatement() |  | 88% |   | 63% | 60 | 83 | 4 | 58 | 0 | 1 |
roleResource() | | 64% |   | 52% | 9 | 12 | 7 | 27 | 0 | 1 |
simpleTerm() |  | 82% |   | 59% | 15 | 21 | 1 | 49 | 0 | 1 |
addIdentityStatement() | | 78% |   | 56% | 14 | 17 | 4 | 35 | 0 | 1 |
noncol_ident() | | 68% |   | 65% | 8 | 16 | 7 | 30 | 0 | 1 |
sident() | | 66% |   | 65% | 8 | 16 | 7 | 30 | 0 | 1 |
batchStatement() |  | 82% |   | 73% | 13 | 26 | 4 | 56 | 0 | 1 |
usertypeLiteral() | | 78% |   | 57% | 12 | 15 | 4 | 43 | 0 | 1 |
selectorModifier(Selectable.Raw) | | 76% |   | 71% | 8 | 17 | 6 | 43 | 0 | 1 |
batchStatementObjective() | | 67% |   | 54% | 9 | 14 | 7 | 37 | 0 | 1 |
username() | | 61% |   | 55% | 7 | 12 | 7 | 25 | 0 | 1 |
value() | | 81% |   | 63% | 14 | 23 | 4 | 45 | 0 | 1 |
deleteOp() | | 79% |   | 53% | 12 | 15 | 4 | 39 | 0 | 1 |
alterMaterializedViewStatement() | | 76% |   | 58% | 10 | 13 | 4 | 32 | 0 | 1 |
unreserved_function_keyword() |  | 86% |   | 92% | 10 | 77 | 7 | 29 | 0 | 1 |
setOrMapLiteral(Term.Raw) | | 65% |   | 57% | 7 | 11 | 7 | 29 | 0 | 1 |
columnOperationDifferentiator(List, ColumnIdentifier) | | 80% |   | 56% | 13 | 20 | 7 | 50 | 0 | 1 |
ksName(QualifiedName) | | 73% |   | 53% | 13 | 20 | 8 | 33 | 0 | 1 |
createRoleStatement() | | 82% |   | 72% | 10 | 19 | 3 | 45 | 0 | 1 |
listPermissionsStatement() | | 81% |   | 68% | 10 | 17 | 4 | 46 | 0 | 1 |
selectionMultiplication() | | 80% |   | 73% | 8 | 18 | 4 | 42 | 0 | 1 |
termMultiplication() | | 80% |   | 66% | 10 | 18 | 4 | 42 | 0 | 1 |
dropTriggerStatement() | | 76% |   | 59% | 9 | 12 | 4 | 30 | 0 | 1 |
selectors() |  | 90% |   | 65% | 61 | 90 | 6 | 39 | 0 | 1 |
fullMapLiteral() |  | 91% |   | 52% | 87 | 92 | 1 | 48 | 0 | 1 |
tablePartitionKey(CreateTableStatement.Raw) |  | 89% |   | 56% | 65 | 77 | 7 | 45 | 0 | 1 |
viewPartitionKey(CreateViewStatement.Raw) |  | 89% |   | 53% | 69 | 77 | 7 | 45 | 0 | 1 |
alterRoleStatement() | | 82% |   | 67% | 11 | 18 | 3 | 40 | 0 | 1 |
createTableStatement() | | 77% |   | 59% | 9 | 12 | 3 | 29 | 0 | 1 |
vector_type() | | 71% |   | 56% | 7 | 9 | 4 | 19 | 0 | 1 |
selectionMap(Selectable.Raw) | | 79% |   | 72% | 6 | 12 | 4 | 36 | 0 | 1 |
mapLiteral(Term.Raw) | | 79% |   | 59% | 9 | 12 | 4 | 36 | 0 | 1 |
tuple_type() | | 77% |   | 72% | 6 | 12 | 4 | 32 | 0 | 1 |
dropMaterializedViewStatement() | | 75% |   | 60% | 8 | 11 | 4 | 25 | 0 | 1 |
usingClauseObjective(Attributes.Raw) | | 72% |   | 52% | 9 | 12 | 7 | 30 | 0 | 1 |
containsOperator() |  | 88% |   | 50% | 76 | 83 | 4 | 18 | 0 | 1 |
tableClusteringOrder(CreateTableStatement.Raw) | | 68% |   | 52% | 8 | 11 | 7 | 26 | 0 | 1 |
viewClusteringOrder(CreateViewStatement.Raw) | | 68% |   | 52% | 8 | 11 | 7 | 26 | 0 | 1 |
basic_unreserved_keyword() |  | 90% |   | 79% | 22 | 56 | 7 | 17 | 0 | 1 |
relationOrExpression(WhereClause.Builder) |  | 87% |   | 75% | 32 | 70 | 7 | 24 | 0 | 1 |
relationType() | | 82% |   | 65% | 14 | 26 | 1 | 37 | 0 | 1 |
createKeyspaceStatement() | | 81% |   | 58% | 10 | 13 | 1 | 31 | 0 | 1 |
cfName(QualifiedName) | | 78% |   | 50% | 14 | 20 | 5 | 33 | 0 | 1 |
userTypeName() | | 75% |   | 66% | 7 | 15 | 9 | 39 | 0 | 1 |
permission() | | 73% |   | 76% | 5 | 14 | 7 | 17 | 0 | 1 |
dropUserStatement() | | 77% |   | 60% | 8 | 11 | 4 | 25 | 0 | 1 |
dropIdentityStatement() | | 76% |   | 60% | 8 | 11 | 4 | 25 | 0 | 1 |
grantPermissionsStatement() | | 76% |   | 50% | 7 | 8 | 3 | 26 | 0 | 1 |
revokePermissionsStatement() | | 76% |   | 50% | 7 | 8 | 3 | 26 | 0 | 1 |
listLiteral() |  | 91% |   | 57% | 74 | 89 | 4 | 37 | 0 | 1 |
selectionList() |  | 91% |   | 58% | 72 | 88 | 4 | 36 | 0 | 1 |
selectionFunctionArgs() |  | 91% |   | 69% | 53 | 87 | 4 | 35 | 0 | 1 |
singleColumnInValues() |  | 91% |   | 56% | 74 | 87 | 4 | 35 | 0 | 1 |
selectionGroupWithoutField() | | 82% |   | 78% | 6 | 17 | 4 | 42 | 0 | 1 |
selectionAddition() | | 79% |   | 78% | 5 | 13 | 4 | 35 | 0 | 1 |
selectionTupleOrNestedSelector() | | 78% |   | 75% | 5 | 11 | 4 | 31 | 0 | 1 |
tupleLiteral() | | 78% |   | 60% | 8 | 11 | 4 | 31 | 0 | 1 |
listRolesStatement() | | 77% |   | 68% | 7 | 12 | 4 | 29 | 0 | 1 |
tupleOfIdentifiers() | | 77% |   | 61% | 7 | 10 | 4 | 30 | 0 | 1 |
tupleOfTupleLiterals() | | 77% |   | 61% | 7 | 10 | 4 | 30 | 0 | 1 |
tupleOfMarkersForTuples() | | 77% |   | 61% | 7 | 10 | 4 | 30 | 0 | 1 |
dropKeyspaceStatement() | | 75% |   | 61% | 7 | 10 | 4 | 24 | 0 | 1 |
dropTableStatement() | | 75% |   | 61% | 7 | 10 | 4 | 24 | 0 | 1 |
dropTypeStatement() | | 75% |   | 61% | 7 | 10 | 4 | 24 | 0 | 1 |
dropIndexStatement() | | 75% |   | 61% | 7 | 10 | 4 | 24 | 0 | 1 |
dropRoleStatement() | | 75% |   | 61% | 7 | 10 | 4 | 24 | 0 | 1 |
shorthandColumnOperation(List, ColumnIdentifier) | | 70% |   | 57% | 5 | 8 | 7 | 22 | 0 | 1 |
convertPropertyMap(Maps.Literal) | | 67% |   | 59% | 7 | 12 | 11 | 22 | 0 | 1 |
function() | | 82% |   | 57% | 9 | 12 | 1 | 30 | 0 | 1 |
alterKeyspaceStatement() | | 82% |   | 59% | 9 | 12 | 1 | 30 | 0 | 1 |
userPassword(RoleOptions) | | 79% |   | 51% | 12 | 15 | 4 | 24 | 0 | 1 |
selectionGroup() | | 77% |   | 66% | 6 | 11 | 4 | 28 | 0 | 1 |
grantRoleStatement() | | 72% |   | 50% | 5 | 6 | 4 | 20 | 0 | 1 |
revokeRoleStatement() | | 72% |   | 50% | 5 | 6 | 4 | 20 | 0 | 1 |
functionName() | | 73% |  | 66% | 4 | 7 | 4 | 22 | 0 | 1 |
resource() | | 82% |   | 57% | 9 | 13 | 3 | 34 | 0 | 1 |
ident() | | 83% |   | 61% | 10 | 16 | 1 | 30 | 0 | 1 |
selectClause() | | 79% |   | 61% | 5 | 8 | 4 | 25 | 0 | 1 |
simpleUnaliasedSelector() | | 79% |  | 75% | 4 | 10 | 4 | 28 | 0 | 1 |
deleteSelection() | | 79% |   | 62% | 6 | 9 | 4 | 28 | 0 | 1 |
functionArgs() | | 78% |  | 71% | 4 | 8 | 4 | 28 | 0 | 1 |
selector() | | 77% |  | 78% | 3 | 8 | 4 | 26 | 0 | 1 |
whereClause() | | 73% |  | 70% | 3 | 6 | 4 | 24 | 0 | 1 |
updateConditions() | | 73% |  | 70% | 3 | 6 | 4 | 24 | 0 | 1 |
truncateStatement() | | 73% |  | 66% | 4 | 7 | 4 | 20 | 0 | 1 |
indexName() | | 71% |  | 62% | 3 | 5 | 4 | 20 | 0 | 1 |
termGroup() |  | 93% |   | 80% | 32 | 85 | 1 | 29 | 0 | 1 |
termAddition() | | 84% |   | 63% | 7 | 11 | 1 | 31 | 0 | 1 |
selectionTypeHint() | | 79% |  | 80% | 2 | 6 | 4 | 20 | 0 | 1 |
selectionSet(Selectable.Raw) | | 78% |  | 83% | 2 | 7 | 4 | 23 | 0 | 1 |
setLiteral(Term.Raw) | | 78% |  | 66% | 4 | 7 | 4 | 23 | 0 | 1 |
fieldSelectorModifier(Selectable.Raw) | | 68% | | 66% | 2 | 4 | 4 | 14 | 0 | 1 |
useStatement() | | 67% | | 50% | 3 | 4 | 4 | 14 | 0 | 1 |
listUsersStatement() | | 62% | | 50% | 3 | 4 | 4 | 10 | 0 | 1 |
canonicalizeObjectName(String, boolean) | | 44% |  | 37% | 4 | 5 | 6 | 11 | 0 | 1 |
tableColumns(CreateTableStatement.Raw) |  | 96% |   | 79% | 37 | 90 | 0 | 76 | 0 | 1 |
customIndexExpression(WhereClause.Builder) | | 82% |   | 50% | 6 | 7 | 4 | 20 | 0 | 1 |
usingClause(Attributes.Raw) | | 81% |  | 66% | 4 | 7 | 4 | 23 | 0 | 1 |
selectionGroupWithField() | | 76% |  | 83% | 1 | 4 | 4 | 18 | 0 | 1 |
isStaticColumn() | | 72% |  | 70% | 3 | 6 | 4 | 16 | 0 | 1 |
keyspaceName() | | 66% | | 75% | 1 | 3 | 4 | 13 | 0 | 1 |
userOrRoleName() | | 65% | | 50% | 2 | 3 | 4 | 13 | 0 | 1 |
unaliasedSelector() | | 63% | | 75% | 1 | 3 | 4 | 13 | 0 | 1 |
term() | | 63% | | 75% | 1 | 3 | 4 | 13 | 0 | 1 |
mbean() | | 63% | | 50% | 1 | 2 | 4 | 10 | 0 | 1 |
orderByClause(Map) | | 83% |   | 70% | 5 | 10 | 4 | 23 | 0 | 1 |
roleOptions(RoleOptions, DCPermissions.Builder, CIDRPermissions.Builder) | | 80% |  | 70% | 3 | 6 | 4 | 22 | 0 | 1 |
properties(PropertyDefinitions) | | 79% |  | 70% | 3 | 6 | 4 | 22 | 0 | 1 |
usingClauseDelete(Attributes.Raw) | | 75% | | 50% | 4 | 5 | 4 | 14 | 0 | 1 |
columnFamilyName() | | 83% |  | 62% | 3 | 5 | 1 | 20 | 0 | 1 |
typeColumns(CreateTypeStatement.Raw) | | 76% | | 50% | 3 | 4 | 4 | 17 | 0 | 1 |
collectionColumnOperation(List, ColumnIdentifier, Term.Raw) | | 75% | | 50% | 3 | 4 | 4 | 14 | 0 | 1 |
udtColumnOperation(List, ColumnIdentifier, FieldIdentifier) | | 75% | | 50% | 3 | 4 | 4 | 14 | 0 | 1 |
columnOperation(List) | | 72% | | 50% | 2 | 3 | 4 | 15 | 0 | 1 |
dcPermission(DCPermissions.Builder) | | 64% | | 50% | 3 | 4 | 4 | 9 | 0 | 1 |
cidrPermission(CIDRPermissions.Builder) | | 64% | | 50% | 3 | 4 | 4 | 9 | 0 | 1 |
property(PropertyDefinitions) | | 91% |   | 52% | 9 | 11 | 1 | 32 | 0 | 1 |
groupByClause(List) | | 67% | | 50% | 2 | 3 | 4 | 12 | 0 | 1 |
viewPrimaryKey(CreateViewStatement.Raw) | | 92% |   | 60% | 8 | 11 | 1 | 28 | 0 | 1 |
tableDefinition(CreateTableStatement.Raw) |  | 97% |   | 77% | 34 | 78 | 0 | 52 | 0 | 1 |
Cql_Parser(TokenStream, CqlParser) | | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
synpred10_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred1_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred5_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred6_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred7_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred8_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred9_Parser() | | 86% | | 50% | 1 | 2 | 2 | 11 | 0 | 1 |
synpred2_Parser() | | 88% | | 100% | 0 | 2 | 2 | 11 | 0 | 1 |
synpred3_Parser() | | 88% | | 100% | 0 | 2 | 2 | 11 | 0 | 1 |
synpred4_Parser() | | 88% | | 100% | 0 | 2 | 2 | 11 | 0 | 1 |
getDelegates() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
synpred1_Parser_fragment() | | 93% | | 50% | 2 | 3 | 0 | 6 | 0 | 1 |
filterPermissions(Set, IResource) | | 92% | | 75% | 1 | 3 | 1 | 7 | 0 | 1 |
getGrammarFileName() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
synpred2_Parser_fragment() | | 96% | | 75% | 1 | 3 | 0 | 6 | 0 | 1 |
synpred5_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
synpred6_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
synpred7_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
synpred8_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
synpred9_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
synpred10_Parser_fragment() | | 92% | | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
static {...} |  | 100% |  | 100% | 0 | 26 | 0 | 1,553 | 0 | 1 |
Cql_Parser(TokenStream, RecognizerSharedState, CqlParser) | | 100% | | n/a | 0 | 1 | 0 | 31 | 0 | 1 |
addRawUpdate(List, ColumnIdentifier, Operation.RawUpdate) | | 100% |  | 100% | 0 | 4 | 0 | 6 | 0 | 1 |
displayRecognitionError(String[], RecognitionException) | | 100% | | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
addRecognitionError(String) | | 100% | | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
synpred3_Parser_fragment() | | 100% | | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
synpred4_Parser_fragment() | | 100% | | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
newBindVariables(ColumnIdentifier) | | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
newINBindVariables(ColumnIdentifier) | | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
newTupleBindVariables(ColumnIdentifier) | | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
newTupleINBindVariables(ColumnIdentifier) | | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
newJsonBindVariables(ColumnIdentifier) | | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
addErrorListener(ErrorListener) | | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
removeErrorListener(ErrorListener) | | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
recoverFromMismatchedToken(IntStream, int, BitSet) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
getTokenNames() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
recover(IntStream, RecognitionException) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |