================== generic_pointee ================== program() type File = record fd: Int end proc allocate#[T](size: Word) -> ^T extern var f: ^File begin f := allocate#[File](#size(File)) end. --- (source_file (program_declaration (type_section (type_declaration (identifier_definition (identifier)) (record_type (field_declaration (field_identifier (identifier)) (identifier))))) (procedure_declaration (identifier_definition (identifier) (type_parameters (identifier))) (parameter_list (field_declaration (field_identifier (identifier)) (identifier))) (pointer_type (identifier))) (var_section (variable_declaration (identifier_definition (identifier)) (pointer_type (identifier)))) (assignment_statement (identifier) (call_expression (generic_type (identifier) (type_arguments (identifier))) (argument_list (traits_expression (trait) (identifier)))))))