Make codevalue as pimpl
Handle SymbolTable with shared_ptr