class IndexEntryConflictException extends Exception {

    public String evidenceMessage( TokenNameLookup tokenNameLookup, SchemaDescriptor schema )
    {
        assert schema.getPropertyIds().length == propertyValues.size();

        String labelName = tokenNameLookup.labelGetName( schema.keyId() );
        if ( addedNodeId == NO_SUCH_NODE )
        {
            return format( "Node(%d) already exists with label `%s` and %s",
                    existingNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) );
        }
        else
        {
            return format( "Both Node(%d) and Node(%d) have the label `%s` and %s",
                    existingNodeId, addedNodeId, labelName, propertyString( tokenNameLookup, schema.getPropertyIds() ) );
        }
    }

    public  IndexEntryConflictException( String message, Throwable cause );
    public  IndexEntryConflictException( long existingNodeId, long addedNodeId, Value... propertyValue );
    public  IndexEntryConflictException( long existingNodeId, long addedNodeId, ValueTuple propertyValues );

}