LMNN implementation based on auxiliary methods hidden in an implementation class.