#NEWLINE# @ jit . unroll_safe #NEWLINE# def initialize_props( self , props , proc_spec , env , cont ) : #NEWLINE# #INDENT# '\n        Properties initialization contains few steps:\n            1. call initialize_prop for each property from the input list,\n               it extracts all super values and stores them into props array\n               with a flat structure\n            2. recursively call attach_prop for each property from props and\n               prepare the value:\n               * if the current property has a subproperty, the value is the result\n                 of calling value procedure with a sub value as an argument\n               * if the current property has a guard, the value is the result of\n                 calling guard with a value and struct type info as arguments\n               * in other case, just keep the current value\n        ' #NEWLINE# proplist = values . from_list ( props ) #NEWLINE# props = [ ] #NEWLINE# for p in proplist : #NEWLINE# #INDENT# self . initialize_prop ( props , p ) #NEWLINE# #UNINDENT# if ( proc_spec is not values . w_false ) : #NEWLINE# #INDENT# self . initialize_prop ( props , values . wrap ( w_prop_procedure , proc_spec ) ) #NEWLINE# #UNINDENT# return self . attach_prop ( props , 0 , False , env , cont )