Automating Case-Based Reasoning By Analogy-A Deep Dive