Make DetailAST fully immutable

Updated Apr 15, 2018
  

The basic idea of the project is to transform DetailAST class to an interface and make its implementation fully immutable.