Programming by abstract demonstration.