Program Cloning: An Evolutionary Approach For Solving Software Engineering Problems